From alvest at brakiri.com Wed Jun 1 06:07:37 2016 From: alvest at brakiri.com (Albert Vest) Date: Wed, 1 Jun 2016 06:07:37 -0400 Subject: [CentralOH] Fwd: Python job, Santa Clara, CA In-Reply-To: <00f701d1bb5c$0614d930$123e8b90$@idctechnologies.com> References: <00f701d1bb5c$0614d930$123e8b90$@idctechnologies.com> Message-ID: <2b9407eb-d6df-8812-d93f-414b5eec26cd@brakiri.com> This was in my email. Sharing because, while I'm not looking to relocate to CA, someone else on the list might be. Albert. -------- Forwarded Message -------- Subject: Python Developer (Linux/Python/security)-Santa Clara, CA Date: Tue, 31 May 2016 12:46:23 -0400 From: Alekhya K To: Alekhya K *Hi,* We have an urgent requirement for *?**Python Developer (Linux/Python/security)**?* this is a *contract *project based in *?**Santa Clara, CA**? *location.** *Role: Python Developer (Linux/Python/security)* *Location: Santa Clara, CA* *Experience: 7+Yrs* 1. Strong experience in developing applications using Python. 2. Knowledge of Django framework is good to have. 3. Some C language is highly preferred. Description: cid:image001.gif at 01D1B506.14081400 ** *Alekhya Karri* IDC Technologies, inc 1851 McCarthy Blvd Milpitas, CA 95035 Work: 408-963-0106 Email: alekhya at idctechnologies.com Website:www.idctechnologies.com ___________________________ *Empowering Technologies Services* Remote Services| IT Services |BPO| IT Consulting|Staffing Solutions| _____________________________ -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: image/gif Size: 4788 bytes Desc: not available URL: From james at atlantixeng.com Thu Jun 2 12:01:18 2016 From: james at atlantixeng.com (James Bonanno) Date: Thu, 2 Jun 2016 12:01:18 -0400 Subject: [CentralOH] Nikola Static Site Message-ID: <5750584E.8020809@atlantixeng.com> I am wondering if anyone has built and deployed a site with Nikola static site generator. If so, wondering what your ratings of Nikola would be. I've created a site by haven't deployed it yet, and still looking at ways to make it more of a hybrid of a regulator website and blog. Thanks, James From jep200404 at columbus.rr.com Thu Jun 2 20:01:37 2016 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Thu, 2 Jun 2016 20:01:37 -0400 Subject: [CentralOH] =?utf-8?q?2016-05-23_=E6=9C=83=E8=AD=B0_Scribbles_?= =?utf-8?b?76SY5pu4L+aDoeaWhz86IGNvdW50aW5nIHdvcmRzLCBmb28gaW4gc2V0LCBm?= =?utf-8?q?oo_in_list=2C_generators_galore=2C_re=2Esplit=28=29=2C_re=2Efin?= =?utf-8?q?dall=28=29=2C_aws_lambda=2C_requests=2C_islice=2C_salatin=2C_as?= =?utf-8?q?yncio_uv?= Message-ID: <20160602200137.1963de61.jep200404@columbus.rr.com> Thanks again to Pillar and Chris Baker for hosting us at Pillar's Forge. There's a heck of a lot more Python code in this month's scribbles than usual. There is much to learn from. # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # PyOhio 2016 T-Shirts are cool. Buy one. Eric and Jan modeled for pictures. Please submit talk proposals for PyOhio beginning speakers are very welcome and encouraged to submit a talk 1/4 to 1/3 of talks are reserved for people who have never talked at a conference before Deadline has been extended to June 3 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # March Temperature Prediction Challenge https://github.com/cohpy/challenge-201603-temps/blob/master/predictions.txt Andrew Kubera won temperature guessing challenge. Won hat. What happened to the other prizes, such as the HP cooler and HP hoodie? The Daily Growler https://www.thedailygrowler.com/ challenge-201603-temps/answer5/cohpy_weather_sommerville.py Python3 versus Python2 Has code to complain and quit if it is not run by python2, but that code has syntax error when run by python3. Eric Floehr showed how to easily convert python2 code to python3 code with 2to3 program. 2to3 is part of python3 converts most of python2 code to python3 code individual files, or whole directories 2to3 -w -n ;# convert without backups: this is dangerous. Cute name: 'Nulluary' How about using None instead? indents by two all challenge submitters (not just this challenge) got python stickers # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # found a 12' HDMI cable this time. (about half as long as last month) First time to cohpy monthly meeting: Scott John Compare eoo.py, foo.py, and goo.py below. What do you like? Why? cohpy at forge:~/20160523$ cat eoo.py #!/usr/bin/env python2 import sys if sys.version_info.major == 2: pass else: sys.stderr.write( 'You are using Python version %s. This script only works with 2\n' % sys.version_info.major) sys.exit(1) cohpy at forge:~/20160523$ python2 eoo.py cohpy at forge:~/20160523$ python3 eoo.py You are using Python version 3. This script only works with 2 cohpy at forge:~/20160523$ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # cohpy at forge:~/20160523$ cat foo.py #!/usr/bin/env python2 import sys if sys.version_info.major != 2: sys.stdout = sys.stderr print ( 'You are using Python version %s. This script only works with 2' % sys.version_info.major) sys.exit(1) cohpy at forge:~/20160523$ python2 foo.py cohpy at forge:~/20160523$ python3 foo.py You are using Python version 3. This script only works with 2 cohpy at forge:~/20160523$ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # cohpy at forge:~/20160523$ cat goo.py #!/usr/bin/env python2 import sys assert sys.version_info.major == 2, ( 'You are using Python version %s. This script only works with 2.' % sys.version_info.major) cohpy at forge:~/20160523$ python2 goo.py cohpy at forge:~/20160523$ python3 goo.py Traceback (most recent call last): File "goo.py", line 7, in sys.version_info.major) AssertionError: You are using Python version 3. This script only works with 2. cohpy at forge:~/20160523$ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Aschinger Blvd is near Brazenhead # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # word counting challenge seven entries code is available at https://github.com/cohpy/challenge-201604-words http://www.gutenberg.org/cache/epub/84/pg84.txt Will lock you out after only a few requests. eric's uses virtualenvwrapper mkvirtualenv challenge-201604 -p /usr/bin/python3 import textwrap os.get_terminal_size() more portable than os.environ['COLUMNS'] stty did not define word pytest @pytest.mark.parametrize is fantastic 75071 words the 4195 and 2977 i 2850 of 2641 to 2094 my 1776 a 1391 in 1128 was 1021 that 1017 joe friedrich's range(0, n) -> range(n) Is word a valid one-letter word? Compare the following: word == 'A' or word == 'a' or word == 'I' # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # tuples (and lists) are OK VALID_ONE_LETTER_WORDS = ('A', 'a', 'I') word in VALID_ONE_LETTER_WORDS # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Sets are fast, even when the set is large. VALID_ONE_LETTER_WORDS = set(('A', 'a', 'I')) word in VALID_ONE_LETTER_WORDS counting: compare the following: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # new_dictionary = {} for word in ...: if word in new_dictionary: new_dictionary[word] += 1 else: new_dictionary[word] = 1 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # new_dictionary = {} for word in ...: if word not in new_dictionary: new_dictionary[word] = 0 new_dictionary[word] += 1 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # new_dictionary = {} for word in ...: new_dictionary[word] = new_dictionary.get(word, 0) + 1 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # from collections import defaultdict new_dictionary = defaultdict(int) for word in ...: new_dictionary[word] += 1 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # from collections import Counter word_counts = Counter( word for word in from_words_list if len(word) > 1 or word in VALID_ONE_LETTER_WORDS) word_counts.most_common(n) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # refactor the above to: from collections import Counter def is_valid_word(word): return len(word) > 1 or word in VALID_ONE_LETTER_WORDS word_counts = Counter( word for word in from_words_list if is_valid_word(word)) word_counts.most_common(n) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # How would you use pandas? Dante's Inferno had different headers. Python's libraries are fabulous. You'll get a feel for: You know, I'll bet somebody else has already done this and has some slick library that does what I want. It is amazing what you will find on PyPI. Search PyPI at https://pypi.python.org/pypi. cw andrews' class oriented programming (not object oriented programming) What's the benefit of class oriented programming over object oriented programming? pretty plots! loads unix dictionary :-)!!! into a list :-(!!! (not a set) checking to see if each word was in the unix dictionary was slow (90 seconds) Is that because the unix dictionary was stored in a list instead of a set? Study: https://nbviewer.jupyter.org/github/james-prior/cohpy/blob/master/20160523/cohpy-20160523-speed-of-searching-sets-and-lists.ipynb https://github.com/james-prior/cohpy/blob/master/20160523/cohpy-20160523-speed-of-searching-sets-and-lists.ipynb not_str_gens??? re.split() re.findall() Study Brian's nested generators: https://nbviewer.jupyter.org/github/cohpy/challenge-201604-words/blob/master/bcostlow/Challenge.ipynb https://github.com/cohpy/challenge-201604-words/blob/master/bcostlow/Challenge.ipynb eric miller (ezeeetm?) used aws lambda java javascript python (2.7 only) virtualenv with almost everything installed boto (critter in the amazon river) much better support for 2.7 than 3 can trick aws lambda into running R by wrapping it from python. no __name__ == '__main__' use function instead no command line arguments pass json blob stdout goes to cloud watch logs they tricked lambda into running R (wrapped in python) URLs for a mirror that doesn't balk when asked too many times is mighty handy. Thanks Eric! http://www.gutenberg.lib.md.us/8/84/84.zip http://www.gutenberg.lib.md.us/8/84/84.txt Does UrlFactory work for ids in the teens? http://www.gutenberg.org/wiki/Gutenberg:Information_About_Robot_Access_to_our_Pages http://www.gutenberg.org/robot/harvest?filetypes%5B%5D=txt requests library is awesome the guy who created it is awesome, has created other libraries Kenneth Reitz s3 bucket mongodb 16 hours to crunch all Gutenberg texts 100 lanes wide brian costlow used generator to skip over gutenberg header Combined simple nested generators with Counter from collections. prettiest code that I saw (there may be prettier code that I did not look at) need to study push_counter() jan milosh Wow!: Combines words that were split across lines. Should be easy to convert to use generators instead of lists. Pythonic tests! may challenge is about generators https://github.com/cohpy/challenge-201605-generators/blob/master/README.md two dimensional walk nested generators sound generator pull request directory with github user name. Study: Nested generators https://mail.python.org/pipermail/centraloh/2013-June/001718.html very simple examples of "yield from" https://mail.python.org/pipermail/centraloh/2016-May/002816.html replace list(x[0] for x in zip(foo(), range(10))) with from itertools import islice list(islice(foo(), 10)) brian costlow generators http://nbviewer.jupyter.org/github/cohpy/challenge-201604-words/blob/master/bcostlow/COhPy Generator Talk.ipynb https://github.com/cohpy/challenge-201604-words/blob/master/bcostlow/COhPy Generator Talk.ipynb return value is StopIteration error value. asyncio http://dabeaz.com/generators/ Highly recommended presentations about generators: Generator Tricks for Systems Programmers http://www.dabeaz.com/generators-uk/ A Curious Course on Coroutines and Concurrency http://www.dabeaz.com/coroutines/ Generators: The Final Frontier http://www.dabeaz.com/finalgenerator/ check out https://docs.python.org/2/library/collections.html#collections-abstract-base-classes six https://pypi.python.org/pypi/six light bulbs should be going off for asyncio Avoid reinventing the wheel. Check out itertools and collections. Although you should be duck typing as much as possible in Python, build from abstract base classes from collections. docs.python.org/2/library/collections.html#collections-abstract-base-classes https://docs.python.org/3/library/collections.html github.com/bcostlow new challenge, submit: polish stuff I've already done break out of nested loops by using a generator (Raymond Hettinger) http://nbviewer.jupyter.org/url/colug.net/python/dojo/20160429/dojo-20160429-2016-Mar-COhPy_Challenge_Rough-20160513-1144.ipynb pretty: cell #52 nasty: last code cell clean up old nested even fib from 2013 for python3, (find project euler notebooks) find the euler where I tweaked for speed s/gen/iterable/ https://mail.python.org/pipermail/centraloh/2013-June/001718.html yield from https://mail.python.org/pipermail/centraloh/2016-May/002816.html pass pylint # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # What is a cleaner way of limiting an iterable to the first n items than list(x[0] for x in zip(foo(), range(10)))? https://mail.python.org/pipermail/centraloh/2016-May/002816.html islice from itertools! islice(foo(), n) foo in sets versus lists Searching for stuff in sets is smoking fast compared to searching lists. http://nbviewer.jupyter.org/github/james-prior/cohpy/blob/master/20160523/cohpy-20160523-speed-of-searching-sets-and-lists.ipynb https://github.com/james-prior/cohpy/blob/master/20160523/cohpy-20160523-speed-of-searching-sets-and-lists.ipynb # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Adjourned to Brazenhead on Fifth Ave http://www.hdrestaurants.com/brazenhead/5thavenue/ https://en.wikipedia.org/wiki/Memorial_Day_(2012_film) wp:Polymino wp:Polyface Farm wp:Joel Salatin wp: prefix means Wikipedia To get good answers, consider following the advice in the links below. http://catb.org/~esr/faqs/smart-questions.html http://web.archive.org/web/20090627155454/www.greenend.org.uk/rjk/2000/06/14/quoting.html asyncio uv https://news.ycombinator.com/threads?id=akubera From jep200404 at columbus.rr.com Sat Jun 4 16:01:38 2016 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Sat, 4 Jun 2016 16:01:38 -0400 Subject: [CentralOH] =?utf-8?q?2016-06-03_=E9=81=93=E5=A0=B4_Scribbles_?= =?utf-8?b?76SY5pu4L+aDoeaWhz8gYWxpY2UgZmFibGFiIHJvYm90aWNzIGNhbXBzIHBh?= =?utf-8?q?ttycake=3B_is_it_safe=3F=3B_lbyl_eafp_fat_iter_sentinel_tabs_sp?= =?utf-8?q?anning_tree_lru=5Fcache_memoization_closures_decorators_navel_s?= =?utf-8?q?quinting_functools_ifonly_ipython_magics_alembic_awesomecation_?= =?utf-8?q?learning_linguists_peppermint?= Message-ID: <20160604160138.6098f58f.jep200404@columbus.rr.com> Alice looks interesting. I have no idea how good it is. It makes me think. wp:Alice (software) wp: prefix means Wikipedia To get good answers, consider following the advice in the links below. http://catb.org/~esr/faqs/smart-questions.html http://web.archive.org/web/20090627155454/www.greenend.org.uk/rjk/2000/06/14/quoting.html Linux vs. Windows device driver model: architecture, APIs and build environment comparison http://hackerboards.com/open-source-microbit-sbc-now-available-for-pre-order/ Battelle fab lab here is cowtown https://www.fablabs.io/reynoldsburgbattellefablab Microsoft reminds us that it is still engaging in patent extortion by signing yet another patent settlement deal which requires surrendering to Microsoft http://techrights.org/2016/06/01/microsoft-oem-shakedown-xiaomi/ wp:FIRST Robotics Competition North American Cities Slow to Adopt Open Source Software http://lxer.com/module/newswire/view/230161/ Tech Core or Tech Corps http://twenty.techcorps.org/ Secure Desktops with Qubes: Introduction http://www.linuxjournal.com/content/secure-desktops-qubes-introduction wp:Jamaican patty wp:Pasty wp:Salte?as wp:Ackee seeds are poisonous wp:Ackee and saltfish wp:plaintain wp:Coco bread Ena's Caribbean Kitchen is authentic http://www.enascaribbean.com/ What containers and unikernels can learn from Arduino and Raspberry Pi https://opensource.com/business/16/5/containers-unikernels-learn-arduino-raspberry-pi An intro to Linux commands, the EU's open source mathematics toolbox, and more news https://opensource.com/life/16/5/weekly-news-may-28 http://www.techradar.com/how-to/computing/everything-you-need-to-know-about-linux-commands-1321955 Google's Abacus Project: It's All about Trust http://www.linuxjournal.com/content/googles-abacus-project-its-all-about-trust Compare with a line from wp:Marathon Man (film). Ubuntu Touch's Web Browser to Improve the Google Hangouts Experience in OTA-11 http://news.softpedia.com/news/ubuntu-touch-s-web-browser-to-improve-the-google-hangouts-experience-in-ota-11-504658.shtml Samsung: Don't install Windows 10. REALLY http://www.theregister.co.uk/2016/05/31/windows_10_samsung_fail/ Please don't use Slack for FOSS projects https://drewdevault.com/2015/11/01/Please-stop-using-slack.html Check out "Music to Work to" channel. LBYL vs EAFP What's the connection between an 11.8 inch length of Bell System 25 wire and the "The Fast and the Furious" film? fat ?pos crassus livid lipids https://mobile.twitter.com/raymondh wp:Programming Pearls 'Quito, Ecuador' iter( , sentinel) study functools.partial why does it work with something that is not an iterable? What's the connection between the 1985 movie Brazil and Python? A rose by another name? wp:K?ln wp:Cologne # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Mixing tabs and spaces for indentation in Python causes no end of grief. For example, look at https://github.com/cohpy/challenge-201604-words/blob/57706ccaf571491f701600bc93b8d9dd4ae760ac/ezeeetm/lambda_function.py. Most of function UrlFactory() is indented with spaces, which is good. But line 24 is indented with a tab character. On the web page above, that tab is expanded as 8 characters, making it appear to be part of the except clause. If so, it would never be executed since it is after the raise statement. Is that what the author intended? Or did the author want to print the url just before successfully returning? Moral of the story: Never ever mix tabs and spaces for indentation in Python. Better yet, don't use tab characters at all in Python source code. Just use spaces. If you need a tab character in a string, encode it as \t. network switch can hold 130k MAC addresses but performance goes down above 80k entries recursion spanning tree protocol Radia Perlman Her network was brought down by folks who connected switches in a circle with STP disabled. discovered nifty decorators in functools especially lru_cache default 128 entries cache memoization which leads back to an old presentation that had a gentle and practical introduction to closures and function decorators in Python. had an epiphany about closures and decorators when shown http://colug.net/python/cohpy/20150223/ Their head is hurting. decorator mess with introspection which leads back to another great presentation of Brandon's here in cowtown a few years ago: watching one's navel PyOhio 2011: Squinting at Python Objects http://pyvideo.org/video/524/pyohio-2011-squinting-at-python-objects https://pymotw.com/3/functools/ https://docs.python.org/3/library/functools.html What's the etymology of grep? new python keyword: ifonly blue lights when raining ifthisthenthat the piano has been drinking %timeit %load ipython magics http://ipython.org/ipython-doc/3/interactive/magics.html http://watersheddistillery.com/ wp:Alembic sqlalchemy compare with south and djangoORM wp:Ada Lovelace wp:Charles Babbage wp:Analytical Engine wp:Grace Hopper wp:Turing completeness Microsoft Azure Invent Your Own Computer Games with Python http://inventwithpython.com/chapters/ functools wraps obfuscation awesomecation How to search for a regular expression in about 50000 files? Tom waits for no one. unstructured learning Montessori school of fish structured learning hybrid? unstructured learning for most structured learning to fill in the gaps How many linguists does it take to solve Peppermint? individually? together with much talking? http://mysd300.blogspot.com/2013/07/rundown-of-puzzles-for-ipp33.html What's the connection between Shapeways and Python? From eric at intellovations.com Sat Jun 4 20:34:04 2016 From: eric at intellovations.com (Eric Floehr) Date: Sat, 4 Jun 2016 20:34:04 -0400 Subject: [CentralOH] Comedic texts in Python Message-ID: What happens when you get a comedy writer for The Onion and ClickHole to program something in Python? You get a hand-selected (rather than random) Markov chain generator and hilarious resulting texts, including a play: http://www.dailydot.com/lol/jamie-brew-predictive-text-clickhole-coding-comedy/ Excerpt: "Brew may have been newish to coding?he told me he took one course in college, and learned Python specifically for this project?but his predictive text emulator was real. He posted the source code, along with a detailed explanation of how it works, on GitHub." Code is here: https://github.com/jbrew/pt-voicebox -------------- next part -------------- An HTML attachment was scrubbed... URL: From miller.eric.t at gmail.com Sat Jun 11 20:35:27 2016 From: miller.eric.t at gmail.com (Eric Miller) Date: Sat, 11 Jun 2016 20:35:27 -0400 Subject: [CentralOH] plot.ly Message-ID: anybody use this with python, or have recommendations for other simple but beautiful data visualization that is .py friendly? tx -------------- next part -------------- An HTML attachment was scrubbed... URL: From andrewkubera at gmail.com Sat Jun 11 21:20:39 2016 From: andrewkubera at gmail.com (Andrew Kubera) Date: Sat, 11 Jun 2016 21:20:39 -0400 Subject: [CentralOH] plot.ly In-Reply-To: References: Message-ID: <2E372495-8755-4928-8F83-698E4754ED8B@gmail.com> Plot.ly looks cool, but I think you need an API key to use. This was a no-go for what I want in an open, data sharing environment. I was pretty happy with Bokeh ; it didn't have quite everything I needed for my physics analysis, but the integration into iPython notebooks is pretty great. -Andrew > On Jun 11, 2016, at 8:35 PM, Eric Miller wrote: > > anybody use this with python, or have recommendations for other simple but beautiful data visualization that is .py friendly? > > tx > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh -------------- next part -------------- An HTML attachment was scrubbed... URL: From miller.eric.t at gmail.com Sat Jun 11 21:57:17 2016 From: miller.eric.t at gmail.com (Eric Miller) Date: Sat, 11 Jun 2016 21:57:17 -0400 Subject: [CentralOH] plot.ly In-Reply-To: <2E372495-8755-4928-8F83-698E4754ED8B@gmail.com> References: <2E372495-8755-4928-8F83-698E4754ED8B@gmail.com> Message-ID: i agree. they both look super similar, but after playing around with plot.ly for an hour or so, I'd rather skip the api/web bit and just plot locally. Going to try bokeh On Sat, Jun 11, 2016 at 9:20 PM, Andrew Kubera wrote: > Plot.ly looks cool, but I think you need an API key to > use. This was a no-go for what I want in an open, data sharing environment. > I was pretty happy with Bokeh ; it > didn't have *quite* everything I needed for my physics analysis, but the > integration into iPython notebooks is pretty great. > > -Andrew > > > > On Jun 11, 2016, at 8:35 PM, Eric Miller wrote: > > anybody use this with python, or have recommendations for other simple but > beautiful data visualization that is .py friendly? > > tx > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh > > > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From miller.eric.t at gmail.com Sun Jun 12 09:57:41 2016 From: miller.eric.t at gmail.com (Eric Miller) Date: Sun, 12 Jun 2016 09:57:41 -0400 Subject: [CentralOH] pyohio.org crew Message-ID: If anybody on the pyohio.org team has a moment to look at the most recent reviewer feedback comment for proposal #342, that would be greatly appreciated. I have all day free today to make the edits that Randy is requesting, and will do so if I can get that proposal back in an editable state. Thanks! -------------- next part -------------- An HTML attachment was scrubbed... URL: From miller.eric.t at gmail.com Sun Jun 12 09:53:29 2016 From: miller.eric.t at gmail.com (Eric Miller) Date: Sun, 12 Jun 2016 09:53:29 -0400 Subject: [CentralOH] plot.ly In-Reply-To: References: <2E372495-8755-4928-8F83-698E4754ED8B@gmail.com> Message-ID: going with bokeh. Thanks Andrew. On Sat, Jun 11, 2016 at 9:57 PM, Eric Miller wrote: > i agree. they both look super similar, but after playing around with > plot.ly for an hour or so, I'd rather skip the api/web bit and just plot > locally. > > Going to try bokeh > > On Sat, Jun 11, 2016 at 9:20 PM, Andrew Kubera > wrote: > >> Plot.ly looks cool, but I think you need an API key to >> use. This was a no-go for what I want in an open, data sharing environment. >> I was pretty happy with Bokeh ; it >> didn't have *quite* everything I needed for my physics analysis, but the >> integration into iPython notebooks is pretty great. >> >> -Andrew >> >> >> >> On Jun 11, 2016, at 8:35 PM, Eric Miller wrote: >> >> anybody use this with python, or have recommendations for other simple >> but beautiful data visualization that is .py friendly? >> >> tx >> _______________________________________________ >> CentralOH mailing list >> CentralOH at python.org >> https://mail.python.org/mailman/listinfo/centraloh >> >> >> >> _______________________________________________ >> CentralOH mailing list >> CentralOH at python.org >> https://mail.python.org/mailman/listinfo/centraloh >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From godber at gmail.com Sun Jun 12 10:49:12 2016 From: godber at gmail.com (Austin Godber) Date: Sun, 12 Jun 2016 07:49:12 -0700 Subject: [CentralOH] plot.ly In-Reply-To: <2E372495-8755-4928-8F83-698E4754ED8B@gmail.com> References: <2E372495-8755-4928-8F83-698E4754ED8B@gmail.com> Message-ID: Plotly actually released a fully stand alone open source version that does not rely on their services: https://plot.ly/javascript/open-source-announcement/ See these docs for examples of stand alone use: https://plot.ly/javascript/open-source-announcement/ Maybe it's still not what Eric wants, but I thought someone might at least be compelled to try it. It looks great ... but because it started out closed and they're still pretty mum about its open source nature I never bothered to look at it. - Austin On Sat, Jun 11, 2016 at 6:20 PM, Andrew Kubera wrote: > Plot.ly looks cool, but I think you need an API key to > use. This was a no-go for what I want in an open, data sharing environment. > I was pretty happy with Bokeh ; it > didn't have *quite* everything I needed for my physics analysis, but the > integration into iPython notebooks is pretty great. > > -Andrew > > > > On Jun 11, 2016, at 8:35 PM, Eric Miller wrote: > > anybody use this with python, or have recommendations for other simple but > beautiful data visualization that is .py friendly? > > tx > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh > > > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From james at atlantixeng.com Sun Jun 12 19:41:00 2016 From: james at atlantixeng.com (James Bonanno) Date: Sun, 12 Jun 2016 19:41:00 -0400 Subject: [CentralOH] Lektor Message-ID: <575DF30C.4010905@atlantixeng.com> I have been finding that the Python based single file CMS Lektor is pretty powerful, and is compelling over Nikola and Pelican. It's default organization is better from what I've found. I am wondering if anyone else has built a site with it. https://www.getlektor.com/ Thanks, James From miller.eric.t at gmail.com Sun Jun 12 20:04:25 2016 From: miller.eric.t at gmail.com (Eric Miller) Date: Sun, 12 Jun 2016 20:04:25 -0400 Subject: [CentralOH] Lektor In-Reply-To: <575DF30C.4010905@atlantixeng.com> References: <575DF30C.4010905@atlantixeng.com> Message-ID: I'm also curious about, specifically this in comparison to Jekyll On Jun 12, 2016 7:48 PM, "James Bonanno" wrote: > I have been finding that the Python based single file CMS Lektor is pretty > powerful, and is compelling over Nikola and Pelican. It's default > organization is better from what I've found. I am wondering if anyone else > has built a site with it. > > https://www.getlektor.com/ > > Thanks, James > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh > -------------- next part -------------- An HTML attachment was scrubbed... URL: From james at atlantixeng.com Mon Jun 13 12:18:01 2016 From: james at atlantixeng.com (James Bonanno) Date: Mon, 13 Jun 2016 12:18:01 -0400 Subject: [CentralOH] More on Lektor In-Reply-To: References: Message-ID: <575EDCB9.5030703@atlantixeng.com> I have built a basic site with Nikola, Pelican, and Lektor, and also the same content applied to Flask. What I have found with Lektor is that it is really effective, and in my application I have a fair amount of code with the Pygments lexer in Markdown handles nicely, even different languages appearing in the same post. I really like the ability to custom regular site pages versus blog pages in Lektor, and the structure of the file setup dictates how the site will be, which I also like. It is interesting that Lektor has a wide following on GitHub, but imho, it is not quite ready for prime time yet. The reason that I say that is the difficulty that I had generating tags with Lektor, where there is a list of "officially" supported plugins and those that are "not officially supported", the tag/atom feeds being one of the unsupported ones. Pelican and Nikola are much more mature in this regard. --James From brian.costlow at gmail.com Mon Jun 13 12:40:59 2016 From: brian.costlow at gmail.com (Brian Costlow) Date: Mon, 13 Jun 2016 12:40:59 -0400 Subject: [CentralOH] Multi (Tech) Group Summer Social, June 16th. Message-ID: The CWG, IxDA and Girl Develop It! are hosting a Summer Social Happy Hour this Thursday. (6/16). It's space limited. As of this post there are about 25 spots left. RSVP here if you want to go: http://www.meetup.com/Columbus-Web-Group/events/231680743/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From brian.costlow at gmail.com Mon Jun 13 16:33:13 2016 From: brian.costlow at gmail.com (Brian Costlow) Date: Mon, 13 Jun 2016 16:33:13 -0400 Subject: [CentralOH] pyohio.org crew In-Reply-To: References: Message-ID: Hi Eric, We've un-cancelled the talk from the admin, you can now edit it again. Also, if you need one of is in a hurry, emailing info at pyohio.org is your best bet. Thanks for all your hard work on the proposal. --Brian On Sun, Jun 12, 2016 at 9:57 AM, Eric Miller wrote: > If anybody on the pyohio.org team has a moment to look at the most recent > reviewer feedback comment for proposal #342, that would be greatly > appreciated. I have all day free today to make the edits that Randy is > requesting, and will do so if I can get that proposal back in an editable > state. > > Thanks! > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Mon Jun 13 18:13:30 2016 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 13 Jun 2016 18:13:30 -0400 Subject: [CentralOH] =?utf-8?q?2016-05-27_=E9=81=93=E5=A0=B4_Scribbles_?= =?utf-8?b?76SY5pu4L+aDoeaWhz8gb3JhY2xlIHYgZ29vZ2xlIGRlY2ltYXRpb24/IHRy?= =?utf-8?q?olls_least_astonishment_tuple_unpacking_CB_UNIX_hasing_set_dict?= =?utf-8?q?_marshmallow_challenge?= Message-ID: <20160613181330.2d3ab95a.jep200404@columbus.rr.com> Oracle v Google Google beats Oracle?Android makes ?fair use? of Java APIs http://arstechnica.com/tech-policy/2016/05/google-wins-trial-against-oracle-as-jury-finds-android-is-fair-use/ $10bn Oracle v Google copyright jury verdict: Google wins, Java APIs in Android are Fair Use http://www.theregister.co.uk/2016/05/26/google_wins_latest_round_in_oracle_copyright_battle/ Op-ed: Oracle attorney says Google?s court victory might kill the GPL http://arstechnica.com/tech-policy/2016/05/op-ed-oracle-attorney-says-googles-court-victory-might-kill-the-gpl/ Google's Fair Use Victory Is Good for Open Source https://www.linkedin.com/pulse/googles-fair-use-victory-good-open-source-pamela-samuelson Was this decimation[1] in the Roman sense? After suffering a painful incident, did an organization fire someone who did not cause the problem, so as to instill fear amongst the survivors, and not fire the person who caused the problem because the organization was too reliant on that person? How Newegg is Winning the Battle Against Patent Trolls https://www.linux.com/news/how-newegg-winning-battle-against-patent-trolls-video wp: prefix means Wikipedia To get good answers, consider following the advice in the links below. http://catb.org/~esr/faqs/smart-questions.html http://web.archive.org/web/20090627155454/www.greenend.org.uk/rjk/2000/06/14/quoting.html Compare: wp:Principle of least astonishment Microsoft won't back down from Windows 10 nagware 'trick' http://www.theregister.co.uk/2016/05/26/microsoft_clarifies_upgrade_trick/ *args in tuple unpacking *expressions dojo at 4519n_high:~/i/dojo$ python3 Python 3.4.3 (default, Oct 14 2015, 20:33:09) [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information. >>> a = list(range(5)) >>> a [0, 1, 2, 3, 4] >>> first, *middle, last = a >>> first 0 >>> middle [1, 2, 3] >>> last 4 >>> Cowtown was important for UNIX wp:CB UNIX wp:Bidet wp:Furo http://www.merriam-webster.com/dictionary/parlous wp:PNC Bank wp:45 RPM Record hashing is magic http://nbviewer.jupyter.org/github/james-prior/cohpy/blob/master/20160523/cohpy-20160523-speed-of-searching-sets-and-lists.ipynb http://pyvideo.org/video/2571/all-your-ducks-in-a-row-data-structures-in-the-s http://pyvideo.org/video/276/the-mighty-dictionary-55 https://en.wikipedia.org/wiki/Hash_table most happy with: generator expression for most common words line 39 (and lines 39-49) of https://github.com/cohpy/challenge-201604-words/blob/57706ccaf571491f701600bc93b8d9dd4ae760ac/CWAndrews-OH/text_counter/word_count.py marshmallow challenge wp:Iterative design wp:Agile software development [1] https://en.wikipedia.org/wiki/Decimation_(Roman_army) From erik.n.welch at gmail.com Tue Jun 14 13:45:42 2016 From: erik.n.welch at gmail.com (Erik Welch) Date: Tue, 14 Jun 2016 12:45:42 -0500 Subject: [CentralOH] plot.ly In-Reply-To: References: <2E372495-8755-4928-8F83-698E4754ED8B@gmail.com> Message-ID: +1 for Bokeh. Seaborn is another popular choice for creating static plots. It has a few different interfaces that make trade-offs between convenience and customizability, which may seem overwhelming to new users. I recommend watching a tutorial to start learning Bokeh: https://www.youtube.com/watch?v=Cwnb_o0UORM&index=4&list=PLGB9meziqbzr6sEJ6lScTBMGYTWUGS-e_ If you want to learn more about colormaps and matplotlib's new default, viridis, watch the video here: http://matplotlib.org/style_changes.html Full disclosure: I work for Continuum Analytics, which supports the primary developers behind Bokeh. Cheers, Erik On Sun, Jun 12, 2016 at 9:49 AM, Austin Godber wrote: > Plotly actually released a fully stand alone open source version that does > not rely on their services: > > https://plot.ly/javascript/open-source-announcement/ > > See these docs for examples of stand alone use: > > https://plot.ly/javascript/open-source-announcement/ > > Maybe it's still not what Eric wants, but I thought someone might at least > be compelled to try it. It looks great ... but because it started out > closed and they're still pretty mum about its open source nature I never > bothered to look at it. > > - Austin > > > On Sat, Jun 11, 2016 at 6:20 PM, Andrew Kubera > wrote: > >> Plot.ly looks cool, but I think you need an API key to >> use. This was a no-go for what I want in an open, data sharing environment. >> I was pretty happy with Bokeh ; it >> didn't have *quite* everything I needed for my physics analysis, but the >> integration into iPython notebooks is pretty great. >> >> -Andrew >> >> >> >> On Jun 11, 2016, at 8:35 PM, Eric Miller wrote: >> >> anybody use this with python, or have recommendations for other simple >> but beautiful data visualization that is .py friendly? >> >> tx >> _______________________________________________ >> CentralOH mailing list >> CentralOH at python.org >> https://mail.python.org/mailman/listinfo/centraloh >> >> >> >> _______________________________________________ >> CentralOH mailing list >> CentralOH at python.org >> https://mail.python.org/mailman/listinfo/centraloh >> >> > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From pybokeh at gmail.com Tue Jun 14 14:16:14 2016 From: pybokeh at gmail.com (pybokeh) Date: Tue, 14 Jun 2016 14:16:14 -0400 Subject: [CentralOH] plot.ly In-Reply-To: References: Message-ID: For javascript based plotting library, I went with plotly instead of bokeh because it has more chart types and the tool tips are active right out of the box. With bokeh, it is more work to get tool tip working. Maybe that has changed recently? Choropleth map in plotly is way more polished than bokeh's choropleth map. >From what I understand, Bokeh is better for plotting large data sets than plotly. For pure python, seaborn is awesome. On Jun 11, 2016 8:35 PM, "Eric Miller" wrote: > anybody use this with python, or have recommendations for other simple but > beautiful data visualization that is .py friendly? > > tx > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From brian.costlow at gmail.com Wed Jun 15 15:26:53 2016 From: brian.costlow at gmail.com (Brian Costlow) Date: Wed, 15 Jun 2016 15:26:53 -0400 Subject: [CentralOH] =?utf-8?q?2016-05-27_=E9=81=93=E5=A0=B4_Scribbles_?= =?utf-8?b?76SY5pu4L+aDoeaWhz8gb3JhY2xlIHYgZ29vZ2xlIGRlY2ltYXRpb24/?= =?utf-8?q?_trolls_least_astonishment_tuple_unpacking_CB_UNIX_hasin?= =?utf-8?q?g_set_dict_marshmallow_challenge?= In-Reply-To: <20160613181330.2d3ab95a.jep200404@columbus.rr.com> References: <20160613181330.2d3ab95a.jep200404@columbus.rr.com> Message-ID: The last 20 minutes of this PyCon 2016 talk are Van Lindberg of the PSF (who is also Associate General Counsel at Rackspace) talking about legal implications of the Oracle v. Google case. https://www.youtube.com/watch?v=Bo1UqxTnp1s&feature=youtu.be On Mon, Jun 13, 2016 at 6:13 PM, wrote: > Oracle v Google > > Google beats Oracle?Android makes ?fair use? of Java APIs > > http://arstechnica.com/tech-policy/2016/05/google-wins-trial-against-oracle-as-jury-finds-android-is-fair-use/ > > $10bn Oracle v Google copyright jury verdict: Google wins, Java APIs > in Android are Fair Use > > http://www.theregister.co.uk/2016/05/26/google_wins_latest_round_in_oracle_copyright_battle/ > > Op-ed: Oracle attorney says Google?s court victory might kill the GPL > > http://arstechnica.com/tech-policy/2016/05/op-ed-oracle-attorney-says-googles-court-victory-might-kill-the-gpl/ > > Google's Fair Use Victory Is Good for Open Source > > https://www.linkedin.com/pulse/googles-fair-use-victory-good-open-source-pamela-samuelson > > Was this decimation[1] in the Roman sense? > > After suffering a painful incident, did an organization fire > someone who did not cause the problem, so as to instill fear > amongst the survivors, and not fire the person who caused the > problem because the organization was too reliant on that person? > > How Newegg is Winning the Battle Against Patent Trolls > > https://www.linux.com/news/how-newegg-winning-battle-against-patent-trolls-video > > wp: prefix means Wikipedia > To get good answers, consider following the advice in the links below. > http://catb.org/~esr/faqs/smart-questions.html > > http://web.archive.org/web/20090627155454/www.greenend.org.uk/rjk/2000/06/14/quoting.html > > Compare: > > wp:Principle of least astonishment > > Microsoft won't back down from Windows 10 nagware 'trick' > > http://www.theregister.co.uk/2016/05/26/microsoft_clarifies_upgrade_trick/ > > *args in tuple unpacking > *expressions > > dojo at 4519n_high:~/i/dojo$ python3 > Python 3.4.3 (default, Oct 14 2015, 20:33:09) > [GCC 4.8.4] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> a = list(range(5)) > >>> a > [0, 1, 2, 3, 4] > >>> first, *middle, last = a > >>> first > 0 > >>> middle > [1, 2, 3] > >>> last > 4 > >>> > > Cowtown was important for UNIX > wp:CB UNIX > wp:Bidet > wp:Furo > > http://www.merriam-webster.com/dictionary/parlous > > wp:PNC Bank > wp:45 RPM Record > > hashing is magic > > http://nbviewer.jupyter.org/github/james-prior/cohpy/blob/master/20160523/cohpy-20160523-speed-of-searching-sets-and-lists.ipynb > > http://pyvideo.org/video/2571/all-your-ducks-in-a-row-data-structures-in-the-s > http://pyvideo.org/video/276/the-mighty-dictionary-55 > https://en.wikipedia.org/wiki/Hash_table > > most happy with: generator expression for most common words > line 39 (and lines 39-49) of > > https://github.com/cohpy/challenge-201604-words/blob/57706ccaf571491f701600bc93b8d9dd4ae760ac/CWAndrews-OH/text_counter/word_count.py > > marshmallow challenge > > wp:Iterative design > wp:Agile software development > > [1] https://en.wikipedia.org/wiki/Decimation_(Roman_army) > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Wed Jun 15 21:15:00 2016 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Wed, 15 Jun 2016 21:15:00 -0400 Subject: [CentralOH] =?utf-8?q?2016-04-25_=E6=9C=83=E8=AD=B0_Scribbles_?= =?utf-8?b?76SY5pu4L+aDoeaWhz8gdGVtcGVyYXR1cmUgY2hhbGxlbmdlIHJldmlldyBk?= =?utf-8?q?octests_magic_number_thify_pretty_d3_mondays_list_date_parsing_?= =?utf-8?q?formatting_tuple_unpacking_Nulluary_word_counting_mcilroy_knuth?= =?utf-8?q?_negative_code_djgpp_nextstep_micro=3Abit_pyboard_micropython_d?= =?utf-8?q?nf_pi0_i18n_leapyear?= Message-ID: <20160615211500.35936446.jep200404@columbus.rr.com> Thanks to Pillar and Chris for their generous hospitality. pack HP hoodie to give away HP cooler to give away presentations refactor something ask people what music they code to electrons have spin. wp:Electron magnetic moment wp:Atomic orbital wp: prefix means Wikipedia To get good answers, consider following the advice in the links below. http://catb.org/~esr/faqs/smart-questions.html http://web.archive.org/web/20090627155454/www.greenend.org.uk/rjk/2000/06/14/quoting.html Pillar Julie Walker talent engagement Plugged In always looking for polyglot developers extreme programming test driving pair programming continuous integration hire for life apprentice journeyman craftsman # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # PyOhio is last weekend of July: 30 & 31 deadline for proposals is May 15th good talks good people free Brian Costlow is head of PyOhio this year one-day bootcamp for kids 40% for economically disadvantaged youths community run the race west side looking for sponsors great way to get your name out # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ejf leading review of this month's entries https://github.com/cohpy/challenge-201603-temps reviewed answer4 ran on try.jupyter.org dependencies only named magic number almost on the edge of tdd, but not quite locale issues might go back to numbers review answer1 python-dateutil csv: but it wants file, but did not want to mess with wierd stringio doctests thify() datetime.*.dateformat 114: doesn't like concatenation (or the way the concatenation was done???) print(date.strftime('%B ' + thify(date.day) + ', %Y')) print(date.strftime(''.join(['%B ', thify(date.day), ', %Y']))) print(date.strftime('%%B %s, %%Y' % thify(date.day)) print(date.strftime( '%%B {dayname}, %%Y'.format(dayname=thify(date.day)))) answer2 https://github.com/janmilosh/cohpy_temps pretty graph!!! by d3 stuff hid wxunderground key (not in repo!!!) predicts 83F mondays = self._mondays_in_month(year, month) similar technique to answer4 using list of mondays date_list = formatted_date.split('-') year = date_list[2] month = date_list[0] day = date_list[1] month, day, year = formatted_date.split('-') import datetime date = datetime.datetime.strptime(formatted_date, '%m-%d-%Y') date.strftime('%Y%m%d') answer1 nice: naming datetime(2009, 9, 28) thify: nice to take that much care inflect uses serial comma date.strftime for date in dates: easy on the eyes '{d.year}-{d.month}-{d.day}'.format(d=date) very readable!!! date.strftime('%Y-%m-%d') delta for days and months answer3 nice: copying challenge into markdown cell not large, gets to the point study http://nbviewer.jupyter.org/url/colug.net/python/dojo/20160429/dojo-20160429-2016-Mar-COhPy_Challenge_Rough-20160513-1144.ipynb answer4 nice: works on try.jupyter.org FIRST_MEETING code was short and to the point mostly readable mondays, get_dates_for_weekday() return mondays[-2] meh: should have used tuple unpacking in: [ x[0] for x in c.itermonthdays2(year, month) if x[0] and x[1] == weekday] to have been something like: [ day_of_month for day_of_month, day_of_week in c.itermonthdays2(year, month) if day_of_month and day_of_week == weekday] if earliest_date <= date < too_late_date: too_late_date is awkward name need to rework this close to being good, but not there yet 12 in for month in range(1, 12 + 1): should name that magic number MONTHS_PER_YEAR = 12 internationalization answer5 'Nulluary' cute name first time I have ever seen leap year calculation like this: if year%4: return False if year%100: return True if year%400: return False return True answer6 nice: LAST_MONDAY_OF_MONTH = relativedelta(day=31, weekday=MO(-1)) split() in months = "Jan Feb ... Nov Dec".split() pretty plots!!! # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # new challenge 10 most common words (and their counts) of Mary Shelley's Frankenstein https://github.com/cohpy/challenge-201604-words Doug McIlroy did this with six short lines. http://www.leancrew.com/all-this/2011/12/more-shell-less-egg/ https://github.com/pdonis/wordcount "The real hero of programming is the one who writes negative code," negative code When a change in a program source makes the amount of lines of code decrease ('negative' code), while its overall quality, readability or speed improves ############################################################################### Javascript is not really a bad language, it's just written that way. -- Jessica Rabbit ############################################################################### ejf what is python? specification grammar.html explanation cpython jython ironpython.net/try pypy wp:Ouroboros rpython statically compiled brython browser python (instead of javascript) pypy.js emscripten compiles to asm.js micropython.org make python into an OS micropython board similar power to Pentium PC Damien George micro:bit microbit.co.uk pyboard was made for micropython eric was using pyboard microbit is different board for different purpose see colug.net/carpe for continuing coverage alternative implementations of python micropython sudo dnf install screen (yes, dnf is a package installer) https://fedoraproject.org/wiki/Features/DNF forgot to pack pi0 but later found they _were_ packed nextstep was so far ahead of everybody else for development platform visual c++ was misleading misnomer that left a very bad taste in my mouth friends don't let friends use inittest pytest rocks python for (PC)DOS https://www.python.org/download/other/ http://www.caddit.net/pythond DJGPP is good thank you DJ! ############################################################################### mud @ compuserve logged in multiple times while on compuserve premises ratcheted up to wizard bug report, may I please keep my wizard priviledges. muons and bogons From jep200404 at columbus.rr.com Sun Jun 19 11:27:23 2016 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Sun, 19 Jun 2016 11:27:23 -0400 Subject: [CentralOH] =?utf-8?q?2016-06-10_=E9=81=93=E5=A0=B4_Scribbles_?= =?utf-8?b?76SY5pu4L+aDoeaWhz8gbG9nZ2luZyBvZWlzLmNvbSBQaOG7nyB3ZSBhbHNv?= =?utf-8?q?_walk_dogs_Beautiful=2C_Idiomatic_Python_and_other_videos_malwa?= =?utf-8?q?re_subclassing_abd_bisect_pandas_tk_flask_growler?= Message-ID: <20160619112723.2d239620.jep200404@columbus.rr.com> How to enable and use logging module in Python http://ask.xmodulo.com/logging-module-python.html oeis.com wp:Ph? 6-1-Pho Buckeye Pho Absolutely Phobulous What the Ph? Ph?-Nomenal Pho Show Pho Real Simply Pho You unPh?gettable Ph?-natic Good Pho You wp: prefix means Wikipedia To get good answers, consider following the advice in the links below. http://catb.org/~esr/faqs/smart-questions.html http://web.archive.org/web/20090627155454/www.greenend.org.uk/rjk/2000/06/14/quoting.html Tommy Boy Heinlein We Also Walk Dogs The Green Hills of Earth The Pass Through Tomorrow Sixth Column? absolute time Kelvin Time good: Transforming Code into Beautiful, Idiomatic Python http://pyvideo.org/video/1780/transforming-code-into-beautiful-idiomatic-pytho wp:Coherence (film) master key youtube video HbQauX2LOFl Swiss Voters Reject Proposal for Guaranteed Monthly Income http://english.chosun.com/site/data/html_dir/2016/06/06/2016060600648.html Elenco Elenchus Socrates have I watched this? Python Tips, Tricks, and Idioms http://pyvideo.org/video/1108/python-tips-tricks-and-idioms How Windows 10 became malware http://www.computerworld.com/article/3080102/operating-systems/how-windows-10-became-malware.html My how things change, but they don't change. Compare: Ballmer: ?Linux is a cancer? http://www.theregister.co.uk/2001/06/02/ballmer_linux_is_a_cancer/ Microsoft has created its own FreeBSD. Repeat. Microsoft has created its own FreeBSD http://www.theregister.co.uk/2016/06/09/microsoft_freebsd/ Gotta keep all of ones ducks in a line, even if they are Azure. probably should watch The Art of Subclassing http://pyvideo.org/video/879/the-art-of-subclassing bisect ? Array bisection algorithm https://docs.python.org/3/library/bisect.html abd all but dissertation mega schema builder using pandas using tk wants flask https://github.com/pyGrowler/Growler https://github.com/akubera abc.xyz wp:Great Firewall of China great firewall of osu From eric at intellovations.com Sun Jun 19 11:53:49 2016 From: eric at intellovations.com (Eric Floehr) Date: Sun, 19 Jun 2016 11:53:49 -0400 Subject: [CentralOH] Async buffer generation Message-ID: I am using pyaudio to generate real-time audio. Pyaudio allows you to pass in a callback function so that it can request some amount of audio bytes to play. Here is an example of a callback function that generates random noise: def generate_samples(in_data, frame_count, time_info, status_flags): out_data = b"" for _ in range(frame_count): out_data += pack('h', int((round(random.random() * VOLRANGE) + MINVOL))) return out_data, pyaudio.paContinue The only thing I care about is "frame_count" which is the requested number of audio bytes to return. The generation/creation of those audio bytes is occurring synchronously in the callback however. What I'd really like to do is generate the audio bytes asynchronously and then just have the callback just drain however much of the buffer is requested. I've been going through Python asyncio tutorials but haven't groked this use-case (most of the tutorials are network/HTTP/etc. based and I know its the same concept but it's different enough that I haven't been able to latch on to how to do it in my case). Any thoughts on how I could do this with Python 3.5's ayncio? Thanks! Eric -------------- next part -------------- An HTML attachment was scrubbed... URL: From nludban at columbus.rr.com Sun Jun 19 12:38:38 2016 From: nludban at columbus.rr.com (Neil Ludban) Date: Sun, 19 Jun 2016 12:38:38 -0400 Subject: [CentralOH] Async buffer generation In-Reply-To: References: Message-ID: <20160619123838.e607c7884c723ceaffc12f8b@columbus.rr.com> On Sun, 19 Jun 2016 11:53:49 -0400 Eric Floehr wrote: > I am using pyaudio to generate real-time audio. Pyaudio allows you to pass > in a callback function so that it can request some amount of audio bytes to > play. > > Here is an example of a callback function that generates random noise: > > def generate_samples(in_data, frame_count, time_info, status_flags): > out_data = b"" > for _ in range(frame_count): > out_data += pack('h', int((round(random.random() * VOLRANGE) + > MINVOL))) > return out_data, pyaudio.paContinue > > The only thing I care about is "frame_count" which is the requested number > of audio bytes to return. > > The generation/creation of those audio bytes is occurring synchronously in > the callback however. What I'd really like to do is generate the audio > bytes asynchronously and then just have the callback just drain however > much of the buffer is requested. > > I've been going through Python asyncio tutorials but haven't groked this > use-case (most of the tutorials are network/HTTP/etc. based and I know its > the same concept but it's different enough that I haven't been able to > latch on to how to do it in my case). > > Any thoughts on how I could do this with Python 3.5's ayncio? > > Thanks! > Eric https://docs.python.org/3/library/asyncio-queue.html The constructor accepts a maxsize argument, the put and get methods are awaitable and block when the queue is full/empty. I thought I once saw thread safe synchronization docs, but can't find it now. My best suggestion at the moment is for the audio callback to schedule a task with call_soon_threadsafe, then sleep on a condition. The task pulls one item from the asyncio queue, puts it somewhere for the callback thread, then notifies the condition. If it's not already obvious that this a bad way to mix i/o tasks with cpu tasks, it will be a good learning experience... From nludban at columbus.rr.com Sun Jun 19 12:44:03 2016 From: nludban at columbus.rr.com (Neil Ludban) Date: Sun, 19 Jun 2016 12:44:03 -0400 Subject: [CentralOH] Async buffer generation In-Reply-To: <20160619123838.e607c7884c723ceaffc12f8b@columbus.rr.com> References: <20160619123838.e607c7884c723ceaffc12f8b@columbus.rr.com> Message-ID: <20160619124403.5ce06c9b63d45e62e5c1cced@columbus.rr.com> On Sun, 19 Jun 2016 12:38:38 -0400 Neil Ludban wrote: > On Sun, 19 Jun 2016 11:53:49 -0400 > Eric Floehr wrote: > > I am using pyaudio to generate real-time audio. Pyaudio allows you to pass > > in a callback function so that it can request some amount of audio bytes to > > play. > > > > Here is an example of a callback function that generates random noise: > > > > def generate_samples(in_data, frame_count, time_info, status_flags): > > out_data = b"" > > for _ in range(frame_count): > > out_data += pack('h', int((round(random.random() * VOLRANGE) + > > MINVOL))) > > return out_data, pyaudio.paContinue > > > > The only thing I care about is "frame_count" which is the requested number > > of audio bytes to return. > > > > The generation/creation of those audio bytes is occurring synchronously in > > the callback however. What I'd really like to do is generate the audio > > bytes asynchronously and then just have the callback just drain however > > much of the buffer is requested. > > > > I've been going through Python asyncio tutorials but haven't groked this > > use-case (most of the tutorials are network/HTTP/etc. based and I know its > > the same concept but it's different enough that I haven't been able to > > latch on to how to do it in my case). > > > > Any thoughts on how I could do this with Python 3.5's ayncio? > > > > Thanks! > > Eric > > https://docs.python.org/3/library/asyncio-queue.html > > The constructor accepts a maxsize argument, the put and get methods > are awaitable and block when the queue is full/empty. > > I thought I once saw thread safe synchronization docs, but can't > find it now. My best suggestion at the moment is for the audio > callback to schedule a task with call_soon_threadsafe, then sleep > on a condition. The task pulls one item from the asyncio queue, > puts it somewhere for the callback thread, then notifies the condition. > If it's not already obvious that this a bad way to mix i/o tasks with > cpu tasks, it will be a good learning experience... Hidden on the last web page: https://docs.python.org/3/library/asyncio-dev.html#concurrency-and-multithreading Replace what I said earlier with run_couroutine_threadsafe and future.result(). From andrewkubera at gmail.com Sun Jun 19 13:55:56 2016 From: andrewkubera at gmail.com (Andrew Kubera) Date: Sun, 19 Jun 2016 13:55:56 -0400 Subject: [CentralOH] Async buffer generation In-Reply-To: References: Message-ID: <4EBEDF71-73AB-4C48-9C72-AD36E956C431@gmail.com> Asyncio is really only helpful if there are a lot of io-bound operations you have to worry about (hence the networking tutorials), and you'll have to pass complete control to the event loop (once in a coroutine, always in a coroutine). The best bet would probably be to create a coroutine using an Executor , which will manage all behind-the-scenes thread stuff. Look there if you really want asyncio. With respect to your noise function, which I'm sure is just an illustration but I thought I'd comment anyways, it might be effective to use a generator, which you can "send" your size request. def get_noise(buff_size=1000): intrange = (MINVOL, MINVOL + VOLRANGE) buffer = [random.randint(*intrange) for _ in range(buff_size)] req_len = yield while True: if req_len > len(buffer): gen_count = req_len - len(buffer) + buff_size buffer += [random.randint(*intrange) for _ in range(gen_count)] result, buffer = buffer[:req_len], buffer[req_len:] req_len = yield bytes(result) >>> noise_gen = get_noise() >>> next(noise_gen) >>> data_500bytes = noise_gen.send(500) >>> sound_20bytes = noise_gen.send(20) (Or with numpy) def get_noise_np(buff_size=1000): intrange = (MINVOL, MINVOL + VOLRANGE) buffer = np.random.random_integers(*intrange, buff_size) req_len = yield while True: if req_len > len(buffer): gen_count = req_len - len(buffer) + buff_size buffer += np.random.random_integers(*intrange, gen_count) result, buffer = buffer[:req_len], buffer[req_len:] req_len = yield bytes(result) (all code untested) You could choose a sufficiently large buff_size such that every noise.send(...) just chips away at the already created list. From there you could have a 'low water mark', so if the buffer size falls below it, a thread is spun up to generate more numbers in the meantime; I'm not going to try to write that out. Good Luck! And please keep us updated on how it works. > On Jun 19, 2016, at 11:53 AM, Eric Floehr wrote: > > I am using pyaudio to generate real-time audio. Pyaudio allows you to pass in a callback function so that it can request some amount of audio bytes to play. > > Here is an example of a callback function that generates random noise: > > def generate_samples(in_data, frame_count, time_info, status_flags): > out_data = b"" > for _ in range(frame_count): > out_data += pack('h', int((round(random.random() * VOLRANGE) + MINVOL))) > return out_data, pyaudio.paContinue > > The only thing I care about is "frame_count" which is the requested number of audio bytes to return. > > The generation/creation of those audio bytes is occurring synchronously in the callback however. What I'd really like to do is generate the audio bytes asynchronously and then just have the callback just drain however much of the buffer is requested. > > I've been going through Python asyncio tutorials but haven't groked this use-case (most of the tutorials are network/HTTP/etc. based and I know its the same concept but it's different enough that I haven't been able to latch on to how to do it in my case). > > Any thoughts on how I could do this with Python 3.5's ayncio? > > Thanks! > Eric > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh -------------- next part -------------- An HTML attachment was scrubbed... URL: From eric at intellovations.com Wed Jun 22 16:53:14 2016 From: eric at intellovations.com (Eric Floehr) Date: Wed, 22 Jun 2016 16:53:14 -0400 Subject: [CentralOH] Async buffer generation update Message-ID: Thank you Neil and Andrew for getting me pointed in the right direction. Here is where I am now. I've taken Neil's suggestion of a Queue, and am using the multiprocessing module's Queue which is thread-safe, and am using that as the audio buffer. I then use multiprocessing's Process class to throw the generation process into a separate process, like so: import multiprocessing audio_bytes = multiprocessing.Queue(maxsize=int(RATE/4.0)) def generate_samples(): while True: audio_bytes.put((round(random.random() * VOLRANGE) + MINVOL)) def get_samples(in_data, frame_count, time_info, status_flags): out_data = b"" for _ in range(frame_count): out_data += pack('h', audio_bytes.get()) return out_data, pyaudio.paContinue def main(): sound_process = multiprocessing.Process(target=generate_samples) sound_process.start() Currently, I'm using a buffer size of a quarter of a second. I'm still not using a generator to create the samples, but I'm working towards that. I wanted to get the basics down first. I also thought that I could use asyncio's ensure_future() to accomplish effectively the same thing effectively, except asyncio is just concurrent, whereas multiprocessing is parallel (I believe?). -Eric -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Wed Jun 22 17:32:25 2016 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Wed, 22 Jun 2016 17:32:25 -0400 Subject: [CentralOH] =?utf-8?q?2016-06-17_=E9=81=93=E5=A0=B4_Scribbles_?= =?utf-8?b?76SY5pu4L+aDoeaWhz8gYmlvbmljcyBnaXRodWIga2lkcyBmbG93IG1jcmli?= =?utf-8?q?_pigness_of_pigs_ray_rays_hog_pit_james_anderson_flask_werkzeug?= =?utf-8?q?_salad_bdd_=22This_Land=22?= Message-ID: <20160622173225.61bc4258.jep200404@columbus.rr.com> Open Source Bionics Promise: Affordably Make Lives Better http://fossforce.com/2016/06/open-source-bionics/ 10 tips for new GitHub projects https://opensource.com/business/16/6/10-tips-new-github-projects The Python Kids Club http://fossforce.com/2016/06/python-kids-club/ You'll know it when you are in it. Flow is a mental state of intense focus for programming https://opensource.com/life/16/6/interview-lindsey-bieda Hardware Hula Hoops and Flow http://opensourcebridge.org/sessions/1737 The McRib Availability Prediction Engine https://github.com/ColumbusCodeClub/mcribadamus The Marvelous Pigness of Pigs: Nurturing and Caring for All God's Creation. http://polyfaceyum.com/shop/index.php?main_page=product_info&cPath=2&products_id=198&zenid=2q68415db3ffoblgacbi1li7b6 pigaerating http://www.rayrayshogpit.com/ http://andersonfarmsohio.com/ daily wtf thedailywtf.com http://thedailywtf.com/articles/OMGWTF-Finalist-01-The-Buggy-4Function-Calculator wp: prefix means Wikipedia To get good answers, consider following the advice in the links below. http://catb.org/~esr/faqs/smart-questions.html http://web.archive.org/web/20090627155454/www.greenend.org.uk/rjk/2000/06/14/quoting.html wp:Flask (web framework) It came out of an April Fool's joke but proved popular enough to make into a serious application in its own right. Werkzeug The Python WSGI Utility Library http://werkzeug.pocoo.org/ Thanks to Pillar for usually having salad at Python monthly meetings. lettuce bdd cucumber bdd written in Ruby gherkin bdd Lawyers who yanked ?Happy Birthday? into public domain now sue over ?This Land? http://arstechnica.com/tech-policy/2016/06/lawyers-who-yanked-happy-birthday-into-public-domain-now-sue-over-this-land/ Beijing Regulators Block Sales Of iPhones, Claiming The Design Is Too Close To Chinese Company's Phone https://www.techdirt.com/articles/20160617/07255534731/beijing-regulators-block-sales-iphones-claiming-design-is-too-close-to-chinese-companys-phone.shtml?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed But, once again, just as we've been saying for years, the Chinese, unlike many in the West, absolutely recognize what patents are: a trade barrier, and they must love the fact that the US keeps asking them to build more trade barriers. From brian.costlow at gmail.com Wed Jun 22 18:09:45 2016 From: brian.costlow at gmail.com (Brian Costlow) Date: Wed, 22 Jun 2016 18:09:45 -0400 Subject: [CentralOH] Async buffer generation update In-Reply-To: References: Message-ID: Yes, more or less. The event loop runs in one thread and the concurrency is provided by coroutine based "green threads". If you look at the link Andrew provided for Executor, https://docs.python.org/3/library/asyncio-eventloop.html?highlight=asyncio%20executor#executor The default is to execute the coro in a separate thread in a threadpool, but in theory if you replaced the default executor with a process executor, like: https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor That would move cpu bound coroutines to a different process and be parallel. At that point, you are doing Celery without a broker. I'll leave it up to you whether that would be a good thing or a bad thing for your use case ;-) On Wed, Jun 22, 2016 at 4:53 PM, Eric Floehr wrote: > Thank you Neil and Andrew for getting me pointed in the right direction. > Here is where I am now. > > I've taken Neil's suggestion of a Queue, and am using the multiprocessing > module's Queue which is thread-safe, and am using that as the audio buffer. > I then use multiprocessing's Process class to throw the generation process > into a separate process, like so: > > > import multiprocessing > > audio_bytes = multiprocessing.Queue(maxsize=int(RATE/4.0)) > > def generate_samples(): > while True: > audio_bytes.put((round(random.random() * VOLRANGE) + MINVOL)) > > def get_samples(in_data, frame_count, time_info, status_flags): > out_data = b"" > for _ in range(frame_count): > out_data += pack('h', audio_bytes.get()) > return out_data, pyaudio.paContinue > > def main(): > sound_process = multiprocessing.Process(target=generate_samples) > sound_process.start() > > > Currently, I'm using a buffer size of a quarter of a second. I'm still not > using a generator to create the samples, but I'm working towards that. I > wanted to get the basics down first. > > I also thought that I could use asyncio's ensure_future() to accomplish > effectively the same thing effectively, except asyncio is just concurrent, > whereas multiprocessing is parallel (I believe?). > > -Eric > > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > https://mail.python.org/mailman/listinfo/centraloh > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From eric at intellovations.com Thu Jun 23 20:48:34 2016 From: eric at intellovations.com (Eric Floehr) Date: Thu, 23 Jun 2016 20:48:34 -0400 Subject: [CentralOH] Monthly meeting this Monday (and code exercise) Message-ID: All, Our June monthly meeting is this coming Monday at Pillar. Please RSVP here: http://www.meetup.com/Central-Ohio-Python-Users-Group/events/228901501/ Also don't forget about the code exercise, dealing with generators, which can be found here: https://github.com/cohpy/challenge-201605-generators Prizes there will be. See you there! Eric -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Fri Jun 24 20:08:30 2016 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Fri, 24 Jun 2016 20:08:30 -0400 Subject: [CentralOH] 2016-03-02 Tadka Napkin Scribbles: Ultraviolet semiconductors solar stuff Message-ID: <20160624200830.76acefa0.jep200404@columbus.rr.com> Ultraviolet light damages all semiconductors. wp: prefix means Wikipedia To get good answers, consider following the advice in the links below. http://catb.org/~esr/faqs/smart-questions.html http://web.archive.org/web/20090627155454/www.greenend.org.uk/rjk/2000/06/14/quoting.html wp:Solar maximum wp:Solar cycle wp:Solar irradiance From jep200404 at columbus.rr.com Sun Jun 26 14:13:28 2016 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Sun, 26 Jun 2016 14:13:28 -0400 Subject: [CentralOH] =?utf-8?q?2016-05-23_=E6=9C=83=E8=AD=B0_Scribbles_?= =?utf-8?b?76SY5pu4L+aDoeaWhz86IGJyYW5kb24gcmhvZGVzIHRpbWUgc2F2ZXJzIGN1?= =?utf-8?q?t_paste_pyflakes_jedi_mark_aufdencamp_stomp_websocket_mvc_dead_?= =?utf-8?q?web_3=2E0_push_activemq_enterprise_integration_patterns_hohpe_w?= =?utf-8?q?oolf_cors_waze_moovit_crash_sqs?= Message-ID: <20160626141328.2622f7bf.jep200404@columbus.rr.com> Brandon Rhodes gave good presentation on using pyflakes and jedi in an editor. two things your editor should be able to do little things that waste time not having cut and paste pyflakes analyzes Python source code for errors catches syntax errors catches uninitialized variables uses from emacs jedi jumps to other pieces of code A lot of the 1990s and very early 2000s was essentially the Python community learning that even though Python is dynamic, you should still write as though you're in an old fashioned static language, where you actually have to define the things that you use. That's why I use pyflakes. pyflakes catches my typing errors as I am typing. jedi moves cursor from where something is used to where it is defined (which may be in a different file) It is amazing how many new habits I have had to learn in the last seven months. Because I am dealing with way more code than I ever had in one project before. Guido is a few desks over these days. He uses ^. for "jump in" and ^, for "jump out". https://pypi.python.org/pypi/pyflakes https://github.com/pyflakes/pyflakes/ http://www.vim.org/scripts/script.php?script%5Fid=2441 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Mark Aufdencamp gave a presentation on asynchronous I/O in web stuff, particularly with STOMP. Cowboy these days http://aufdencamp.com/html5-demo Web 3.0 Asynchronous Messaging (Push Technology) web 2.0 mvc struts(2000)/rails(2004)/django(2003) ajax synchronous RPC expressed asynchronously in Javascript(1998, 2004( ajax long polling jetty/comet/continuations(2005) (300 seconds is a conventional default) html5 2014 css3 2012 ecmascript5 2009 html5 forms email/placeholder/regex media audio/video drawing/canvas postMessage messaging between windows geolocation LocalStorage indexedDB LocalFileSystem BLOBs WebWorkers WebSockets - this is what we are really looking tonight Asynchronous Messaging http://www.enterpriseintegrationpatterns.com/patterns/messaging/Messaging.html Enterprise Integration Patterns Gregor Hohpe Bobby Woolf book is entirely about message patterns forwards by John Crupi and Martin Fowler activemq java it has stomp connector stomp simple text oriented message protocol http style design: like http, but for messaging headers body we're using json for the message body cross platform / cross language not tied to server need to know where broker is wp:Streaming Text Oriented Messaging Protocol http://stomp.github.io/ mark thinks that mvc is dead stomp is another tool in box messages are another first class event wp:Apache Cordova The Definitive Guide to HTML5 WebSocket - apress this is where I got idea to use stomp author put together a game between JavaScript: The Definitive Guide - O'Reilly ActiveMQ in Action - Manning Enterprise Integration Patterns - Addison Wesley cors cross origin resource sharing is a pain in the ... allow access headers mark thinks that stomp will be the websockets protocol wp:waze wp:moovit good for internet of things runs stomp daemon on a raspberry pi uses little memory can probably run activemq on a raspberry pi this async messaging is how firefox is collecting crash reports he has talked with lars they moved from rabbitmq to amazon's message queuing system asked to compare with crossbar web application messaging protocol wp:Web Application Messaging Protocol amazon's sqs is rediculously amazing slug(???) replacement for 1000 servers wp:Amazon Simple Queue Service mark said to become a fan of javascript (imperative statement) kind of like 1990s, where proprietary protocols were battling over locking From jep200404 at columbus.rr.com Sun Jun 26 14:16:43 2016 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Sun, 26 Jun 2016 14:16:43 -0400 Subject: [CentralOH] =?utf-8?q?2015-10-26_=E6=9C=83=E8=AD=B0_Scribbles_?= =?utf-8?b?76SY5pu4L+aDoeaWhz86IGJyYW5kb24gcmhvZGVzIHRpbWUgc2F2ZXJzIGN1?= =?utf-8?q?t_paste_pyflakes_jedi_mark_aufdencamp_stomp_websocket_mvc_dead_?= =?utf-8?q?web_3=2E0_push_activemq_enterprise_integration_patterns_hohpe_w?= =?utf-8?q?oolf_cors_waze_moovit_crash_sqs?= In-Reply-To: <20160626141328.2622f7bf.jep200404@columbus.rr.com> References: <20160626141328.2622f7bf.jep200404@columbus.rr.com> Message-ID: <20160626141643.1c3991e5.jep200404@columbus.rr.com> On Sun, 26 Jun 2016 14:13:28 -0400, jep200404 at columbus.rr.com wrote: > Subject: [CentralOH] 2016-05-23 ?? Scribbles Oh the joys of cut and paste. That was supposed to be 2015-10-26. From jep200404 at columbus.rr.com Thu Jun 30 20:13:59 2016 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Thu, 30 Jun 2016 20:13:59 -0400 Subject: [CentralOH] 2016-07-06 11:30 Wednesday Python Lunch at Bar 145 Message-ID: <20160630201359.68e96dbd.jep200404@columbus.rr.com> Wednesday Python Lunch at Bar 145 July 6, 2016, 11:30 a.m. Bar 145[1] 955 West Fifth Ave, Columbus, OH 43212[2] We'll be meeting for good food and good company. Join us to talk Python, programming, or anything else! [1] http://bar145columbus.com/ [2] http://www.openstreetmap.org/search?query=955 West Fifth Ave, Columbus, OH 43212#map=19/39.98806/-83.03156