From brianhray at gmail.com Mon May 2 16:57:03 2016 From: brianhray at gmail.com (Brian Ray) Date: Mon, 2 May 2016 15:57:03 -0500 Subject: [Chicago] ChiPy at DePy Message-ID: Hey Chipmunks: You are invited to DePy 2015 as a community leader (for free) this weekend. Please register today (pick Sponsor): http://mdp.cdm.depaul.edu/DePy2016/default/user/register The schedule looks great: http://mdp.cdm.depaul.edu/DePy2016/default/schedule See you there! -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: From jeremy.mcmillan at gmail.com Sun May 1 13:29:33 2016 From: jeremy.mcmillan at gmail.com (Jeremy McMillan) Date: Sun, 1 May 2016 12:29:33 -0500 Subject: [Chicago] Python Hype In-Reply-To: References: Message-ID: It's not just you getting those buzzword job recruiter emails Brian. [image: Inline image 2] On Thu, Apr 28, 2016 at 9:35 AM, Brian Ray wrote: > I am working on a talk regarding "Python Hype" > https://www.linkedin.com/pulse/python-hype-brian-ray > > Would love some feedback. As you are my key support group, I'm looking for > your opinions, thoughts, comments, concerns.... > > Also, expect a Survey soon to follow. > > > Thanks! > > -- > Brian Ray > @brianray > (773) 669-7717 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 154520 bytes Desc: not available URL: From mikaeltamillow96 at gmail.com Tue May 3 08:39:00 2016 From: mikaeltamillow96 at gmail.com (Mike Tamillow) Date: Tue, 3 May 2016 07:39:00 -0500 Subject: [Chicago] Python Hype In-Reply-To: References: Message-ID: They should've started with: MAKE CA$H, CA$H, $$$, $$$ NOW!! Amateur hour. Sent from my iPhone > On May 1, 2016, at 12:29 PM, Jeremy McMillan wrote: > > It's not just you getting those buzzword job recruiter emails Brian. > > > > >> On Thu, Apr 28, 2016 at 9:35 AM, Brian Ray wrote: >> I am working on a talk regarding "Python Hype" https://www.linkedin.com/pulse/python-hype-brian-ray >> >> Would love some feedback. As you are my key support group, I'm looking for your opinions, thoughts, comments, concerns.... >> >> Also, expect a Survey soon to follow. >> >> >> Thanks! >> >> -- >> Brian Ray >> @brianray >> (773) 669-7717 >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: From milhans at northwestern.edu Wed May 4 12:00:26 2016 From: milhans at northwestern.edu (Jackie Milhans) Date: Wed, 4 May 2016 16:00:26 +0000 Subject: [Chicago] Northwestern University Hiring Bioinformatics Specialist Message-ID: <7881AA93-E001-4DCB-945F-61A8B62F5138@northwestern.edu> Hello ChiPy! Northwestern University is hiring Sr Bioinformatics Specialist to support the growing genomics research contingency at Northwestern and would be placed within the Northwestern Research Computing group. We support researchers in their computational, data, and visualization needs. This position will provide support to the medical school through training and consulting on bioinformatics, using the high-performance computing cluster, and/or utilizing other available resources. The full job description is at bit.ly/Nubio. Please feel free to email me directly with any questions! Regards, Jackie Jackie Milhans, PhD Manager, Computing and Data Support Services Information Technology Northwestern University (847) 467-4592 www.it.northwestern.edu/research | twitter -------------- next part -------------- An HTML attachment was scrubbed... URL: From joe.jasinski at gmail.com Wed May 4 19:48:22 2016 From: joe.jasinski at gmail.com (Joe Jasinski) Date: Wed, 4 May 2016 18:48:22 -0500 Subject: [Chicago] ChiPy Call for May 12th Speakers Message-ID: Hi ChiPy, We are looking for speakers for the *May 12th* ChiPy meeting. We are excited to hear from new and veteran speakers. We are also looking for someone who is willing to give a 5-10 minute "Module of the Month" lightning talk, covering a useful Python module or module feature. *To submit a talk:* - Please send your talk idea to this list. - We'll need you to fill out the talk proposal form to get you on the schedule. - http://www.chipy.org/meetings/topics/propose Let me know if you have any questions, and hope to hear from you soon! If you'd like to attend the next meeting, you can rsvp at chipy.org or via our Meetup group. -- Joe J. Jasinski www.joejasinski.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From elmq0022 at umn.edu Mon May 9 07:24:05 2016 From: elmq0022 at umn.edu (Aaron Elmquist) Date: Mon, 9 May 2016 06:24:05 -0500 Subject: [Chicago] pyodbc to ms access Message-ID: Does anyone have some advice or insight on connecting to an MS Access Database using python? Here's my info: Connection String: r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' Python Version: Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit OS Windows 7 Office 32 Bit Here's my error: Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') but... pyodbc.dataSources() returns: {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} Do I need to use a 32 bit python to get this done? Can I specify the python bits version to use in a specific conda env? Thanks, Aaron -------------- next part -------------- An HTML attachment was scrubbed... URL: From jeremy.mcmillan at gmail.com Mon May 9 08:03:55 2016 From: jeremy.mcmillan at gmail.com (Jeremy McMillan) Date: Mon, 09 May 2016 12:03:55 +0000 Subject: [Chicago] pyodbc to ms access In-Reply-To: References: Message-ID: You probably need to exhume a "Jet" db file format parser. Take a deep breath. Maybe there's ODBC, but probably not. On Mon, May 9, 2016, 06:29 Aaron Elmquist wrote: > Does anyone have some advice or insight on connecting to an MS Access > Database using python? > > Here's my info: > > Connection String: > > r'DRIVER={Microsoft Access Driver (*.mdb, > *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' > > Python Version: > > Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit > > OS > > Windows 7 > > Office > > 32 Bit > Here's my error: > Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source > name not found and no default driver specified (0) (SQLDriverConnect)') > > but... > > pyodbc.dataSources() returns: > {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, > *.xlsb)', > 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', > 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} > > Do I need to use a 32 bit python to get this done? > Can I specify the python bits version to use in a specific conda env? > > Thanks, > > Aaron > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Mark.Pfeiffer at MATRIXRes.com Mon May 2 17:02:14 2016 From: Mark.Pfeiffer at MATRIXRes.com (Mark Pfeiffer) Date: Mon, 2 May 2016 21:02:14 +0000 Subject: [Chicago] Python Developer contract role - downtown - 3+ months, start ASAP Message-ID: Hi ChiPy Chicago: I have never advertised a job in this group but felt this was worth it - our client has an immediate need for a Python Developer, will hire after a successful 30 minute phone call. They are located downtown, great company and initial 3 months, could go longer, please contact me ASAP if one of you is looking and available. Senior Python Contractor, Information Technology, Chicago, IL Responsibilities: * Contribute to and maintain process improvements, address Technical Debt * Participate in architecture and design and is trusted technical advisor on projects * Design and develop software solutions to project requirements Must Haves: * 5-7 years of experience * Significant hands-on working knowledge of Python, Django, SQL Server (or similar RDBS) * Web development; JavaScript, HTML, CSS, AJAX, JSON * Apache Tomcat, Eclipse IDE, SVN, Git/Stash * Experience with SDLC, including requirements, design, implementation, build and release/deployment, and production support. Nice To Haves: * PyDev IDE plug-in, SQL Alchemy * Apache Solr, Celery Task Queue * Atlassian JIRA/Stash/Bamboo * Pandas * CSS libraries/frameworks such as Bootstrap and/or Knockout * Agile/Scrum methodology experience MARK PFEIFFER Business Development Manager 200 W. Adams, Suite 2002, Chicago, IL 60606 Office: 312-521-8360 | Mobile: 773-550-7210 mark.pfeiffer at matrixres.com [MATRIX on Facebook] [MATRIX on Linked-In] [MATRIX on Twitter] [The MATRIX Wall] [MATRIX on YouTube] [g+ small] MATRIX | We?re how you get there. http://www.matrixres.com/solutions/agile-consulting/ ? Agile whitepaper, blog, & videos http://www.matrixres.com/solutions/uiux/ ? UI/UX portfolio http://www.matrixres.com/solutions/global-delivery/ ? MATRIX Offshore http://www.matrixres.com/client-work/ ? Case Studies -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.jpg Type: image/jpeg Size: 974 bytes Desc: image001.jpg URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image002.png Type: image/png Size: 2562 bytes Desc: image002.png URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image003.jpg Type: image/jpeg Size: 1002 bytes Desc: image003.jpg URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image004.png Type: image/png Size: 3295 bytes Desc: image004.png URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image005.png Type: image/png Size: 2656 bytes Desc: image005.png URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image006.png Type: image/png Size: 2858 bytes Desc: image006.png URL: From noah_schultz at oxfordcorp.com Mon May 9 08:17:55 2016 From: noah_schultz at oxfordcorp.com (Noah Schultz) Date: Mon, 9 May 2016 12:17:55 +0000 Subject: [Chicago] pyodbc to ms access In-Reply-To: References: , Message-ID: <32E71A54-964D-4478-8345-A3934B395A46@oxfordcorp.com> First, he is on the right path about the 32 bit vs 64 bit issue. Second, ms access is weak sauce and he should use a much more robust db with better python integration. Sent from my iPhone On May 9, 2016, at 7:04 AM, Jeremy McMillan > wrote: You probably need to exhume a "Jet" db file format parser. Take a deep breath. Maybe there's ODBC, but probably not. On Mon, May 9, 2016, 06:29 Aaron Elmquist > wrote: Does anyone have some advice or insight on connecting to an MS Access Database using python? Here's my info: Connection String: r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' Python Version: Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit OS Windows 7 Office 32 Bit Here's my error: Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') but... pyodbc.dataSources() returns: {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} Do I need to use a 32 bit python to get this done? Can I specify the python bits version to use in a specific conda env? Thanks, Aaron _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago The information transmitted, including attachments, is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this e-mail in error, please notify the sender immediately by replying to the message and deleting the material from your computer. From brianhray at gmail.com Mon May 9 11:21:29 2016 From: brianhray at gmail.com (Brian Ray) Date: Mon, 9 May 2016 11:21:29 -0400 Subject: [Chicago] I need a helper for GOTO Message-ID: I have an Interactive Python Training http://gotocon.com/chicago-2016/training/ I am leading on May 23rd. I need someone to help me teach the course. If you help, you get admission to the otherwise sold-out conference for free. You need to know enough Python to help teach. I already have content I have given 1/2 dozen times in the last year. I mostly need you to go around the room and help answer question, help with install, and would be happy to tag team on some sections. Please email me off the list if you are interested. Brian -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: From paaschpa at gmail.com Mon May 9 11:49:22 2016 From: paaschpa at gmail.com (Pat P.) Date: Mon, 9 May 2016 10:49:22 -0500 Subject: [Chicago] pyodbc to ms access In-Reply-To: <32E71A54-964D-4478-8345-A3934B395A46@oxfordcorp.com> References: <32E71A54-964D-4478-8345-A3934B395A46@oxfordcorp.com> Message-ID: Sample code (below) that 'works on my machine (tm)'. I'm running 32 bit Python 2.7.3, MS Access 2007 (can't tell if 32 or 64...shows nothing where 'bit' should be...guessing 32 bit?) and Windows 7 64 bit. import pyodbc cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\ppaasch\Documents\MSAccessPython\Database1.accdb;') crsr = cnxn.cursor() for table_name in crsr.tables(tableType='Table'): print(table_name) HTH, Pat On Mon, May 9, 2016 at 7:17 AM, Noah Schultz wrote: > First, he is on the right path about the 32 bit vs 64 bit issue. Second, > ms access is weak sauce and he should use a much more robust db with better > python integration. > > Sent from my iPhone > > On May 9, 2016, at 7:04 AM, Jeremy McMillan > wrote: > > > You probably need to exhume a "Jet" db file format parser. Take a deep > breath. Maybe there's ODBC, but probably not. > > On Mon, May 9, 2016, 06:29 Aaron Elmquist elmq0022 at umn.edu>> wrote: > > Does anyone have some advice or insight on connecting to an MS Access > Database using python? > > Here's my info: > > Connection String: > > r'DRIVER={Microsoft Access Driver (*.mdb, > *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' > > Python Version: > > Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit > > OS > > Windows 7 > > Office > > 32 Bit > > Here's my error: > Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source > name not found and no default driver specified (0) (SQLDriverConnect)') > > but... > > pyodbc.dataSources() returns: > {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, > *.xlsb)', > 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', > 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} > > Do I need to use a 32 bit python to get this done? > Can I specify the python bits version to use in a specific conda env? > > Thanks, > > Aaron > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > The information transmitted, including attachments, is intended only for > the person or entity to which it is addressed and may contain confidential > and/or privileged material. Any review, retransmission, dissemination or > other use of, or taking of any action in reliance upon this information by > persons or entities other than the intended recipient is prohibited. If you > received this e-mail in error, please notify the sender immediately by > replying to the message and deleting the material from your computer. > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From elmq0022 at umn.edu Mon May 9 11:56:28 2016 From: elmq0022 at umn.edu (Aaron Elmquist) Date: Mon, 9 May 2016 10:56:28 -0500 Subject: [Chicago] pyodbc to ms access In-Reply-To: References: <32E71A54-964D-4478-8345-A3934B395A46@oxfordcorp.com> Message-ID: Noah and Pat Thanks for the replies and confirming that I am on the correct track with the 32 bit vs 64 bit version. Looks like the 32 bit data source manager is buried in a sub folder and doesn't launch from the control panel. Thank you MS. I'll move to a 32-bit version of python and try that. This really should not be harder than providing the correct connection string to either pyodbc as Pat has demonstrated. Also, I agree with comment on MS Access being weak sauce. Unfortunately, it's not my database, and that's where the data exists. Thanks Again! On Mon, May 9, 2016 at 10:49 AM, Pat P. wrote: > Sample code (below) that 'works on my machine (tm)'. I'm running 32 bit > Python 2.7.3, MS Access 2007 (can't tell if 32 or 64...shows nothing where > 'bit' should be...guessing 32 bit?) and Windows 7 64 bit. > > import pyodbc > cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, > *.accdb)};DBQ=C:\Users\ppaasch\Documents\MSAccessPython\Database1.accdb;') > > crsr = cnxn.cursor() > for table_name in crsr.tables(tableType='Table'): > print(table_name) > > HTH, > Pat > > On Mon, May 9, 2016 at 7:17 AM, Noah Schultz > wrote: > >> First, he is on the right path about the 32 bit vs 64 bit issue. Second, >> ms access is weak sauce and he should use a much more robust db with better >> python integration. >> >> Sent from my iPhone >> >> On May 9, 2016, at 7:04 AM, Jeremy McMillan > > wrote: >> >> >> You probably need to exhume a "Jet" db file format parser. Take a deep >> breath. Maybe there's ODBC, but probably not. >> >> On Mon, May 9, 2016, 06:29 Aaron Elmquist > elmq0022 at umn.edu>> wrote: >> >> Does anyone have some advice or insight on connecting to an MS Access >> Database using python? >> >> Here's my info: >> >> Connection String: >> >> r'DRIVER={Microsoft Access Driver (*.mdb, >> *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' >> >> Python Version: >> >> Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit >> >> OS >> >> Windows 7 >> >> Office >> >> 32 Bit >> >> Here's my error: >> Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data >> source name not found and no default driver specified (0) >> (SQLDriverConnect)') >> >> but... >> >> pyodbc.dataSources() returns: >> {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, >> *.xlsb)', >> 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', >> 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} >> >> Do I need to use a 32 bit python to get this done? >> Can I specify the python bits version to use in a specific conda env? >> >> Thanks, >> >> Aaron >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> The information transmitted, including attachments, is intended only for >> the person or entity to which it is addressed and may contain confidential >> and/or privileged material. Any review, retransmission, dissemination or >> other use of, or taking of any action in reliance upon this information by >> persons or entities other than the intended recipient is prohibited. If you >> received this e-mail in error, please notify the sender immediately by >> replying to the message and deleting the material from your computer. >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From rhamil02 at gmail.com Mon May 9 12:15:38 2016 From: rhamil02 at gmail.com (Robert Hamilton) Date: Mon, 9 May 2016 11:15:38 -0500 Subject: [Chicago] pyodbc to ms access Message-ID: Good Morning Aaron, The trick I've always used on ODBC connections in 64 bit windows is to use the two ODBC administrator tools. The 64-bit ODBC Windows admin tool can be found here: C:\Windows\System32\odbcad32.exe (If you are running 32-bit Windows, this will be the only tool present, but then most of these issues don't happen anyway.) The 32-bit ODBC Windows admin tool can be found here: C:\Windows\SysWOW64\odbcad32.exe What will happen is that if you run a 32-bit application (i.e. MS Access) it will look at the ODBC connections in that 2nd tool. If you run a 64-bit application, it will look in the ODBC connections in the 1st tool. I would suggest going into the 64-bit admin, setting up a connection pointing to your Access db, and then calling the connection like all other ODBC connections cnxn = pyodbc.connect('DSN=;Database=yyyyyyyy;UID=xxxxxxx) Your 64-bit python should then work like normal. This will work well so long as the location of that Access db doesn't change very often. I feel like when you try to make the connection on the fly like in your code below, that it isn't going to default to the correct bit-version of the drivers. Hence setting it up explicitly in the ODBC admin tools. Rob ------previous email------- Here's my info: Connection String: r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' Python Version: Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit OS Windows 7 Office 32 Bit Here's my error: Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') but... pyodbc.dataSources() returns: {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} Do I need to use a 32 bit python to get this done? Can I specify the python bits version to use in a specific conda env? Thanks, Aaron From noah_schultz at oxfordcorp.com Mon May 9 12:18:49 2016 From: noah_schultz at oxfordcorp.com (Noah Schultz) Date: Mon, 9 May 2016 16:18:49 +0000 Subject: [Chicago] pyodbc to ms access In-Reply-To: References: <32E71A54-964D-4478-8345-A3934B395A46@oxfordcorp.com> , Message-ID: <82B69D22-5BCC-44CF-876B-72471A386E4C@oxfordcorp.com> Good luck. Glad you found the folder (things like that lead to the "weakness" comment).... Seem to recall another work around, and if I find it I will let you know. Sent from my iPhone On May 9, 2016, at 11:04 AM, Aaron Elmquist > wrote: Noah and Pat Thanks for the replies and confirming that I am on the correct track with the 32 bit vs 64 bit version. Looks like the 32 bit data source manager is buried in a sub folder and doesn't launch from the control panel. Thank you MS. I'll move to a 32-bit version of python and try that. This really should not be harder than providing the correct connection string to either pyodbc as Pat has demonstrated. Also, I agree with comment on MS Access being weak sauce. Unfortunately, it's not my database, and that's where the data exists. Thanks Again! On Mon, May 9, 2016 at 10:49 AM, Pat P. > wrote: Sample code (below) that 'works on my machine (tm)'. I'm running 32 bit Python 2.7.3, MS Access 2007 (can't tell if 32 or 64...shows nothing where 'bit' should be...guessing 32 bit?) and Windows 7 64 bit. import pyodbc cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\ppaasch\Documents\MSAccessPython\Database1.accdb;') crsr = cnxn.cursor() for table_name in crsr.tables(tableType='Table'): print(table_name) HTH, Pat On Mon, May 9, 2016 at 7:17 AM, Noah Schultz > wrote: First, he is on the right path about the 32 bit vs 64 bit issue. Second, ms access is weak sauce and he should use a much more robust db with better python integration. Sent from my iPhone On May 9, 2016, at 7:04 AM, Jeremy McMillan >> wrote: You probably need to exhume a "Jet" db file format parser. Take a deep breath. Maybe there's ODBC, but probably not. On Mon, May 9, 2016, 06:29 Aaron Elmquist >> wrote: Does anyone have some advice or insight on connecting to an MS Access Database using python? Here's my info: Connection String: r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' Python Version: Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit OS Windows 7 Office 32 Bit Here's my error: Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') but... pyodbc.dataSources() returns: {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} Do I need to use a 32 bit python to get this done? Can I specify the python bits version to use in a specific conda env? Thanks, Aaron _______________________________________________ Chicago mailing list Chicago at python.org> https://mail.python.org/mailman/listinfo/chicago _______________________________________________ Chicago mailing list Chicago at python.org> https://mail.python.org/mailman/listinfo/chicago The information transmitted, including attachments, is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this e-mail in error, please notify the sender immediately by replying to the message and deleting the material from your computer. _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago From elmq0022 at umn.edu Mon May 9 15:46:42 2016 From: elmq0022 at umn.edu (Aaron Elmquist) Date: Mon, 9 May 2016 14:46:42 -0500 Subject: [Chicago] pyodbc to ms access In-Reply-To: References: Message-ID: Rob, this looks like really good advice. I got caught up in some other tasks today, but will try to verify your solution tonight. Is the yyyy in Database the path to the file? Do I need so specify a User ID for xxxx or can I drop that from the string? There no specific UID associated with the database. Obviously, I'm a new to this. Thanks, Aaron On Mon, May 9, 2016 at 11:15 AM, Robert Hamilton wrote: > Good Morning Aaron, > > The trick I've always used on ODBC connections in 64 bit windows is to > use the two ODBC administrator tools. > > The 64-bit ODBC Windows admin tool can be found here: > C:\Windows\System32\odbcad32.exe (If you are running 32-bit Windows, > this will be the only tool present, but then most of these issues > don't happen anyway.) > > The 32-bit ODBC Windows admin tool can be found here: > C:\Windows\SysWOW64\odbcad32.exe > > What will happen is that if you run a 32-bit application (i.e. MS > Access) it will look at the ODBC connections in that 2nd tool. If you > run a 64-bit application, it will look in the ODBC connections in the > 1st tool. > > I would suggest going into the 64-bit admin, setting up a connection > pointing to your Access db, and then calling the connection like all > other ODBC connections > > cnxn = pyodbc.connect('DSN= in the admin tool above>;Database=yyyyyyyy;UID=xxxxxxx) > > Your 64-bit python should then work like normal. This will work well > so long as the location of that Access db doesn't change very often. > > I feel like when you try to make the connection on the fly like in > your code below, that it isn't going to default to the correct > bit-version of the drivers. Hence setting it up explicitly in the ODBC > admin tools. > > Rob > > > > > > > ------previous email------- > > Here's my info: > > Connection String: > > r'DRIVER={Microsoft Access Driver (*.mdb, > *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' > > Python Version: > > Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit > > OS > > Windows 7 > > Office > > 32 Bit > Here's my error: > Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source > name not found and no default driver specified (0) (SQLDriverConnect)') > > but... > > pyodbc.dataSources() returns: > {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, > *.xlsb)', > 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', > 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} > > Do I need to use a 32 bit python to get this done? > Can I specify the python bits version to use in a specific conda env? > > Thanks, > > Aaron > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From proba at allstate.com Mon May 9 17:10:59 2016 From: proba at allstate.com (Robare, Phillip (TEKSystems)) Date: Mon, 9 May 2016 21:10:59 +0000 Subject: [Chicago] pyodbc to ms access In-Reply-To: References: Message-ID: <50869A74BA4F07468AD797C9BFF1FE3E28825164@A0185-XPO1026-C.ad.allstate.com> Five years ago I had to pull some data out of Access. I don?t have the code available any more but I remember I used libraries that came with ActiveState?s Python. I also remember it took some trial and error. Eventually I got a nice flask + SQLServer site going to replace a buggy multi-user Access system that had grown too big. There were a couple of ?recipes? in the second edition of the Python Cookbook that are outdated but still on-line (http://code.activestate.com/recipes/528868-extraction-and-manipulation-class-for-microsoft-ac/ and http://code.activestate.com/recipes/52267-reverse-engineer-ms-accessjet-databases/). I found them useful as an example of navigating Access? data base. The code itself is so out of date it wouldn?t run 5 years ago so I don?t hold out much hope for it now. I?ve no experience with it but another route may be IronPython since access to Access is probably smoother from the .Net virtual machine. Manning?s ?Iron Python in Action? I think covered ODBC and the sample code is available for download from http://www.ironpythoninaction.com/download.html. Phil Robare From: Chicago [mailto:chicago-bounces+proba=allstate.com at python.org] On Behalf Of Aaron Elmquist Sent: Monday, May 09, 2016 6:24 AM To: The Chicago Python Users Group Subject: [Chicago] pyodbc to ms access Does anyone have some advice or insight on connecting to an MS Access Database using python? Here's my info: Connection String: r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' Python Version: Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit OS Windows 7 Office 32 Bit Here's my error: Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') but... pyodbc.dataSources() returns: {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} Do I need to use a 32 bit python to get this done? Can I specify the python bits version to use in a specific conda env? Thanks, Aaron -------------- next part -------------- An HTML attachment was scrubbed... URL: From dinaldo at gmail.com Mon May 9 17:55:26 2016 From: dinaldo at gmail.com (Don Sheu) Date: Mon, 9 May 2016 14:55:26 -0700 Subject: [Chicago] Combined User Group Happy Hour May 30 at PyCon in PDX Message-ID: Hi Everybody, several local Python user groups are combining to put on a happy hour at PyCon. If attending PyCon, please join us at Simple's HQ in the Central Eastside neighborhood. I've asked Lagunitas to sponsor beer. Currently I'm seeking a sponsor for food. We're meeting from 6:30pm till 8:30pm. PyLadies auction is on the next night on Tuesday, ;) RSVP at Eventbrite, https://happypy.eventbrite.com -- Don Sheu 312.880.9389 - - - - - - - - - - - - - - - - - - My Python user group in May meets at Redfin *http://www.meetup.com/PSPPython/events/230373146/ * *CONFIDENTIALITY NOTICE*: *The information contained in this message may be protected trade secrets or protected by applicable intellectual property laws of the United States and International agreements. If you believe that it has been sent to you in error, do not read it. Please immediately reply to the sender that you have received the message in error. Then delete it. Thank you.* ? -------------- next part -------------- An HTML attachment was scrubbed... URL: From brianhray at gmail.com Mon May 9 18:12:53 2016 From: brianhray at gmail.com (Brian Ray) Date: Mon, 9 May 2016 18:12:53 -0400 Subject: [Chicago] Combined User Group Happy Hour May 30 at PyCon in PDX In-Reply-To: References: Message-ID: This is great Don. Do you think we could show up early and have a minnie ChiPy meeting as well? On Mon, May 9, 2016 at 5:55 PM, Don Sheu wrote: > Hi Everybody, several local Python user groups are combining to put on a > happy hour at PyCon. If attending PyCon, please join us at Simple's HQ in > the Central Eastside neighborhood. > > I've asked Lagunitas to sponsor beer. Currently I'm seeking a sponsor for > food. We're meeting from 6:30pm till 8:30pm. > > PyLadies auction is on the next night on Tuesday, ;) > > RSVP at Eventbrite, https://happypy.eventbrite.com > > -- > Don Sheu > 312.880.9389 > - - - - - - - - - - - - - - - - - - > > My Python user group in May meets at Redfin > *http://www.meetup.com/PSPPython/events/230373146/ > * > > > *CONFIDENTIALITY NOTICE*: *The information contained in this message may > be protected trade secrets or protected by applicable intellectual property > laws of the United States and International agreements. If you believe that > it has been sent to you in error, do not read it. Please immediately reply > to the sender that you have received the message in error. Then delete it. > Thank you.* > ? > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: From dinaldo at gmail.com Mon May 9 18:16:19 2016 From: dinaldo at gmail.com (Don Sheu) Date: Mon, 9 May 2016 15:16:19 -0700 Subject: [Chicago] Combined User Group Happy Hour May 30 at PyCon in PDX In-Reply-To: References: Message-ID: Yah! ? On Mon, May 9, 2016 at 3:12 PM, Brian Ray wrote: > This is great Don. Do you think we could show up early and have a minnie > ChiPy meeting as well? > > On Mon, May 9, 2016 at 5:55 PM, Don Sheu wrote: > >> Hi Everybody, several local Python user groups are combining to put on a >> happy hour at PyCon. If attending PyCon, please join us at Simple's HQ in >> the Central Eastside neighborhood. >> >> I've asked Lagunitas to sponsor beer. Currently I'm seeking a sponsor for >> food. We're meeting from 6:30pm till 8:30pm. >> >> PyLadies auction is on the next night on Tuesday, ;) >> >> RSVP at Eventbrite, https://happypy.eventbrite.com >> >> -- >> Don Sheu >> 312.880.9389 >> - - - - - - - - - - - - - - - - - - >> >> My Python user group in May meets at Redfin >> *http://www.meetup.com/PSPPython/events/230373146/ >> * >> >> >> *CONFIDENTIALITY NOTICE*: *The information contained in this message may >> be protected trade secrets or protected by applicable intellectual property >> laws of the United States and International agreements. If you believe that >> it has been sent to you in error, do not read it. Please immediately reply >> to the sender that you have received the message in error. Then delete it. >> Thank you.* >> ? >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > > > -- > Brian Ray > @brianray > (773) 669-7717 > -- Don Sheu 312.880.9389 - - - - - - - - - - - - - - - - - - My Python user group in May meets at Redfin *http://www.meetup.com/PSPPython/events/230373146/ * *CONFIDENTIALITY NOTICE*: *The information contained in this message may be protected trade secrets or protected by applicable intellectual property laws of the United States and International agreements. If you believe that it has been sent to you in error, do not read it. Please immediately reply to the sender that you have received the message in error. Then delete it. Thank you.* -------------- next part -------------- An HTML attachment was scrubbed... URL: From zitterbewegung at gmail.com Mon May 9 21:49:04 2016 From: zitterbewegung at gmail.com (Joshua Herman) Date: Tue, 10 May 2016 01:49:04 +0000 Subject: [Chicago] pyodbc to ms access In-Reply-To: <50869A74BA4F07468AD797C9BFF1FE3E28825164@A0185-XPO1026-C.ad.allstate.com> References: <50869A74BA4F07468AD797C9BFF1FE3E28825164@A0185-XPO1026-C.ad.allstate.com> Message-ID: I looked at microsofts documentation about exporting data from access. Apparently you could export your Access database into an Excel spreadsheet and then using Excel you could output to CSV and then you could load it into pandas or python and then put it into a database. See https://support.office.com/en-us/article/Export-data-to-Excel-64e974e6-ae43-4301-a53e-20463655b1a9 On Mon, May 9, 2016 at 4:54 PM Robare, Phillip (TEKSystems) < proba at allstate.com> wrote: > Five years ago I had to pull some data out of Access. I don?t have the > code available any more but I remember I used libraries that came with > ActiveState?s Python. I also remember it took some trial and error. > Eventually I got a nice flask + SQLServer site going to replace a buggy > multi-user Access system that had grown too big. > > > > There were a couple of ?recipes? in the second edition of the Python > Cookbook that are outdated but still on-line ( > http://code.activestate.com/recipes/528868-extraction-and-manipulation-class-for-microsoft-ac/ > and > http://code.activestate.com/recipes/52267-reverse-engineer-ms-accessjet-databases/). > I found them useful as an example of navigating Access? data base. The > code itself is so out of date it wouldn?t run 5 years ago so I don?t hold > out much hope for it now. > > > > I?ve no experience with it but another route may be IronPython since > access to Access is probably smoother from the .Net virtual machine. > Manning?s ?Iron Python in Action? I think covered ODBC and the sample code > is available for download from > http://www.ironpythoninaction.com/download.html. > > > > > > > > Phil Robare > > > > *From:* Chicago [mailto:chicago-bounces+proba=allstate.com at python.org] *On > Behalf Of *Aaron Elmquist > *Sent:* Monday, May 09, 2016 6:24 AM > *To:* The Chicago Python Users Group > *Subject:* [Chicago] pyodbc to ms access > > > > Does anyone have some advice or insight on connecting to an MS Access > Database using python? > > Here's my info: > > > Connection String: > > r'DRIVER={Microsoft Access Driver (*.mdb, > *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' > > Python Version: > > Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit > > OS > > Windows 7 > > Office > > 32 Bit > > Here's my error: > Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source > name not found and no default driver specified (0) (SQLDriverConnect)') > > but... > > pyodbc.dataSources() returns: > {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, > *.xlsb)', > 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', > 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} > > Do I need to use a 32 bit python to get this done? > > Can I specify the python bits version to use in a specific conda env? > > Thanks, > > Aaron > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From matt at soulrobotic.com Mon May 9 21:54:06 2016 From: matt at soulrobotic.com (Matthew Erickson) Date: Tue, 10 May 2016 01:54:06 +0000 Subject: [Chicago] ChiPy Call for May 12th Speakers In-Reply-To: References: Message-ID: <87B3F4DF-F2D6-468C-A5FE-6CDDEB07809B@soulrobotic.com> Hello! I?d like to give a talk on managing technical debt in a Python-driven startup environment. I?ve met more than a few people at ChiPy who sound like they?re newish to Python and either interested or already in a startup environment (either within a larger corporation or an actual startup). Python makes a *great* tool for that, however there?s ways to use it to carry your work along to great success, and there?s ways to wind up with such spaghetti you?re tempted to throw your hands up in the air and go back to Java. The focus on the talk is how to use Python and the tools it provides to avoid the unmaintainable mess while still being able to ?cut corners? to get something out the door to make your boss/investors/customers happy. --Matt > On May 4, 2016, at 6:48 PM, Joe Jasinski wrote: > > Hi ChiPy, > > We are looking for speakers for the May 12th ChiPy meeting. We are excited to hear from new and veteran speakers. > > We are also looking for someone who is willing to give a 5-10 minute "Module of the Month" lightning talk, covering a useful Python module or module feature. > > To submit a talk: > Please send your talk idea to this list. > We'll need you to fill out the talk proposal form to get you on the schedule. > http://www.chipy.org/meetings/topics/propose > Let me know if you have any questions, and hope to hear from you soon! > > If you'd like to attend the next meeting, you can rsvp at chipy.org or via our Meetup group. > > -- > Joe J. Jasinski > www.joejasinski.com _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 842 bytes Desc: Message signed with OpenPGP using GPGMail URL: From elmq0022 at umn.edu Mon May 9 22:38:38 2016 From: elmq0022 at umn.edu (Aaron Elmquist) Date: Mon, 9 May 2016 21:38:38 -0500 Subject: [Chicago] ChiPy Call for May 12th Speakers In-Reply-To: <87B3F4DF-F2D6-468C-A5FE-6CDDEB07809B@soulrobotic.com> References: <87B3F4DF-F2D6-468C-A5FE-6CDDEB07809B@soulrobotic.com> Message-ID: That sounds like a great talk Matt. I hope to see your presentation Thursday. On Mon, May 9, 2016 at 8:54 PM, Matthew Erickson wrote: > Hello! > > I?d like to give a talk on managing technical debt in a Python-driven > startup environment. I?ve met more than a few people at ChiPy who sound > like they?re newish to Python and either interested or already in a startup > environment (either within a larger corporation or an actual startup). > Python makes a *great* tool for that, however there?s ways to use it to > carry your work along to great success, and there?s ways to wind up with > such spaghetti you?re tempted to throw your hands up in the air and go back > to Java. The focus on the talk is how to use Python and the tools it > provides to avoid the unmaintainable mess while still being able to ?cut > corners? to get something out the door to make your > boss/investors/customers happy. > > --Matt > > On May 4, 2016, at 6:48 PM, Joe Jasinski wrote: > > Hi ChiPy, > > We are looking for speakers for the *May 12th* ChiPy meeting. We are > excited to hear from new and veteran speakers. > > We are also looking for someone who is willing to give a 5-10 minute > "Module of the Month" lightning talk, covering a useful Python module or > module feature. > > *To submit a talk:* > > - Please send your talk idea to this list. > - We'll need you to fill out the talk proposal form to get you on the > schedule. > - http://www.chipy.org/meetings/topics/propose > > > Let me know if you have any questions, and hope to hear from you soon! > > If you'd like to attend the next meeting, you can rsvp at chipy.org > or via our Meetup > group. > > -- > Joe J. Jasinski > www.joejasinski.com > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From elmq0022 at umn.edu Tue May 10 00:11:45 2016 From: elmq0022 at umn.edu (Aaron Elmquist) Date: Mon, 9 May 2016 23:11:45 -0500 Subject: [Chicago] pyodbc to ms access In-Reply-To: References: <50869A74BA4F07468AD797C9BFF1FE3E28825164@A0185-XPO1026-C.ad.allstate.com> Message-ID: THANKS for the help everyone. I finally managed to get a working connect to the access database. Here's a quick summary for those following the thread. 1. Connect via ODBC using pyodbc library. 2. Setup a DSN using the ODBC manager located in C:\Windows\SysWOW64\odbcad32.exe. 3. The 32-bit manager does not come up in the default windows manager found in the control panel. 4. I have an *.mdb file and used the driver only labeled *.mdb (not *.accdb, *mdb). 5. A 64-bit python *DOES NOT* work with the 32-bit access driver. 6. Using a 32-bit python resolved the issue. Code for Connection: >>> import pyodbc >>> c = pyodbc.connect(r'DSN=my_db') >>> crsr = c.cursor() >>> for t in crsr.tables(tableType='TABLE'):print(t) >>> c.close() I also installed both the 2007 and 2010 redistributable drivers. ~Aaron On Mon, May 9, 2016 at 8:49 PM, Joshua Herman wrote: > I looked at microsofts documentation about exporting data from access. > Apparently you could export your Access database into an Excel spreadsheet > and then using Excel you could output to CSV and then you could load it > into pandas or python and then put it into a database. See > https://support.office.com/en-us/article/Export-data-to-Excel-64e974e6-ae43-4301-a53e-20463655b1a9 > > On Mon, May 9, 2016 at 4:54 PM Robare, Phillip (TEKSystems) < > proba at allstate.com> wrote: > >> Five years ago I had to pull some data out of Access. I don?t have the >> code available any more but I remember I used libraries that came with >> ActiveState?s Python. I also remember it took some trial and error. >> Eventually I got a nice flask + SQLServer site going to replace a buggy >> multi-user Access system that had grown too big. >> >> >> >> There were a couple of ?recipes? in the second edition of the Python >> Cookbook that are outdated but still on-line ( >> http://code.activestate.com/recipes/528868-extraction-and-manipulation-class-for-microsoft-ac/ >> and >> http://code.activestate.com/recipes/52267-reverse-engineer-ms-accessjet-databases/). >> I found them useful as an example of navigating Access? data base. The >> code itself is so out of date it wouldn?t run 5 years ago so I don?t hold >> out much hope for it now. >> >> >> >> I?ve no experience with it but another route may be IronPython since >> access to Access is probably smoother from the .Net virtual machine. >> Manning?s ?Iron Python in Action? I think covered ODBC and the sample code >> is available for download from >> http://www.ironpythoninaction.com/download.html. >> >> >> >> >> >> >> >> Phil Robare >> >> >> >> *From:* Chicago [mailto:chicago-bounces+proba=allstate.com at python.org] *On >> Behalf Of *Aaron Elmquist >> *Sent:* Monday, May 09, 2016 6:24 AM >> *To:* The Chicago Python Users Group >> *Subject:* [Chicago] pyodbc to ms access >> >> >> >> Does anyone have some advice or insight on connecting to an MS Access >> Database using python? >> >> Here's my info: >> >> >> Connection String: >> >> r'DRIVER={Microsoft Access Driver (*.mdb, >> *.accdb)};DBQ=C:\Path\to\DB\db.mdb;' >> >> Python Version: >> >> Python 3.5.1 :: Continuum Analytics, Inc. - 64 bit >> >> OS >> >> Windows 7 >> >> Office >> >> 32 Bit >> >> Here's my error: >> Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data >> source name not found and no default driver specified (0) >> (SQLDriverConnect)') >> >> but... >> >> pyodbc.dataSources() returns: >> {'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, >> *.xlsb)', >> 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', >> 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'} >> >> Do I need to use a 32 bit python to get this done? >> >> Can I specify the python bits version to use in a specific conda env? >> >> Thanks, >> >> Aaron >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From brianhray at gmail.com Tue May 10 09:11:03 2016 From: brianhray at gmail.com (Brian Ray) Date: Tue, 10 May 2016 09:11:03 -0400 Subject: [Chicago] I need a helper for GOTO In-Reply-To: References: Message-ID: Thanks for all the responses. I found someone to help. Thanks! Brian On Mon, May 9, 2016 at 11:21 AM, Brian Ray wrote: > I have an Interactive Python Training > http://gotocon.com/chicago-2016/training/ I am leading on May 23rd. I > need someone to help me teach the course. > > If you help, you get admission to the otherwise sold-out conference for > free. > > You need to know enough Python to help teach. I already have content I > have given 1/2 dozen times in the last year. I mostly need you to go around > the room and help answer question, help with install, and would be happy to > tag team on some sections. > > Please email me off the list if you are interested. > > Brian > > > -- > Brian Ray > @brianray > (773) 669-7717 > -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: From joe.jasinski at gmail.com Tue May 10 23:00:49 2016 From: joe.jasinski at gmail.com (Joe Jasinski) Date: Tue, 10 May 2016 22:00:49 -0500 Subject: [Chicago] ChiPy May 2015 Message-ID: ChiPy, Our May 12th meeting is upcoming, and we have some good talks planned. This month, our first batch of ChiPy T-shirts will also be on sale for $15! Join us at 6:00pm to hang out, network, and eat! New ChiPy attendees are invited to stop by the "ChiPy Welcoming Table" at 6:30pm, where you can learn more about ChiPy and meet some new people. The presentations will begin promptly at 7:00pm. All are welcome! Please RSVP soon. Please provide your full name in the RSVP for the security check at the door. *When:* Thursday May 12th - 6:00pm: doors open; food arrives - 6:30pm - 6:45: ChiPy Welcoming Table open - 7:00pm: Talks Start *How:* You can rsvp at chipy.org or via our Meetup group. *Where:* Braintree 222 W Merchandise Mart Plaza Suite 800 Chicago, IL *What:* - *The 'collections' module* (0:10:00 Minutes) By: Phil Robare A quick overview of the collections module and its five data structures. The talk will be aimed at the intermediate level python user who has the basic syntax down but has not yet delved into the wealth of programming tools in the standard library. - *pyStan: Bayesian Inference for Fun and Profit* (0:30:00 Minutes) By: Stephen Hoover Probabilistic programming languages offer a flexible and expressive way to model data by treating random variables as first-class objects. Stan is a popular and well-supported library which allows users to write models in the Stan programming language and use MCMC methods to perform Bayesian inference. Stan itself is written in C++, and has a Python interface through the PyStan package. In this talk, I'll show off some of the capabilities of PyStan and go through a simple practical example of Bayesian inference in Python. - *Python, Startups, Tech Debt, and You* (0:20:00 Minutes) By: Matt Erickson There's a lot of people newish to Python and either interested or already in a startup environment (either within a larger corporation or an actual startup). Python makes a *great* tool for that, however while there?s ways to use it to carry your work along to great success, there?s ways to wind up with such spaghetti you?re tempted to throw your hands in the air and go back to Java. The focus on the talk is how to use Python and the tools it provides to avoid the unmaintainable mess while still being able to ?cut corners? to get something out the door to make your boss/investors/customers happy. Thanks always to all our Platinum sponsors, especially: Braintree, Imaginary Landscape, and Telnyx. Please be aware of our code of conduct http://www.chipy.org/pages/conduct/ See you there! -- Joe J. Jasinski www.joejasinski.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From mikaeltamillow96 at gmail.com Wed May 11 16:43:55 2016 From: mikaeltamillow96 at gmail.com (Michael Tamillow) Date: Wed, 11 May 2016 15:43:55 -0500 Subject: [Chicago] How to be a developer Message-ID: http://www.businessinsider.com/these-hilarious-memes-perfectly-capture-what-its-like-to-work-in-tech-2016-4?imm_mid=0e3906&cmp=em-data-na-na-newsltr_20160511 -------------- next part -------------- An HTML attachment was scrubbed... URL: From jsudlow at gmail.com Wed May 11 17:01:34 2016 From: jsudlow at gmail.com (Jon Sudlow) Date: Wed, 11 May 2016 16:01:34 -0500 Subject: [Chicago] How to be a developer In-Reply-To: References: Message-ID: Its a lot of stack overflow :) Priceless gems in there. On Wed, May 11, 2016 at 3:43 PM, Michael Tamillow < mikaeltamillow96 at gmail.com> wrote: > > http://www.businessinsider.com/these-hilarious-memes-perfectly-capture-what-its-like-to-work-in-tech-2016-4?imm_mid=0e3906&cmp=em-data-na-na-newsltr_20160511 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From zitterbewegung at gmail.com Wed May 11 22:35:34 2016 From: zitterbewegung at gmail.com (Joshua Herman) Date: Thu, 12 May 2016 02:35:34 +0000 Subject: [Chicago] ChiPy May 2015 In-Reply-To: References: Message-ID: Dear Joe , I assume cash only for the tshirts will we be able to specify a size or what sizes will they come in ? Sincerely Joshua herman On Tue, May 10, 2016 at 10:01 PM Joe Jasinski wrote: > ChiPy, > > Our May 12th meeting is upcoming, and we have some good talks planned. > > This month, our first batch of ChiPy T-shirts will also be on sale for $15! > > Join us at 6:00pm to hang out, network, and eat! > > New ChiPy attendees are invited to stop by the "ChiPy Welcoming Table" at > 6:30pm, where you can learn more about ChiPy and meet some new people. > > The presentations will begin promptly at 7:00pm. > > All are welcome! Please RSVP > soon. Please provide > your full name in the RSVP for the security check at the door. > > *When:* > Thursday May 12th > > - 6:00pm: doors open; food arrives > - 6:30pm - 6:45: ChiPy Welcoming Table open > - 7:00pm: Talks Start > > *How:* > You can rsvp at chipy.org or via our Meetup > group. > > *Where:* > Braintree > 222 W Merchandise Mart Plaza > Suite 800 > Chicago, IL > > *What:* > > - *The 'collections' module* > (0:10:00 Minutes) > By: Phil Robare > A quick overview of the collections module and its five data > structures. The talk will be aimed at the intermediate level python user > who has the basic syntax down but has not yet delved into the wealth of > programming tools in the standard library. > > > - *pyStan: Bayesian Inference for Fun and Profit* > (0:30:00 Minutes) > By: Stephen Hoover > Probabilistic programming languages offer a flexible and expressive > way to model data by treating random variables as first-class objects. Stan > is a popular and well-supported library which allows users to write models > in the Stan programming language and use MCMC methods to perform Bayesian > inference. Stan itself is written in C++, and has a Python interface > through the PyStan package. In this talk, I'll show off some of the > capabilities of PyStan and go through a simple practical example of > Bayesian inference in Python. > > > - *Python, Startups, Tech Debt, and You* > (0:20:00 Minutes) > By: Matt Erickson > There's a lot of people newish to Python and either interested or > already in a startup environment (either within a larger corporation or an > actual startup). Python makes a *great* tool for that, however while > there?s ways to use it to carry your work along to great success, there?s > ways to wind up with such spaghetti you?re tempted to throw your hands in > the air and go back to Java. The focus on the talk is how to use Python and > the tools it provides to avoid the unmaintainable mess while still being > able to ?cut corners? to get something out the door to make your > boss/investors/customers happy. > > > Thanks always to all our Platinum sponsors, especially: Braintree, > Imaginary Landscape, and Telnyx. > > Please be aware of our code of conduct http://www.chipy.org/pages/conduct/ > > See you there! > > > -- > Joe J. Jasinski > www.joejasinski.com > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From joe.jasinski at gmail.com Thu May 12 00:38:21 2016 From: joe.jasinski at gmail.com (Joe Jasinski) Date: Wed, 11 May 2016 23:38:21 -0500 Subject: [Chicago] ChiPy May 2015 In-Reply-To: References: Message-ID: Josh, Sizes mostly range from small to XL. We have a few XXL. There is a limited quantity available for all sizes for this first run as we gauge interest. However, if sizes run out, I plan to take down names and get a second batch going. Cash only for now. Joe On Wed, May 11, 2016 at 9:35 PM, Joshua Herman wrote: > Dear Joe , > I assume cash only for the tshirts will we be able to specify a size or > what sizes will they come in ? > Sincerely > Joshua herman > On Tue, May 10, 2016 at 10:01 PM Joe Jasinski > wrote: > >> ChiPy, >> >> Our May 12th meeting is upcoming, and we have some good talks planned. >> >> This month, our first batch of ChiPy T-shirts will also be on sale for >> $15! >> >> Join us at 6:00pm to hang out, network, and eat! >> >> New ChiPy attendees are invited to stop by the "ChiPy Welcoming Table" >> at 6:30pm, where you can learn more about ChiPy and meet some new people. >> >> The presentations will begin promptly at 7:00pm. >> >> All are welcome! Please RSVP >> soon. Please provide >> your full name in the RSVP for the security check at the door. >> >> *When:* >> Thursday May 12th >> >> - 6:00pm: doors open; food arrives >> - 6:30pm - 6:45: ChiPy Welcoming Table open >> - 7:00pm: Talks Start >> >> *How:* >> You can rsvp at chipy.org or via our Meetup >> group. >> >> *Where:* >> Braintree >> 222 W Merchandise Mart Plaza >> Suite 800 >> Chicago, IL >> >> *What:* >> >> - *The 'collections' module* >> (0:10:00 Minutes) >> By: Phil Robare >> A quick overview of the collections module and its five data >> structures. The talk will be aimed at the intermediate level python user >> who has the basic syntax down but has not yet delved into the wealth of >> programming tools in the standard library. >> >> >> - *pyStan: Bayesian Inference for Fun and Profit* >> (0:30:00 Minutes) >> By: Stephen Hoover >> Probabilistic programming languages offer a flexible and expressive >> way to model data by treating random variables as first-class objects. Stan >> is a popular and well-supported library which allows users to write models >> in the Stan programming language and use MCMC methods to perform Bayesian >> inference. Stan itself is written in C++, and has a Python interface >> through the PyStan package. In this talk, I'll show off some of the >> capabilities of PyStan and go through a simple practical example of >> Bayesian inference in Python. >> >> >> - *Python, Startups, Tech Debt, and You* >> (0:20:00 Minutes) >> By: Matt Erickson >> There's a lot of people newish to Python and either interested or >> already in a startup environment (either within a larger corporation or an >> actual startup). Python makes a *great* tool for that, however while >> there?s ways to use it to carry your work along to great success, there?s >> ways to wind up with such spaghetti you?re tempted to throw your hands in >> the air and go back to Java. The focus on the talk is how to use Python and >> the tools it provides to avoid the unmaintainable mess while still being >> able to ?cut corners? to get something out the door to make your >> boss/investors/customers happy. >> >> >> Thanks always to all our Platinum sponsors, especially: Braintree, >> Imaginary Landscape, and Telnyx. >> >> Please be aware of our code of conduct http://www.chipy >> .org/pages/conduct/ >> >> See you there! >> >> >> -- >> Joe J. Jasinski >> www.joejasinski.com >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- Joe J. Jasinski www.joejasinski.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From brianhray at gmail.com Fri May 13 21:05:06 2016 From: brianhray at gmail.com (Brian Ray) Date: Fri, 13 May 2016 21:05:06 -0400 Subject: [Chicago] Python Hype In-Reply-To: References: Message-ID: Hey all: yes the hype curve is flawed... So here it is: https://www.surveymonkey.com/r/python_hype_mailinglist Please take the survey as I will also want to do a poster session on this at Pycon. After doing a lot of research I have a hypothesis of where the language is at. I want to see if it lights up with the answers. Also, I am offering dinner to a couple randomly selected folks who take it. Cheers and Thanks for the Fish! -------------- next part -------------- An HTML attachment was scrubbed... URL: From leon at mushroomthejournal.com Sat May 14 17:05:34 2016 From: leon at mushroomthejournal.com (Leon Shernoff) Date: Sat, 14 May 2016 16:05:34 -0500 Subject: [Chicago] Handling secret stuff Message-ID: <5737931E.6040001@mushroomthejournal.com> Hi, everyone Is there a "best practices" (or even a "minimally adequate practices") post/article somewhere for handling a secret API key? My dilemma: customer interaction on client's website needs follow-up action that requires secret API key. Client insists that this must all be automatic and triggered by customer action. I'm like "Any chain of actions that is automatic and initiated by action on a public page is going to leave a trail to your key." I have a couple of potential solution architectures in mind (that are actually secure), but for now I mostly need to talk client down from this idea that it needs to all happen totally automatically and yet with complete security. Of course, if there *is* some magic architecture through which this can happen, I'm all ears. :-) Thanks! -- Best regards, Leon "Creative work defines itself; therefore, confront the work." -- John Cage Leon Shernoff 1511 E 54th St, Bsmt Chicago, IL 60615 (312) 320-2190 From adam at adamforsyth.net Sat May 14 17:19:45 2016 From: adam at adamforsyth.net (Adam Forsyth) Date: Sat, 14 May 2016 16:19:45 -0500 Subject: [Chicago] Handling secret stuff In-Reply-To: <5737931E.6040001@mushroomthejournal.com> References: <5737931E.6040001@mushroomthejournal.com> Message-ID: I'm not sure I understand your question. Take Braintree (where I work) for example -- every time someone sends us their credit card info, we connect to a credit card processor using a secret API key and send them the data. How is that different from what you're describing? On Sat, May 14, 2016 at 4:05 PM, Leon Shernoff wrote: > Hi, everyone > > Is there a "best practices" (or even a "minimally adequate practices") > post/article somewhere for handling a secret API key? > > My dilemma: customer interaction on client's website needs follow-up > action that requires secret API key. Client insists that this must all be > automatic and triggered by customer action. I'm like "Any chain of actions > that is automatic and initiated by action on a public page is going to > leave a trail to your key." I have a couple of potential solution > architectures in mind (that are actually secure), but for now I mostly need > to talk client down from this idea that it needs to all happen totally > automatically and yet with complete security. Of course, if there *is* some > magic architecture through which this can happen, I'm all ears. :-) > > Thanks! > > -- > Best regards, > Leon > > "Creative work defines itself; therefore, confront the work." > -- John Cage > > > Leon Shernoff > 1511 E 54th St, Bsmt > Chicago, IL 60615 > > (312) 320-2190 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From robkapteyn at gmail.com Sat May 14 17:31:52 2016 From: robkapteyn at gmail.com (Rob Kapteyn) Date: Sat, 14 May 2016 16:31:52 -0500 Subject: [Chicago] Handling secret stuff In-Reply-To: <5737931E.6040001@mushroomthejournal.com> References: <5737931E.6040001@mushroomthejournal.com> Message-ID: Why wouldn't HTTPS / SSL be good enough to keep your secret data secret ? That probably won't be easy to crack for at least 5 or 10 years ;) -Rob On Sat, May 14, 2016 at 4:05 PM, Leon Shernoff wrote: > Hi, everyone > > Is there a "best practices" (or even a "minimally adequate practices") > post/article somewhere for handling a secret API key? > > My dilemma: customer interaction on client's website needs follow-up > action that requires secret API key. Client insists that this must all be > automatic and triggered by customer action. I'm like "Any chain of actions > that is automatic and initiated by action on a public page is going to > leave a trail to your key." I have a couple of potential solution > architectures in mind (that are actually secure), but for now I mostly need > to talk client down from this idea that it needs to all happen totally > automatically and yet with complete security. Of course, if there *is* some > magic architecture through which this can happen, I'm all ears. :-) > > Thanks! > > -- > Best regards, > Leon > > "Creative work defines itself; therefore, confront the work." > -- John Cage > > > Leon Shernoff > 1511 E 54th St, Bsmt > Chicago, IL 60615 > > (312) 320-2190 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From carl at personnelware.com Sat May 14 17:33:42 2016 From: carl at personnelware.com (Carl Karsten) Date: Sat, 14 May 2016 16:33:42 -0500 Subject: [Chicago] PSF membership and voting Message-ID: If you are reading this, you qualify for being a member of the PSF so sign up here: https://www.python.org/users/membership/ If this is you: "PSF Contributing Members are people who dedicate at least five hours per month working on Python-related projects that advance the mission of the PSF." Sign up to vote in the upcoming election: https://docs.google.com/forms/d/1DA6hs9WKA5L4LLNIqkmfMrq_LrK6z4zXhOYJLd6a8Oo/viewform Deadline is end of Sunday. """ The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers. """ https://www.python.org/psf/mission/ -- Carl K -------------- next part -------------- An HTML attachment was scrubbed... URL: From leon at mushroomthejournal.com Sat May 14 17:40:18 2016 From: leon at mushroomthejournal.com (Leon Shernoff) Date: Sat, 14 May 2016 16:40:18 -0500 Subject: [Chicago] Secret stuff: additional detail Message-ID: <57379B42.1010906@mushroomthejournal.com> @ my question of 4:05pm I should also add that this is a WordPress site, so it's not a situation where I can do things with the server's system itself. :/ -- Best regards, Leon "Creative work defines itself; therefore, confront the work." -- John Cage Leon Shernoff 1511 E 54th St, Bsmt Chicago, IL 60615 (312) 320-2190 From adam at adamforsyth.net Sat May 14 17:55:03 2016 From: adam at adamforsyth.net (Adam Forsyth) Date: Sat, 14 May 2016 16:55:03 -0500 Subject: [Chicago] Secret stuff: additional detail In-Reply-To: <57379B42.1010906@mushroomthejournal.com> References: <57379B42.1010906@mushroomthejournal.com> Message-ID: Leon, If you're saying you'd need the secret key to be present client-side in the customer's web browser, then no, that isn't secure. You need a server-side component, or you need to get some sort of one-time use, limited scope key that can only be used to take the action the customer is permitted to take -- and whether or not that's possible depends on what the API is you're interacting with. On Sat, May 14, 2016 at 4:40 PM, Leon Shernoff wrote: > @ my question of 4:05pm > > I should also add that this is a WordPress site, so it's not a situation > where I can do things with the server's system itself. :/ > > -- > Best regards, > Leon > > "Creative work defines itself; therefore, confront the work." > -- John Cage > > > Leon Shernoff > 1511 E 54th St, Bsmt > Chicago, IL 60615 > > (312) 320-2190 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mikaeltamillow96 at gmail.com Sat May 14 17:58:19 2016 From: mikaeltamillow96 at gmail.com (Mike Tamillow) Date: Sat, 14 May 2016 16:58:19 -0500 Subject: [Chicago] Secret stuff: additional detail In-Reply-To: <57379B42.1010906@mushroomthejournal.com> References: <57379B42.1010906@mushroomthejournal.com> Message-ID: Hmmm, yes, that could do it. Just tell your clients they should pay you more. Sent from my iPhone > On May 14, 2016, at 4:40 PM, Leon Shernoff wrote: > > @ my question of 4:05pm > > I should also add that this is a WordPress site, so it's not a situation where I can do things with the server's system itself. :/ > > -- > Best regards, > Leon > > "Creative work defines itself; therefore, confront the work." > -- John Cage > > > Leon Shernoff > 1511 E 54th St, Bsmt > Chicago, IL 60615 > > (312) 320-2190 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago From heflin.rosst at gmail.com Sun May 15 07:33:31 2016 From: heflin.rosst at gmail.com (Ross Heflin) Date: Sun, 15 May 2016 06:33:31 -0500 Subject: [Chicago] Secret stuff: additional detail In-Reply-To: References: <57379B42.1010906@mushroomthejournal.com> Message-ID: > > Hmmm, yes, that could do it. > > Just tell your clients they should pay you more. > > This. -------------- next part -------------- An HTML attachment was scrubbed... URL: From brianhray at gmail.com Sun May 15 09:50:38 2016 From: brianhray at gmail.com (Brian Ray) Date: Sun, 15 May 2016 09:50:38 -0400 Subject: [Chicago] Want to host ChiPy? Message-ID: We need a venue for June 9th. Needs to hold about 120-130 comfortably. We have some back up locations; however, before we resort to those wanted to reach out and see if anyone has something in mind. Please let myself or one of the organizers now. Thanks! -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: From proba at allstate.com Mon May 16 12:48:44 2016 From: proba at allstate.com (Robare, Phillip (TEKSystems)) Date: Mon, 16 May 2016 16:48:44 +0000 Subject: [Chicago] Secret stuff: additional detail In-Reply-To: References: <57379B42.1010906@mushroomthejournal.com> Message-ID: <50869A74BA4F07468AD797C9BFF1FE3E2882585C@A0185-XPO1026-C.ad.allstate.com> Like Adam I am not sure of the constraints you are working under or exactly what you are trying to do. So this is a guess at restating it. You have a website running on a server whose security is questionable. The user in their browser initiates an action that you wish to have ACID properties (Atomic, Consistent, Isolated, Durable) as well as CAINE properties (Confidentiality, Integrity, Authenticated, Non-Repudiation, Encrypted). Throw enough bull stuff acronyms around and your client may be impressed enough to allow you to do things the right way. You might try OWASP.org and the articles there. If nothing else you may be able to collect enough examples of hacks to scare your client into acknowledging that the Internet really can be a scary place. Another resource is RFC1825 which discusses Key Management and other architectures involved in creation of secure services of IP. You also might think of architectures like what Adam referred to where the webserver passes the actual secure work off to another server with better security. Typically the second server will only accept connections from the web server(s) it knows - which limits the attack surface exposed on your WordPress site. Good luck with your attempt to educate your client. Phil Robare From: Chicago [mailto:chicago-bounces+proba=allstate.com at python.org] On Behalf Of Adam Forsyth Sent: Saturday, May 14, 2016 4:55 PM To: The Chicago Python Users Group Subject: Re: [Chicago] Secret stuff: additional detail Leon, If you're saying you'd need the secret key to be present client-side in the customer's web browser, then no, that isn't secure. You need a server-side component, or you need to get some sort of one-time use, limited scope key that can only be used to take the action the customer is permitted to take -- and whether or not that's possible depends on what the API is you're interacting with. On Sat, May 14, 2016 at 4:40 PM, Leon Shernoff > wrote: @ my question of 4:05pm I should also add that this is a WordPress site, so it's not a situation where I can do things with the server's system itself. :/ -- Best regards, Leon "Creative work defines itself; therefore, confront the work." -- John Cage Leon Shernoff 1511 E 54th St, Bsmt Chicago, IL 60615 (312) 320-2190 _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: From zitterbewegung at gmail.com Mon May 16 12:54:10 2016 From: zitterbewegung at gmail.com (Joshua Herman) Date: Mon, 16 May 2016 16:54:10 +0000 Subject: [Chicago] Secret stuff: additional detail In-Reply-To: <50869A74BA4F07468AD797C9BFF1FE3E2882585C@A0185-XPO1026-C.ad.allstate.com> References: <57379B42.1010906@mushroomthejournal.com> <50869A74BA4F07468AD797C9BFF1FE3E2882585C@A0185-XPO1026-C.ad.allstate.com> Message-ID: Dear Leon, Also useful in justifying things to people who are managers and up is to quantify how much money they would loose if their credentials were compromised. That may get you better results in educating your client. Sincerely, Joshua Herman On Mon, May 16, 2016 at 11:48 AM Robare, Phillip (TEKSystems) < proba at allstate.com> wrote: > Like Adam I am not sure of the constraints you are working under or > exactly what you are trying to do. So this is a guess at restating it. > > > > You have a website running on a server whose security is questionable. > > > > The user in their browser initiates an action that you wish to have ACID > properties (Atomic, Consistent, Isolated, Durable) as well as CAINE > properties (Confidentiality, Integrity, Authenticated, Non-Repudiation, > Encrypted). Throw enough bull stuff acronyms around and your client may be > impressed enough to allow you to do things the right way. > > > > You might try OWASP.org and the articles there. If nothing else you may > be able to collect enough examples of hacks to scare your client into > acknowledging that the Internet really can be a scary place. Another > resource is RFC1825 which discusses Key Management and other architectures > involved in creation of secure services of IP. > > > > You also might think of architectures like what Adam referred to where the > webserver passes the actual secure work off to another server with better > security. Typically the second server will only accept connections from > the web server(s) it knows - which limits the attack surface exposed on > your WordPress site. > > > > Good luck with your attempt to educate your client. > > > > Phil Robare > > > > *From:* Chicago [mailto:chicago-bounces+proba=allstate.com at python.org] *On > Behalf Of *Adam Forsyth > *Sent:* Saturday, May 14, 2016 4:55 PM > *To:* The Chicago Python Users Group > *Subject:* Re: [Chicago] Secret stuff: additional detail > > > > Leon, > > If you're saying you'd need the secret key to be present client-side in > the customer's web browser, then no, that isn't secure. > > You need a server-side component, or you need to get some sort of one-time > use, limited scope key that can only be used to take the action the > customer is permitted to take -- and whether or not that's possible depends > on what the API is you're interacting with. > > > > > > On Sat, May 14, 2016 at 4:40 PM, Leon Shernoff < > leon at mushroomthejournal.com> wrote: > > @ my question of 4:05pm > > I should also add that this is a WordPress site, so it's not a situation > where I can do things with the server's system itself. :/ > > -- > Best regards, > Leon > > "Creative work defines itself; therefore, confront the work." > -- John Cage > > > Leon Shernoff > 1511 E 54th St, Bsmt > Chicago, IL 60615 > > (312) 320-2190 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From leon at mushroomthejournal.com Mon May 16 15:39:19 2016 From: leon at mushroomthejournal.com (Leon Shernoff) Date: Mon, 16 May 2016 14:39:19 -0500 Subject: [Chicago] Handling secret stuff Message-ID: <573A21E7.4020505@mushroomthejournal.com> Thanks, Adam and Rob! I'm not worried about transmission -- yes, we have an SSL certificate etc. My concern is with storage of the API key on the client's website. The service provider in question does things a little differently from Braintree: it's a two-step process. The client has a secret API key that sort of serves as an authentication of last resort. The client sends financial data to service provider along with a public API key and the service provider sends back a one-time token that (hopefully) indicates that the proposed transaction has been checked out and can move forward. Client then returns that token along with the secret API key to service provider, and money then actually changes hands. The client is running a temp agency, with work being done over distance. The proposed architecture is that the temps log in to clients website (which is Wordpress), fill out the amount they are charging the customer, etc, and hits a button initiating this complete back-and-forth process. My concern is that if the whole process is automated and triggered by the temp hitting the button, this leaves a code trail to the secret API key. Sure, the page in question can be protected in various ways, but there's still a code trail that... well, if there's a programmatic sequence of steps that involves retrieving the key, those steps can also be traced by an outsider if they can get at the page somehow. My thought was to have the temp's page merely log the information (including the returned token) from the temp's payment request into the Wp database (I'm not worried about the security of Wordpress). I would then have a completely separate scheduled process go through these log entries and complete the second part of the back-and-forth for all of them at once. That way, the sequence of programmed events that retrieves the key doesn't need to have any involvement with the public interface at all. This seems more secure to me -- no code trail. But I don't know what SOP is in this sort of situation -- or if there is any. Like I said, I don't know if there's any best practices here or what. Any help appreciated! :-) Thanks! -- Best regards, Leon "Creative work defines itself; therefore, confront the work." -- John Cage Leon Shernoff 1511 E 54th St, Bsmt Chicago, IL 60615 (312) 320-2190 From prometheus235 at gmail.com Mon May 16 16:06:09 2016 From: prometheus235 at gmail.com (Nick Timkovich) Date: Mon, 16 May 2016 15:06:09 -0500 Subject: [Chicago] Handling secret stuff In-Reply-To: <573A21E7.4020505@mushroomthejournal.com> References: <573A21E7.4020505@mushroomthejournal.com> Message-ID: What is this "code trail"? Every time you start up a session (among other things) on a Django site it's automatically hitting the SECRET_KEY to build a token for the user. Despite knowing that, the key, for all intents and purposes, is safe. Is your presumed attacker a malicious temp employee who has access to your client? Are you exposing the key to the employee's client (ick), if not, how does said employee get at it? On Mon, May 16, 2016 at 2:39 PM, Leon Shernoff wrote: > Thanks, Adam and Rob! > > I'm not worried about transmission -- yes, we have an SSL certificate etc. > My concern is with storage of the API key on the client's website. > > The service provider in question does things a little differently from > Braintree: it's a two-step process. The client has a secret API key that > sort of serves as an authentication of last resort. The client sends > financial data to service provider along with a public API key and the > service provider sends back a one-time token that (hopefully) indicates > that the proposed transaction has been checked out and can move forward. > Client then returns that token along with the secret API key to service > provider, and money then actually changes hands. > > The client is running a temp agency, with work being done over distance. > The proposed architecture is that the temps log in to clients website > (which is Wordpress), fill out the amount they are charging the customer, > etc, and hits a button initiating this complete back-and-forth process. > > My concern is that if the whole process is automated and triggered by the > temp hitting the button, this leaves a code trail to the secret API key. > Sure, the page in question can be protected in various ways, but there's > still a code trail that... well, if there's a programmatic sequence of > steps that involves retrieving the key, those steps can also be traced by > an outsider if they can get at the page somehow. > > My thought was to have the temp's page merely log the information > (including the returned token) from the temp's payment request into the Wp > database (I'm not worried about the security of Wordpress). I would then > have a completely separate scheduled process go through these log entries > and complete the second part of the back-and-forth for all of them at once. > That way, the sequence of programmed events that retrieves the key doesn't > need to have any involvement with the public interface at all. This seems > more secure to me -- no code trail. But I don't know what SOP is in this > sort of situation -- or if there is any. Like I said, I don't know if > there's any best practices here or what. Any help appreciated! :-) > > > Thanks! > > -- > Best regards, > Leon > > "Creative work defines itself; therefore, confront the work." > -- John Cage > > > Leon Shernoff > 1511 E 54th St, Bsmt > Chicago, IL 60615 > > (312) 320-2190 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From shekay at pobox.com Mon May 16 16:10:53 2016 From: shekay at pobox.com (sheila miguez) Date: Mon, 16 May 2016 15:10:53 -0500 Subject: [Chicago] Python Project Night this Thursday Message-ID: Hi all, The monthly Python Project Night is this Thursday! Come over to Braintree and get help, talk through ideas, or just work alongside other Pythonistas. http://www.meetup.com/ChicagoPythonistas/events/228963287/ -- shekay at pobox.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From japhy at pearachute.com Mon May 16 16:40:12 2016 From: japhy at pearachute.com (Japhy Bartlett) Date: Mon, 16 May 2016 15:40:12 -0500 Subject: [Chicago] Handling secret stuff In-Reply-To: References: <573A21E7.4020505@mushroomthejournal.com> Message-ID: Generally what you'd do is make the signed API calls from the server (via requests, or curl or whatever), and never, ever expose the private key to the browser. At that point, the key is only accessible by people who have access to the server or the codebase. For the latter, there's quite a few tricks for keeping the key out of your repository; environment variables, separate files, etc. For the former, it's assumed that your sysadmins are trustworthy! - Japhy On Mon, May 16, 2016 at 3:06 PM, Nick Timkovich wrote: > What is this "code trail"? Every time you start up a session (among other > things) on a Django site it's automatically hitting the SECRET_KEY to build > a token for the user. Despite knowing that, the key, for all intents and > purposes, is safe. > > Is your presumed attacker a malicious temp employee who has access to your > client? Are you exposing the key to the employee's client (ick), if not, > how does said employee get at it? > > On Mon, May 16, 2016 at 2:39 PM, Leon Shernoff < > leon at mushroomthejournal.com> wrote: > >> Thanks, Adam and Rob! >> >> I'm not worried about transmission -- yes, we have an SSL certificate >> etc. My concern is with storage of the API key on the client's website. >> >> The service provider in question does things a little differently from >> Braintree: it's a two-step process. The client has a secret API key that >> sort of serves as an authentication of last resort. The client sends >> financial data to service provider along with a public API key and the >> service provider sends back a one-time token that (hopefully) indicates >> that the proposed transaction has been checked out and can move forward. >> Client then returns that token along with the secret API key to service >> provider, and money then actually changes hands. >> >> The client is running a temp agency, with work being done over distance. >> The proposed architecture is that the temps log in to clients website >> (which is Wordpress), fill out the amount they are charging the customer, >> etc, and hits a button initiating this complete back-and-forth process. >> >> My concern is that if the whole process is automated and triggered by the >> temp hitting the button, this leaves a code trail to the secret API key. >> Sure, the page in question can be protected in various ways, but there's >> still a code trail that... well, if there's a programmatic sequence of >> steps that involves retrieving the key, those steps can also be traced by >> an outsider if they can get at the page somehow. >> >> My thought was to have the temp's page merely log the information >> (including the returned token) from the temp's payment request into the Wp >> database (I'm not worried about the security of Wordpress). I would then >> have a completely separate scheduled process go through these log entries >> and complete the second part of the back-and-forth for all of them at once. >> That way, the sequence of programmed events that retrieves the key doesn't >> need to have any involvement with the public interface at all. This seems >> more secure to me -- no code trail. But I don't know what SOP is in this >> sort of situation -- or if there is any. Like I said, I don't know if >> there's any best practices here or what. Any help appreciated! :-) >> >> >> Thanks! >> >> -- >> Best regards, >> Leon >> >> "Creative work defines itself; therefore, confront the work." >> -- John Cage >> >> >> Leon Shernoff >> 1511 E 54th St, Bsmt >> Chicago, IL 60615 >> >> (312) 320-2190 >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From japhy at pearachute.com Mon May 16 16:52:46 2016 From: japhy at pearachute.com (Japhy Bartlett) Date: Mon, 16 May 2016 15:52:46 -0500 Subject: [Chicago] Handling secret stuff In-Reply-To: References: <573A21E7.4020505@mushroomthejournal.com> Message-ID: Oh I see the other half of this thread. Awkward, it will pretty much always be insecure until you add a server that you/your client control. On Mon, May 16, 2016 at 3:40 PM, Japhy Bartlett wrote: > Generally what you'd do is make the signed API calls from the server (via > requests, or curl or whatever), and never, ever expose the private key to > the browser. > > At that point, the key is only accessible by people who have access to the > server or the codebase. For the latter, there's quite a few tricks for > keeping the key out of your repository; environment variables, separate > files, etc. For the former, it's assumed that your sysadmins are > trustworthy! > > - Japhy > > > > On Mon, May 16, 2016 at 3:06 PM, Nick Timkovich > wrote: > >> What is this "code trail"? Every time you start up a session (among other >> things) on a Django site it's automatically hitting the SECRET_KEY to build >> a token for the user. Despite knowing that, the key, for all intents and >> purposes, is safe. >> >> Is your presumed attacker a malicious temp employee who has access to >> your client? Are you exposing the key to the employee's client (ick), if >> not, how does said employee get at it? >> >> On Mon, May 16, 2016 at 2:39 PM, Leon Shernoff < >> leon at mushroomthejournal.com> wrote: >> >>> Thanks, Adam and Rob! >>> >>> I'm not worried about transmission -- yes, we have an SSL certificate >>> etc. My concern is with storage of the API key on the client's website. >>> >>> The service provider in question does things a little differently from >>> Braintree: it's a two-step process. The client has a secret API key that >>> sort of serves as an authentication of last resort. The client sends >>> financial data to service provider along with a public API key and the >>> service provider sends back a one-time token that (hopefully) indicates >>> that the proposed transaction has been checked out and can move forward. >>> Client then returns that token along with the secret API key to service >>> provider, and money then actually changes hands. >>> >>> The client is running a temp agency, with work being done over distance. >>> The proposed architecture is that the temps log in to clients website >>> (which is Wordpress), fill out the amount they are charging the customer, >>> etc, and hits a button initiating this complete back-and-forth process. >>> >>> My concern is that if the whole process is automated and triggered by >>> the temp hitting the button, this leaves a code trail to the secret API >>> key. Sure, the page in question can be protected in various ways, but >>> there's still a code trail that... well, if there's a programmatic sequence >>> of steps that involves retrieving the key, those steps can also be traced >>> by an outsider if they can get at the page somehow. >>> >>> My thought was to have the temp's page merely log the information >>> (including the returned token) from the temp's payment request into the Wp >>> database (I'm not worried about the security of Wordpress). I would then >>> have a completely separate scheduled process go through these log entries >>> and complete the second part of the back-and-forth for all of them at once. >>> That way, the sequence of programmed events that retrieves the key doesn't >>> need to have any involvement with the public interface at all. This seems >>> more secure to me -- no code trail. But I don't know what SOP is in this >>> sort of situation -- or if there is any. Like I said, I don't know if >>> there's any best practices here or what. Any help appreciated! :-) >>> >>> >>> Thanks! >>> >>> -- >>> Best regards, >>> Leon >>> >>> "Creative work defines itself; therefore, confront the work." >>> -- John Cage >>> >>> >>> Leon Shernoff >>> 1511 E 54th St, Bsmt >>> Chicago, IL 60615 >>> >>> (312) 320-2190 >>> >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >>> >> >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From adam at adamforsyth.net Mon May 16 16:58:45 2016 From: adam at adamforsyth.net (Adam Forsyth) Date: Mon, 16 May 2016 15:58:45 -0500 Subject: [Chicago] Handling secret stuff In-Reply-To: <573A21E7.4020505@mushroomthejournal.com> References: <573A21E7.4020505@mushroomthejournal.com> Message-ID: The user of the site only gets to see the input and output of your code, not the code itself. As long as you are careful with your inputs & outputs, you won't be making any kind of "trail" to the secret key. I would re-examine the "code trail" idea entirely, as I don't think it makes sense. On Mon, May 16, 2016 at 2:39 PM, Leon Shernoff wrote: > Thanks, Adam and Rob! > > I'm not worried about transmission -- yes, we have an SSL certificate etc. > My concern is with storage of the API key on the client's website. > > The service provider in question does things a little differently from > Braintree: it's a two-step process. The client has a secret API key that > sort of serves as an authentication of last resort. The client sends > financial data to service provider along with a public API key and the > service provider sends back a one-time token that (hopefully) indicates > that the proposed transaction has been checked out and can move forward. > Client then returns that token along with the secret API key to service > provider, and money then actually changes hands. > > The client is running a temp agency, with work being done over distance. > The proposed architecture is that the temps log in to clients website > (which is Wordpress), fill out the amount they are charging the customer, > etc, and hits a button initiating this complete back-and-forth process. > > My concern is that if the whole process is automated and triggered by the > temp hitting the button, this leaves a code trail to the secret API key. > Sure, the page in question can be protected in various ways, but there's > still a code trail that... well, if there's a programmatic sequence of > steps that involves retrieving the key, those steps can also be traced by > an outsider if they can get at the page somehow. > > My thought was to have the temp's page merely log the information > (including the returned token) from the temp's payment request into the Wp > database (I'm not worried about the security of Wordpress). I would then > have a completely separate scheduled process go through these log entries > and complete the second part of the back-and-forth for all of them at once. > That way, the sequence of programmed events that retrieves the key doesn't > need to have any involvement with the public interface at all. This seems > more secure to me -- no code trail. But I don't know what SOP is in this > sort of situation -- or if there is any. Like I said, I don't know if > there's any best practices here or what. Any help appreciated! :-) > > > Thanks! > > -- > Best regards, > Leon > > "Creative work defines itself; therefore, confront the work." > -- John Cage > > > Leon Shernoff > 1511 E 54th St, Bsmt > Chicago, IL 60615 > > (312) 320-2190 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From leon at mushroomthejournal.com Mon May 16 18:02:26 2016 From: leon at mushroomthejournal.com (Leon Shernoff) Date: Mon, 16 May 2016 17:02:26 -0500 Subject: [Chicago] Handling secret stuff: update Message-ID: <573A4372.9060605@mushroomthejournal.com> Hi, everyone and thanks for the suggestions! Thanks, Philip and Joshua. I have been reading OWASP and they are a big part of what scared *me* wrt this situation. :-) Nick, I don't know how Django works. But @ the "code trail", Wordpress runs on php, which means that when you have a form on a page that's supposed to do stuff, the form says
and the dosomething.php file is unencrypted text. If the that file contains or just is able to access the secret API key, I have a security problem. While a would-be hacker may not (shouldn't!) have permissions to get to that php file, they at least know where to look, or perhaps they can devise some method of triggering the form's actions and having its results directed to them. JavaScript has a similar problem -- any action you want a page to take is written down in unencrypted pages that are interpreted live. It sounds from what you're saying that Django has layers between the pages that it serves and code that it runs that make this not a problem. In any case, this is the motivation behind my provisional idea of (something like) Japhy's solution -- I'm not running the host server, but at least perhaps I can trigger the more sensitive part of the operation by scheduled actions which are independent of anything that happens via a browser. Thanks again. Your ideas help me think. :-) -- Best regards, Leon "Creative work defines itself; therefore, confront the work." -- John Cage Leon Shernoff 1511 E 54th St, Bsmt Chicago, IL 60615 (312) 320-2190 From hundredpercentjuice at gmail.com Mon May 16 18:10:04 2016 From: hundredpercentjuice at gmail.com (JS Irick) Date: Mon, 16 May 2016 17:10:04 -0500 Subject: [Chicago] Handling secret stuff In-Reply-To: References: <573A21E7.4020505@mushroomthejournal.com> Message-ID: This is a good discussion and I'm glad we're having it on this list. Big thumbs up to everyone's well thought out responses. On Mon, May 16, 2016 at 3:58 PM, Adam Forsyth wrote: > The user of the site only gets to see the input and output of your code, > not the code itself. As long as you are careful with your inputs & outputs, > you won't be making any kind of "trail" to the secret key. I would > re-examine the "code trail" idea entirely, as I don't think it makes sense. > > > > > On Mon, May 16, 2016 at 2:39 PM, Leon Shernoff < > leon at mushroomthejournal.com> wrote: > >> Thanks, Adam and Rob! >> >> I'm not worried about transmission -- yes, we have an SSL certificate >> etc. My concern is with storage of the API key on the client's website. >> >> The service provider in question does things a little differently from >> Braintree: it's a two-step process. The client has a secret API key that >> sort of serves as an authentication of last resort. The client sends >> financial data to service provider along with a public API key and the >> service provider sends back a one-time token that (hopefully) indicates >> that the proposed transaction has been checked out and can move forward. >> Client then returns that token along with the secret API key to service >> provider, and money then actually changes hands. >> >> The client is running a temp agency, with work being done over distance. >> The proposed architecture is that the temps log in to clients website >> (which is Wordpress), fill out the amount they are charging the customer, >> etc, and hits a button initiating this complete back-and-forth process. >> >> My concern is that if the whole process is automated and triggered by the >> temp hitting the button, this leaves a code trail to the secret API key. >> Sure, the page in question can be protected in various ways, but there's >> still a code trail that... well, if there's a programmatic sequence of >> steps that involves retrieving the key, those steps can also be traced by >> an outsider if they can get at the page somehow. >> >> My thought was to have the temp's page merely log the information >> (including the returned token) from the temp's payment request into the Wp >> database (I'm not worried about the security of Wordpress). I would then >> have a completely separate scheduled process go through these log entries >> and complete the second part of the back-and-forth for all of them at once. >> That way, the sequence of programmed events that retrieves the key doesn't >> need to have any involvement with the public interface at all. This seems >> more secure to me -- no code trail. But I don't know what SOP is in this >> sort of situation -- or if there is any. Like I said, I don't know if >> there's any best practices here or what. Any help appreciated! :-) >> >> >> Thanks! >> >> -- >> Best regards, >> Leon >> >> "Creative work defines itself; therefore, confront the work." >> -- John Cage >> >> >> Leon Shernoff >> 1511 E 54th St, Bsmt >> Chicago, IL 60615 >> >> (312) 320-2190 >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- ==== JS Irick 312-307-8904 Consultant: truqua.com Coach: atlascrossfit.com Programmer: juicetux.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From adam at adamforsyth.net Mon May 16 20:43:55 2016 From: adam at adamforsyth.net (Adam Forsyth) Date: Mon, 16 May 2016 19:43:55 -0500 Subject: [Chicago] Handling secret stuff: update In-Reply-To: <573A4372.9060605@mushroomthejournal.com> References: <573A4372.9060605@mushroomthejournal.com> Message-ID: Leon, Please stop changing the subject of the thread, it makes it harder to follow the conversation and clutters up peoples' inboxes. You're mistaken about it being a security problem if "dosomething.php" contains the secret key. If your web server is being configured correctly, the user of the site can't actually see the contents of "dosomething.php". The web server uses a PHP plugin to run "dosomething.php" as a program, and then sends its output to the web browser. So the contents of that file are secure -- anyone who has access to it already has access to the secret key. On Mon, May 16, 2016 at 5:02 PM, Leon Shernoff wrote: > Hi, everyone > > and thanks for the suggestions! > > Thanks, Philip and Joshua. I have been reading OWASP and they are a big > part of what scared *me* wrt this situation. :-) > > Nick, I don't know how Django works. But @ the "code trail", Wordpress > runs on php, which means that when you have a form on a page that's > supposed to do stuff, the form says > > and the dosomething.php file is unencrypted text. If the that file > contains or just is able to access the secret API key, I have a security > problem. While a would-be hacker may not (shouldn't!) have permissions to > get to that php file, they at least know where to look, or perhaps they can > devise some method of triggering the form's actions and having its results > directed to them. JavaScript has a similar problem -- any action you want a > page to take is written down in unencrypted pages that are interpreted > live. It sounds from what you're saying that Django has layers between the > pages that it serves and code that it runs that make this not a problem. > > In any case, this is the motivation behind my provisional idea of > (something like) Japhy's solution -- I'm not running the host server, but > at least perhaps I can trigger the more sensitive part of the operation by > scheduled actions which are independent of anything that happens via a > browser. > > Thanks again. Your ideas help me think. :-) > > -- > Best regards, > Leon > > "Creative work defines itself; therefore, confront the work." > -- John Cage > > > Leon Shernoff > 1511 E 54th St, Bsmt > Chicago, IL 60615 > > (312) 320-2190 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From foresmac at gmail.com Mon May 16 22:15:43 2016 From: foresmac at gmail.com (Chris Foresman) Date: Mon, 16 May 2016 21:15:43 -0500 Subject: [Chicago] Handling secret stuff: update In-Reply-To: References: <573A4372.9060605@mushroomthejournal.com> Message-ID: <51F11582-1AC7-47BE-AA28-3C4790E5A9A0@gmail.com> Also, I?m guessing that PHP has some way to read in environment variables from the server its running on; this is typically the method used to secure API keys and the like on Django/Python web servers. Is this not an option for you? Chris Foresman foresmac at gmail.com > On May 16, 2016, at 7:43 PM, Adam Forsyth wrote: > > Leon, > > Please stop changing the subject of the thread, it makes it harder to follow the conversation and clutters up peoples' inboxes. > > You're mistaken about it being a security problem if "dosomething.php" contains the secret key. If your web server is being configured correctly, the user of the site can't actually see the contents of "dosomething.php". The web server uses a PHP plugin to run "dosomething.php" as a program, and then sends its output to the web browser. So the contents of that file are secure -- anyone who has access to it already has access to the secret key. > > > On Mon, May 16, 2016 at 5:02 PM, Leon Shernoff > wrote: > Hi, everyone > > and thanks for the suggestions! > > Thanks, Philip and Joshua. I have been reading OWASP and they are a big part of what scared *me* wrt this situation. :-) > > Nick, I don't know how Django works. But @ the "code trail", Wordpress runs on php, which means that when you have a form on a page that's supposed to do stuff, the form says > > and the dosomething.php file is unencrypted text. If the that file contains or just is able to access the secret API key, I have a security problem. While a would-be hacker may not (shouldn't!) have permissions to get to that php file, they at least know where to look, or perhaps they can devise some method of triggering the form's actions and having its results directed to them. JavaScript has a similar problem -- any action you want a page to take is written down in unencrypted pages that are interpreted live. It sounds from what you're saying that Django has layers between the pages that it serves and code that it runs that make this not a problem. > > In any case, this is the motivation behind my provisional idea of (something like) Japhy's solution -- I'm not running the host server, but at least perhaps I can trigger the more sensitive part of the operation by scheduled actions which are independent of anything that happens via a browser. > > Thanks again. Your ideas help me think. :-) > > -- > Best regards, > Leon > > "Creative work defines itself; therefore, confront the work." > -- John Cage > > > Leon Shernoff > 1511 E 54th St, Bsmt > Chicago, IL 60615 > > (312) 320-2190 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: From matt at soulrobotic.com Mon May 16 22:39:04 2016 From: matt at soulrobotic.com (Matthew Erickson) Date: Tue, 17 May 2016 02:39:04 +0000 Subject: [Chicago] Handling secret stuff: update In-Reply-To: <51F11582-1AC7-47BE-AA28-3C4790E5A9A0@gmail.com> References: <573A4372.9060605@mushroomthejournal.com> , <51F11582-1AC7-47BE-AA28-3C4790E5A9A0@gmail.com> Message-ID: <55E0001E-FABA-47A3-8D55-12B73134F700@soulrobotic.com> While we're jumping on security bandwagons, if keys could be extracted from web servers with relative ease, SSL would be more broken than it already is. -- Matt On May 16, 2016, at 21:16, Chris Foresman > wrote: Also, I'm guessing that PHP has some way to read in environment variables from the server its running on; this is typically the method used to secure API keys and the like on Django/Python web servers. Is this not an option for you? Chris Foresman foresmac at gmail.com On May 16, 2016, at 7:43 PM, Adam Forsyth > wrote: Leon, Please stop changing the subject of the thread, it makes it harder to follow the conversation and clutters up peoples' inboxes. You're mistaken about it being a security problem if "dosomething.php" contains the secret key. If your web server is being configured correctly, the user of the site can't actually see the contents of "dosomething.php". The web server uses a PHP plugin to run "dosomething.php" as a program, and then sends its output to the web browser. So the contents of that file are secure -- anyone who has access to it already has access to the secret key. On Mon, May 16, 2016 at 5:02 PM, Leon Shernoff > wrote: Hi, everyone and thanks for the suggestions! Thanks, Philip and Joshua. I have been reading OWASP and they are a big part of what scared *me* wrt this situation. :-) Nick, I don't know how Django works. But @ the "code trail", Wordpress runs on php, which means that when you have a form on a page that's supposed to do stuff, the form says and the dosomething.php file is unencrypted text. If the that file contains or just is able to access the secret API key, I have a security problem. While a would-be hacker may not (shouldn't!) have permissions to get to that php file, they at least know where to look, or perhaps they can devise some method of triggering the form's actions and having its results directed to them. JavaScript has a similar problem -- any action you want a page to take is written down in unencrypted pages that are interpreted live. It sounds from what you're saying that Django has layers between the pages that it serves and code that it runs that make this not a problem. In any case, this is the motivation behind my provisional idea of (something like) Japhy's solution -- I'm not running the host server, but at least perhaps I can trigger the more sensitive part of the operation by scheduled actions which are independent of anything that happens via a browser. Thanks again. Your ideas help me think. :-) -- Best regards, Leon "Creative work defines itself; therefore, confront the work." -- John Cage Leon Shernoff 1511 E 54th St, Bsmt Chicago, IL 60615 (312) 320-2190 _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: From prometheus235 at gmail.com Tue May 17 01:01:38 2016 From: prometheus235 at gmail.com (Nick Timkovich) Date: Tue, 17 May 2016 00:01:38 -0500 Subject: [Chicago] Handling secret stuff: update In-Reply-To: <55E0001E-FABA-47A3-8D55-12B73134F700@soulrobotic.com> References: <573A4372.9060605@mushroomthejournal.com> <51F11582-1AC7-47BE-AA28-3C4790E5A9A0@gmail.com> <55E0001E-FABA-47A3-8D55-12B73134F700@soulrobotic.com> Message-ID: I know practically nothing about PHP, but if your server is configured such that users can view its source over HTTP, that sounds insane. Apache or whatever shouldn't naively handle a request to a *.php URL. If you have PHP questions, I'd ask that community, but some quick Googling: http://stackoverflow.com/questions/2995360/possible-to-view-php-code-of-a-website https://cwe.mitre.org/data/definitions/541.html On Mon, May 16, 2016 at 9:39 PM, Matthew Erickson wrote: > While we're jumping on security bandwagons, if keys could be extracted > from web servers with relative ease, SSL would be more broken than it > already is. > > -- Matt > > On May 16, 2016, at 21:16, Chris Foresman wrote: > > Also, I?m guessing that PHP has some way to read in environment variables > from the server its running on; this is typically the method used to secure > API keys and the like on Django/Python web servers. Is this not an option > for you? > > > Chris Foresman > foresmac at gmail.com > > > > > On May 16, 2016, at 7:43 PM, Adam Forsyth wrote: > > Leon, > > Please stop changing the subject of the thread, it makes it harder to > follow the conversation and clutters up peoples' inboxes. > > You're mistaken about it being a security problem if "dosomething.php" > contains the secret key. If your web server is being configured correctly, > the user of the site can't actually see the contents of "dosomething.php". > The web server uses a PHP plugin to run "dosomething.php" as a program, and > then sends its output to the web browser. So the contents of that file are > secure -- anyone who has access to it already has access to the secret key. > > > On Mon, May 16, 2016 at 5:02 PM, Leon Shernoff < > leon at mushroomthejournal.com> wrote: > >> Hi, everyone >> >> and thanks for the suggestions! >> >> Thanks, Philip and Joshua. I have been reading OWASP and they are a big >> part of what scared *me* wrt this situation. :-) >> >> Nick, I don't know how Django works. But @ the "code trail", Wordpress >> runs on php, which means that when you have a form on a page that's >> supposed to do stuff, the form says >> >> and the dosomething.php file is unencrypted text. If the that file >> contains or just is able to access the secret API key, I have a security >> problem. While a would-be hacker may not (shouldn't!) have permissions to >> get to that php file, they at least know where to look, or perhaps they can >> devise some method of triggering the form's actions and having its results >> directed to them. JavaScript has a similar problem -- any action you want a >> page to take is written down in unencrypted pages that are interpreted >> live. It sounds from what you're saying that Django has layers between the >> pages that it serves and code that it runs that make this not a problem. >> >> In any case, this is the motivation behind my provisional idea of >> (something like) Japhy's solution -- I'm not running the host server, but >> at least perhaps I can trigger the more sensitive part of the operation by >> scheduled actions which are independent of anything that happens via a >> browser. >> >> Thanks again. Your ideas help me think. :-) >> >> -- >> Best regards, >> Leon >> >> "Creative work defines itself; therefore, confront the work." >> -- John Cage >> >> >> Leon Shernoff >> 1511 E 54th St, Bsmt >> Chicago, IL 60615 >> >> (312) 320-2190 >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From leon at mushroomthejournal.com Tue May 17 15:32:26 2016 From: leon at mushroomthejournal.com (Leon Shernoff) Date: Tue, 17 May 2016 14:32:26 -0500 Subject: [Chicago] Handling secret stuff: update Message-ID: <573B71CA.1000000@mushroomthejournal.com> Thanks, everybody Looks like I was worried about something I didn't need to be worried about. -- Best regards, Leon "Creative work defines itself; therefore, confront the work." -- John Cage Leon Shernoff 1511 E 54th St, Bsmt Chicago, IL 60615 (312) 320-2190 From jdumblauskas at gmail.com Fri May 20 17:40:19 2016 From: jdumblauskas at gmail.com (Jerry Dumblauskas) Date: Fri, 20 May 2016 16:40:19 -0500 Subject: [Chicago] Role at opensky Message-ID: If interested please contact... thx Jerry https://www.opensky.com/content/jobs/data-engineer -------------- next part -------------- An HTML attachment was scrubbed... URL: From programo.sapien at gmail.com Fri May 20 23:11:35 2016 From: programo.sapien at gmail.com (Aswin kumar) Date: Fri, 20 May 2016 22:11:35 -0500 Subject: [Chicago] Python Project Night this Thursday Message-ID: > > http://www.meetup.com/ChicagoPythonistas/events/228963287/ > Visited the above URL and found that the link https://openhatch.org/wiki/Intermediate_Python_Workshop/Projects is broken Regards, Aswin From ross at crowdspring.com Mon May 23 10:47:48 2016 From: ross at crowdspring.com (Ross Kimbarovsky) Date: Mon, 23 May 2016 09:47:48 -0500 Subject: [Chicago] Two Full-Time Python Engineer Positions - crowdSPRING Message-ID: We're growing the crowdSPRING team. We launched in 2008, re-launched a new site in 2010, and are now working to make crowdSPRING even better by reimagining *everything* about our business and our industry. This is a unique opportunity to join a profitable company and a small, agile team. Our office is in the West Loop. crowdSPRING is changing the way entrepreneurs, startups, established companies, agencies and non-profits around the world buy graphic design, industrial design, and naming/writing services. Over 185,000 designers and writers from nearly every country in the world work on crowdSPRING. We're looking for two engineers: a senior full stack engineer (with strong python experience) and a backend python engineer. [we're also looking for a marketing manager - you'll see that description in the link that follows]. https://crowdspring.workable.com/ Want to build something amazing with us? Best, Ross _____ *Ross Kimbarovsky* | Founder, CEO Startup Foundry | crowdSPRING | Respect | Quickly Legal @rosskimbarovsky | LinkedIn | 847.275.9004 ? -------------- next part -------------- An HTML attachment was scrubbed... URL: From shekay at pobox.com Mon May 23 11:32:52 2016 From: shekay at pobox.com (sheila miguez) Date: Mon, 23 May 2016 10:32:52 -0500 Subject: [Chicago] Python Project Night this Thursday In-Reply-To: References: Message-ID: On Fri, May 20, 2016 at 10:11 PM, Aswin kumar wrote: > > > > http://www.meetup.com/ChicagoPythonistas/events/228963287/ > > > Visited the above URL and found that the link > https://openhatch.org/wiki/Intermediate_Python_Workshop/Projects is > broken > Thanks for pointing that out. I don't know if the Boston Python User Group is keeping their materials there anymore. I've been gathering info on my office hours wiki and would like to keep things up to date and in trim shape. https://wiki.pumpingstationone.org/Talk:Python_Office_Hours#help_find_new_and_better_guides I don't think non ps1 members can edit there, so I'll figure out a better way to get corrections/suggestions. -- shekay at pobox.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From joe.jasinski at gmail.com Tue May 24 09:30:36 2016 From: joe.jasinski at gmail.com (Joe Jasinski) Date: Tue, 24 May 2016 08:30:36 -0500 Subject: [Chicago] ChiPy T-shirts Message-ID: Hey all, If you'd like to order a ChiPy T-shirt for the next batch of shirts, please let me know the size and quantity that you want by Friday. The shirts sell for $15. Joe -- Joe J. Jasinski www.joejasinski.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From zeroroom at lycos.com Tue May 24 09:57:25 2016 From: zeroroom at lycos.com (zeroroom at lycos.com) Date: Tue, 24 May 2016 08:57:25 -0500 Subject: [Chicago] ChiPy T-shirts In-Reply-To: References: Message-ID: Joe - 1 XL, 1 L please. where to send the $30? ...or hand off at the next monthly meeting? Just out of curiosity, what shop is doing the printing? Thanks much. _Andrij On 2016-05-24 08:30, Joe Jasinski wrote: > Hey all, > > If you'd like to order a ChiPy T-shirt for the next batch of shirts, please let me know the size and quantity that you want by Friday. The shirts sell for $15. > > Joe > -- > Joe J. Jasinski > www.joejasinski.com [1] > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago Links: ------ [1] http://www.joejasinski.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From jeremy.mcmillan at gmail.com Wed May 25 09:06:26 2016 From: jeremy.mcmillan at gmail.com (Jeremy McMillan) Date: Wed, 25 May 2016 08:06:26 -0500 Subject: [Chicago] ChiPy T-shirts In-Reply-To: References: Message-ID: I'm between a L and a M. What's the consensus on how these fit/shrink? Relaxed, or tight? On Tue, May 24, 2016 at 8:57 AM, wrote: > Joe - 1 XL, 1 L please. where to send the $30? ...or hand off at the next > monthly meeting? Just out of curiosity, what shop is doing the printing? > Thanks much. _Andrij > > > > > On 2016-05-24 08:30, Joe Jasinski wrote: > > Hey all, > > If you'd like to order a ChiPy T-shirt for the next batch of shirts, > please let me know the size and quantity that you want by Friday. The > shirts sell for $15. > > Joe > > -- > Joe J. Jasinski > www.joejasinski.com > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jordanb at hafd.org Wed May 25 11:43:06 2016 From: jordanb at hafd.org (Jordan Bettis) Date: Wed, 25 May 2016 10:43:06 -0500 Subject: [Chicago] Handling secret stuff In-Reply-To: References: <573A21E7.4020505@mushroomthejournal.com> Message-ID: <5745C80A.20300@hafd.org> If your server takes the message from the user, bundles it in the same request body as the secret key, then transmits it over ssl to the provider's server, you run the risk of allowing a compression oracle attack. The way to avoid this as a programmer is to ensure that the secret key and any user supplied data are not combined in the same request body. For HTTP compression it's sufficient to simply design the protocol so that the key is in a HTTP header field. This won't prevent creating an oracle if compression is used at the ssl level, but that's why ssl compression is deprecated. On 05/16/2016 03:58 PM, Adam Forsyth wrote: > The user of the site only gets to see the input and output of your > code, not the code itself. As long as you are careful with your inputs > & outputs, you won't be making any kind of "trail" to the secret key. > I would re-examine the "code trail" idea entirely, as I don't think it > makes sense. > > > > > On Mon, May 16, 2016 at 2:39 PM, Leon Shernoff > > wrote: > > Thanks, Adam and Rob! > > I'm not worried about transmission -- yes, we have an SSL > certificate etc. My concern is with storage of the API key on the > client's website. > > The service provider in question does things a little differently > from Braintree: it's a two-step process. The client has a secret > API key that sort of serves as an authentication of last resort. > The client sends financial data to service provider along with a > public API key and the service provider sends back a one-time > token that (hopefully) indicates that the proposed transaction has > been checked out and can move forward. Client then returns that > token along with the secret API key to service provider, and money > then actually changes hands. > > The client is running a temp agency, with work being done over > distance. The proposed architecture is that the temps log in to > clients website (which is Wordpress), fill out the amount they are > charging the customer, etc, and hits a button initiating this > complete back-and-forth process. > > My concern is that if the whole process is automated and triggered > by the temp hitting the button, this leaves a code trail to the > secret API key. Sure, the page in question can be protected in > various ways, but there's still a code trail that... well, if > there's a programmatic sequence of steps that involves retrieving > the key, those steps can also be traced by an outsider if they can > get at the page somehow. > > My thought was to have the temp's page merely log the information > (including the returned token) from the temp's payment request > into the Wp database (I'm not worried about the security of > Wordpress). I would then have a completely separate scheduled > process go through these log entries and complete the second part > of the back-and-forth for all of them at once. That way, the > sequence of programmed events that retrieves the key doesn't need > to have any involvement with the public interface at all. This > seems more secure to me -- no code trail. But I don't know what > SOP is in this sort of situation -- or if there is any. Like I > said, I don't know if there's any best practices here or what. Any > help appreciated! :-) > > > Thanks! > > -- > Best regards, > Leon > > "Creative work defines itself; therefore, confront the work." > -- John Cage > > > Leon Shernoff > 1511 E 54th St, Bsmt > Chicago, IL 60615 > > (312) 320-2190 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: From matt at soulrobotic.com Wed May 25 11:26:59 2016 From: matt at soulrobotic.com (Matthew Erickson) Date: Wed, 25 May 2016 15:26:59 +0000 Subject: [Chicago] ChiPy T-shirts In-Reply-To: References: Message-ID: They?re definitely on the tighter side, but not by stupid amounts. They?re American Apparel shirts, if you?re at all familiar with how they fit and shrink. --Matt > On May 25, 2016, at 8:06 AM, Jeremy McMillan wrote: > > I'm between a L and a M. What's the consensus on how these fit/shrink? Relaxed, or tight? > > On Tue, May 24, 2016 at 8:57 AM, > wrote: > Joe - 1 XL, 1 L please. where to send the $30? ...or hand off at the next monthly meeting? Just out of curiosity, what shop is doing the printing? Thanks much. _Andrij > > > > On 2016-05-24 08:30, Joe Jasinski wrote: > >> Hey all, >> >> If you'd like to order a ChiPy T-shirt for the next batch of shirts, please let me know the size and quantity that you want by Friday. The shirts sell for $15. >> >> Joe >> >> -- >> Joe J. Jasinski >> www.joejasinski.com >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 842 bytes Desc: Message signed with OpenPGP using GPGMail URL: From davidpietz at sbcglobal.net Wed May 25 12:00:37 2016 From: davidpietz at sbcglobal.net (David Pietz) Date: Wed, 25 May 2016 11:00:37 -0500 Subject: [Chicago] ChiPy T-shirts In-Reply-To: References: Message-ID: <29A80270-FB76-4D61-8FE8-54601D5E5F04@sbcglobal.net> > Joe - 1 XL, 1 L please. where to send the $30?, David Pietz > > On May 24, 2016, at 08:57, zeroroom at lycos.com wrote: > > Joe - 1 XL, 1 L please. where to send the $30? ...or hand off at the next monthly meeting? Just out of curiosity, what shop is doing the printing? Thanks much. _Andrij > > > > On 2016-05-24 08:30, Joe Jasinski wrote: > >> Hey all, >> >> If you'd like to order a ChiPy T-shirt for the next batch of shirts, please let me know the size and quantity that you want by Friday. The shirts sell for $15. >> >> Joe >> >> -- >> Joe J. Jasinski >> www.joejasinski.com >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: From proba at allstate.com Wed May 25 14:27:02 2016 From: proba at allstate.com (Robare, Phillip (TEKSystems)) Date: Wed, 25 May 2016 18:27:02 +0000 Subject: [Chicago] Writing fizzbuzz for the new century Message-ID: <50869A74BA4F07468AD797C9BFF1FE3E288384B6@A0185-XPO1026-C.ad.allstate.com> Joel Grus (author of O'Reilly's "Data Science from Scratch: First Principles with Python") has written a hilarious post about being asked to write FizzBuzz in a Python interview. So he sets up a neural network. Check out http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/ Of course, as one of the comments points out, if you have to do fizzbuzz in Java there is the Enterprise version of FizzBuzz with all the GoF patterns: https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition. Phil Robare From zitterbewegung at gmail.com Wed May 25 18:29:34 2016 From: zitterbewegung at gmail.com (Joshua Herman) Date: Wed, 25 May 2016 22:29:34 +0000 Subject: [Chicago] Writing fizzbuzz for the new century In-Reply-To: <50869A74BA4F07468AD797C9BFF1FE3E288384B6@A0185-XPO1026-C.ad.allstate.com> References: <50869A74BA4F07468AD797C9BFF1FE3E288384B6@A0185-XPO1026-C.ad.allstate.com> Message-ID: I saw that on Hn . The funniest thing is that at the end the trained tensor flow network doesn't even return the correct values after it is trained. On Wed, May 25, 2016 at 5:09 PM Robare, Phillip (TEKSystems) < proba at allstate.com> wrote: > Joel Grus (author of O'Reilly's "Data Science from Scratch: First > Principles with Python") has written a hilarious post about being asked to > write FizzBuzz in a Python interview. So he sets up a neural network. > Check out http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/ > > Of course, as one of the comments points out, if you have to do fizzbuzz > in Java there is the Enterprise version of FizzBuzz with all the GoF > patterns: > https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition. > > > Phil Robare > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From hundredpercentjuice at gmail.com Wed May 25 20:36:02 2016 From: hundredpercentjuice at gmail.com (JS Irick) Date: Wed, 25 May 2016 19:36:02 -0500 Subject: [Chicago] Writing fizzbuzz for the new century In-Reply-To: References: <50869A74BA4F07468AD797C9BFF1FE3E288384B6@A0185-XPO1026-C.ad.allstate.com> Message-ID: Well yes, that's the thing about probabilistic algorithms.... As an aside, we can all laugh at fizzbuzz, but you'd be shocked just how brazen people are about their skills/accomplishments on a resume. I mean, it's so quick to do fizz buzz, just give a cheeky list comprehension and get on with life: ['fizz'*(x%3==0) + 'buzz'*(x%5==0) or x for x in range(1,100)] I'm sure someone on this list can do an even simpler one with iterators. On Wed, May 25, 2016 at 5:29 PM, Joshua Herman wrote: > I saw that on Hn . The funniest thing is that at the end the trained > tensor flow network doesn't even return the correct values after it is > trained. > On Wed, May 25, 2016 at 5:09 PM Robare, Phillip (TEKSystems) < > proba at allstate.com> wrote: > >> Joel Grus (author of O'Reilly's "Data Science from Scratch: First >> Principles with Python") has written a hilarious post about being asked to >> write FizzBuzz in a Python interview. So he sets up a neural network. >> Check out http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/ >> >> Of course, as one of the comments points out, if you have to do fizzbuzz >> in Java there is the Enterprise version of FizzBuzz with all the GoF >> patterns: >> https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition. >> >> >> Phil Robare >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- ==== JS Irick 312-307-8904 Consultant: truqua.com Coach: atlascrossfit.com Programmer: juicetux.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From mikaeltamillow96 at gmail.com Wed May 25 23:46:01 2016 From: mikaeltamillow96 at gmail.com (Michael Tamillow) Date: Wed, 25 May 2016 22:46:01 -0500 Subject: [Chicago] Writing fizzbuzz for the new century In-Reply-To: References: <50869A74BA4F07468AD797C9BFF1FE3E288384B6@A0185-XPO1026-C.ad.allstate.com> Message-ID: He should have wrote some unit tests first! On Wed, May 25, 2016 at 5:29 PM, Joshua Herman wrote: > I saw that on Hn . The funniest thing is that at the end the trained > tensor flow network doesn't even return the correct values after it is > trained. > On Wed, May 25, 2016 at 5:09 PM Robare, Phillip (TEKSystems) < > proba at allstate.com> wrote: > >> Joel Grus (author of O'Reilly's "Data Science from Scratch: First >> Principles with Python") has written a hilarious post about being asked to >> write FizzBuzz in a Python interview. So he sets up a neural network. >> Check out http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/ >> >> Of course, as one of the comments points out, if you have to do fizzbuzz >> in Java there is the Enterprise version of FizzBuzz with all the GoF >> patterns: >> https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition. >> >> >> Phil Robare >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From hundredpercentjuice at gmail.com Thu May 26 00:13:43 2016 From: hundredpercentjuice at gmail.com (JS Irick) Date: Wed, 25 May 2016 23:13:43 -0500 Subject: [Chicago] Writing fizzbuzz for the new century In-Reply-To: References: <50869A74BA4F07468AD797C9BFF1FE3E288384B6@A0185-XPO1026-C.ad.allstate.com> Message-ID: I can't tell if you're trolling or not. He should have written unit tests for his machine learning program? On the plus side, that's one the best definition of "results oriented" I've heard. On Wed, May 25, 2016 at 10:46 PM, Michael Tamillow < mikaeltamillow96 at gmail.com> wrote: > He should have wrote some unit tests first! > > On Wed, May 25, 2016 at 5:29 PM, Joshua Herman > wrote: > >> I saw that on Hn . The funniest thing is that at the end the trained >> tensor flow network doesn't even return the correct values after it is >> trained. >> On Wed, May 25, 2016 at 5:09 PM Robare, Phillip (TEKSystems) < >> proba at allstate.com> wrote: >> >>> Joel Grus (author of O'Reilly's "Data Science from Scratch: First >>> Principles with Python") has written a hilarious post about being asked to >>> write FizzBuzz in a Python interview. So he sets up a neural network. >>> Check out http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/ >>> >>> Of course, as one of the comments points out, if you have to do fizzbuzz >>> in Java there is the Enterprise version of FizzBuzz with all the GoF >>> patterns: >>> https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition. >>> >>> >>> Phil Robare >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >>> >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- ==== JS Irick 312-307-8904 Consultant: truqua.com Coach: atlascrossfit.com Programmer: juicetux.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From hundredpercentjuice at gmail.com Thu May 26 00:24:16 2016 From: hundredpercentjuice at gmail.com (JS Irick) Date: Wed, 25 May 2016 23:24:16 -0500 Subject: [Chicago] Writing fizzbuzz for the new century In-Reply-To: References: <50869A74BA4F07468AD797C9BFF1FE3E288384B6@A0185-XPO1026-C.ad.allstate.com> Message-ID: This is actually pretty interesting to think about. 1) Are Tensorflow and related libraries actually probabilistic like I'm assuming? My uneducated abstraction is that they iterate over the data set using some sort of randomization to create "rules" then apply them. 2) If so, how do you test them? Do you do multiple iterations of a test and look at the distribution? 3) How do you avoid "local minima", so to speak. I saw a "step size" reference in the article, is this how much the attempted algorithms change each time? Thanks! JS On Wed, May 25, 2016 at 11:13 PM, JS Irick wrote: > I can't tell if you're trolling or not. > > He should have written unit tests for his machine learning program? On > the plus side, that's one the best definition of "results oriented" I've > heard. > > On Wed, May 25, 2016 at 10:46 PM, Michael Tamillow < > mikaeltamillow96 at gmail.com> wrote: > >> He should have wrote some unit tests first! >> >> On Wed, May 25, 2016 at 5:29 PM, Joshua Herman >> wrote: >> >>> I saw that on Hn . The funniest thing is that at the end the trained >>> tensor flow network doesn't even return the correct values after it is >>> trained. >>> On Wed, May 25, 2016 at 5:09 PM Robare, Phillip (TEKSystems) < >>> proba at allstate.com> wrote: >>> >>>> Joel Grus (author of O'Reilly's "Data Science from Scratch: First >>>> Principles with Python") has written a hilarious post about being asked to >>>> write FizzBuzz in a Python interview. So he sets up a neural network. >>>> Check out http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/ >>>> >>>> Of course, as one of the comments points out, if you have to do >>>> fizzbuzz in Java there is the Enterprise version of FizzBuzz with all the >>>> GoF patterns: >>>> https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition. >>>> >>>> >>>> Phil Robare >>>> _______________________________________________ >>>> Chicago mailing list >>>> Chicago at python.org >>>> https://mail.python.org/mailman/listinfo/chicago >>>> >>> >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >>> >>> >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > > > -- > ==== > JS Irick > 312-307-8904 > Consultant: truqua.com > Coach: atlascrossfit.com > Programmer: juicetux.com > -- ==== JS Irick 312-307-8904 Consultant: truqua.com Coach: atlascrossfit.com Programmer: juicetux.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From zitterbewegung at gmail.com Thu May 26 00:44:15 2016 From: zitterbewegung at gmail.com (Joshua Herman) Date: Thu, 26 May 2016 04:44:15 +0000 Subject: [Chicago] Writing fizzbuzz for the new century In-Reply-To: References: <50869A74BA4F07468AD797C9BFF1FE3E288384B6@A0185-XPO1026-C.ad.allstate.com> Message-ID: Dear Irick, To evaluate a model you would validate your model and one way to do that is cross validation. First you need a dataset with the ground truth which would be in this case the input (a number) and a string (a number or Fizz,Buzz,FizzBuzz). You would test it by partitioning your dataset into a training set and a test set and make sure that the model gets the right answer for the test set (70% test set/ 30% training set is a frequently used partition). When training the model sometimes you can get different results so the model is probabilistic. You can avoid a local minima by computing the derivative of the error function and selecting a step size that will reach a minima and not either go past a minima (a step size of too large) or never reach it (a step size of too small). Sincerely, Joshua herman On Wed, May 25, 2016 at 11:24 PM JS Irick wrote: > This is actually pretty interesting to think about. > > 1) Are Tensorflow and related libraries actually probabilistic like I'm > assuming? My uneducated abstraction is that they iterate over the data set > using some sort of randomization to create "rules" then apply them. > 2) If so, how do you test them? Do you do multiple iterations of a test > and look at the distribution? > 3) How do you avoid "local minima", so to speak. I saw a "step size" > reference in the article, is this how much the attempted algorithms change > each time? > > Thanks! > JS > > On Wed, May 25, 2016 at 11:13 PM, JS Irick > wrote: > >> I can't tell if you're trolling or not. >> >> He should have written unit tests for his machine learning program? On >> the plus side, that's one the best definition of "results oriented" I've >> heard. >> >> On Wed, May 25, 2016 at 10:46 PM, Michael Tamillow < >> mikaeltamillow96 at gmail.com> wrote: >> >>> He should have wrote some unit tests first! >>> >>> On Wed, May 25, 2016 at 5:29 PM, Joshua Herman >> > wrote: >>> >>>> I saw that on Hn . The funniest thing is that at the end the trained >>>> tensor flow network doesn't even return the correct values after it is >>>> trained. >>>> On Wed, May 25, 2016 at 5:09 PM Robare, Phillip (TEKSystems) < >>>> proba at allstate.com> wrote: >>>> >>>>> Joel Grus (author of O'Reilly's "Data Science from Scratch: First >>>>> Principles with Python") has written a hilarious post about being asked to >>>>> write FizzBuzz in a Python interview. So he sets up a neural network. >>>>> Check out http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/ >>>>> >>>>> Of course, as one of the comments points out, if you have to do >>>>> fizzbuzz in Java there is the Enterprise version of FizzBuzz with all the >>>>> GoF patterns: >>>>> https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition. >>>>> >>>>> >>>>> Phil Robare >>>>> _______________________________________________ >>>>> Chicago mailing list >>>>> Chicago at python.org >>>>> https://mail.python.org/mailman/listinfo/chicago >>>>> >>>> >>>> _______________________________________________ >>>> Chicago mailing list >>>> Chicago at python.org >>>> https://mail.python.org/mailman/listinfo/chicago >>>> >>>> >>> >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >>> >>> >> >> >> -- >> ==== >> JS Irick >> 312-307-8904 >> Consultant: truqua.com >> Coach: atlascrossfit.com >> Programmer: juicetux.com >> > > > > -- > ==== > JS Irick > 312-307-8904 > Consultant: truqua.com > Coach: atlascrossfit.com > Programmer: juicetux.com > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From thomas.j.johnson at gmail.com Thu May 26 01:16:39 2016 From: thomas.j.johnson at gmail.com (Thomas Johnson) Date: Thu, 26 May 2016 05:16:39 +0000 Subject: [Chicago] Writing fizzbuzz for the new century In-Reply-To: References: <50869A74BA4F07468AD797C9BFF1FE3E288384B6@A0185-XPO1026-C.ad.allstate.com> Message-ID: TensorFlow (and essentially every other computer program you're likely to run into in practice) is totally deterministic, assuming that you set the random seed beforehand. You can of course unit test each individual part of tensorflow (or whatever ML library). For a system test, you could do something like attempt to reproduce published results on simple data sets. There are also tests that are specific to gradient descent algorithms, like "gradient checking" ( http://ufldl.stanford.edu/tutorial/supervised/DebuggingGradientChecking/). The question of local minima is actually pretty interesting, and is an active area of research. Some research shows that local minima are not the primary problem (http://arxiv.org/abs/1406.2572.pdf) or that local minimum actually are equal to global minimums (under some assumptions, https://arxiv.org/abs/1605.07110). See also https://www.reddit.com/r/MachineLearning/comments/3hcijy/is_it_really_appropriate_to_use_a_gradientbased/ for some more discussion on this topic. On Wed, May 25, 2016 at 11:44 PM Joshua Herman wrote: > Dear Irick, > > To evaluate a model you would validate your model and one way to do that > is cross validation. First you need a dataset with the ground truth which > would be in this case the input (a number) and a string (a number or > Fizz,Buzz,FizzBuzz). You would test it by partitioning your dataset into a > training set and a test set and make sure that the model gets the right > answer for the test set (70% test set/ 30% training set is a frequently > used partition). When training the model sometimes you can get different > results so the model is probabilistic. You can avoid a local minima by > computing the derivative of the error function and selecting a step size > that will reach a minima and not either go past a minima (a step size of > too large) or never reach it (a step size of too small). > Sincerely, > Joshua herman > > On Wed, May 25, 2016 at 11:24 PM JS Irick > wrote: > >> This is actually pretty interesting to think about. >> >> 1) Are Tensorflow and related libraries actually probabilistic like I'm >> assuming? My uneducated abstraction is that they iterate over the data set >> using some sort of randomization to create "rules" then apply them. >> 2) If so, how do you test them? Do you do multiple iterations of a test >> and look at the distribution? >> 3) How do you avoid "local minima", so to speak. I saw a "step size" >> reference in the article, is this how much the attempted algorithms change >> each time? >> >> Thanks! >> JS >> >> On Wed, May 25, 2016 at 11:13 PM, JS Irick > > wrote: >> >>> I can't tell if you're trolling or not. >>> >>> He should have written unit tests for his machine learning program? On >>> the plus side, that's one the best definition of "results oriented" I've >>> heard. >>> >>> On Wed, May 25, 2016 at 10:46 PM, Michael Tamillow < >>> mikaeltamillow96 at gmail.com> wrote: >>> >>>> He should have wrote some unit tests first! >>>> >>>> On Wed, May 25, 2016 at 5:29 PM, Joshua Herman < >>>> zitterbewegung at gmail.com> wrote: >>>> >>>>> I saw that on Hn . The funniest thing is that at the end the trained >>>>> tensor flow network doesn't even return the correct values after it is >>>>> trained. >>>>> On Wed, May 25, 2016 at 5:09 PM Robare, Phillip (TEKSystems) < >>>>> proba at allstate.com> wrote: >>>>> >>>>>> Joel Grus (author of O'Reilly's "Data Science from Scratch: First >>>>>> Principles with Python") has written a hilarious post about being asked to >>>>>> write FizzBuzz in a Python interview. So he sets up a neural network. >>>>>> Check out http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/ >>>>>> >>>>>> Of course, as one of the comments points out, if you have to do >>>>>> fizzbuzz in Java there is the Enterprise version of FizzBuzz with all the >>>>>> GoF patterns: >>>>>> https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition. >>>>>> >>>>>> >>>>>> Phil Robare >>>>>> _______________________________________________ >>>>>> Chicago mailing list >>>>>> Chicago at python.org >>>>>> https://mail.python.org/mailman/listinfo/chicago >>>>>> >>>>> >>>>> _______________________________________________ >>>>> Chicago mailing list >>>>> Chicago at python.org >>>>> https://mail.python.org/mailman/listinfo/chicago >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Chicago mailing list >>>> Chicago at python.org >>>> https://mail.python.org/mailman/listinfo/chicago >>>> >>>> >>> >>> >>> -- >>> ==== >>> JS Irick >>> 312-307-8904 >>> Consultant: truqua.com >>> Coach: atlascrossfit.com >>> Programmer: juicetux.com >>> >> >> >> >> -- >> ==== >> JS Irick >> 312-307-8904 >> Consultant: truqua.com >> Coach: atlascrossfit.com >> Programmer: juicetux.com >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mikaeltamillow96 at gmail.com Thu May 26 07:17:56 2016 From: mikaeltamillow96 at gmail.com (Mike Tamillow) Date: Thu, 26 May 2016 06:17:56 -0500 Subject: [Chicago] Writing fizzbuzz for the new century In-Reply-To: References: <50869A74BA4F07468AD797C9BFF1FE3E288384B6@A0185-XPO1026-C.ad.allstate.com> Message-ID: <7165E31D-9808-484C-B68C-16BA074BFB0E@gmail.com> Well, I thought it was more of a joke, but honestly, I can't even tell when I'm trolling these days. The gist of it was "hey, if it's not working, test it more, and make it bigger for starters." At least that way you'll have a gigantic program that passes all the unit tests. No one can argue with lines of code. ...This is the Java users group... Right..? Sent from my iPhone > On May 25, 2016, at 11:13 PM, JS Irick wrote: > > I can't tell if you're trolling or not. > > He should have written unit tests for his machine learning program? On the plus side, that's one the best definition of "results oriented" I've heard. > >> On Wed, May 25, 2016 at 10:46 PM, Michael Tamillow wrote: >> He should have wrote some unit tests first! >> >>> On Wed, May 25, 2016 at 5:29 PM, Joshua Herman wrote: >> >>> I saw that on Hn . The funniest thing is that at the end the trained tensor flow network doesn't even return the correct values after it is trained. >>>> On Wed, May 25, 2016 at 5:09 PM Robare, Phillip (TEKSystems) wrote: >>>> Joel Grus (author of O'Reilly's "Data Science from Scratch: First Principles with Python") has written a hilarious post about being asked to write FizzBuzz in a Python interview. So he sets up a neural network. Check out http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/ >>>> >>>> Of course, as one of the comments points out, if you have to do fizzbuzz in Java there is the Enterprise version of FizzBuzz with all the GoF patterns: https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition. >>>> >>>> >>>> Phil Robare >>>> _______________________________________________ >>>> Chicago mailing list >>>> Chicago at python.org >>>> https://mail.python.org/mailman/listinfo/chicago >>> >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >> >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago > > > > -- > ==== > JS Irick > 312-307-8904 > Consultant: truqua.com > Coach: atlascrossfit.com > Programmer: juicetux.com > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: From brianhray at gmail.com Fri May 27 09:26:59 2016 From: brianhray at gmail.com (Brian Ray) Date: Fri, 27 May 2016 08:26:59 -0500 Subject: [Chicago] Last chance to be awesome Message-ID: Be awesome and Please take my survey! https://www.surveymonkey.com/r/python_hype_mailinglist You can win a diner of your choice. And all respondents get here good karma. Survey closes midnight tonight CT. Sent from my phone -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: From jeremy.mcmillan at gmail.com Fri May 27 09:54:26 2016 From: jeremy.mcmillan at gmail.com (Jeremy McMillan) Date: Fri, 27 May 2016 13:54:26 +0000 Subject: [Chicago] Last chance to be awesome In-Reply-To: References: Message-ID: So loong... There's going to be an age bias in your data based on attention span. On Fri, May 27, 2016, 08:33 Brian Ray wrote: > Be awesome and Please take my survey! > > https://www.surveymonkey.com/r/python_hype_mailinglist > You can win a diner of your choice. And all respondents get here good > karma. > > Survey closes midnight tonight CT. > > Sent from my phone > > > -- > Brian Ray > @brianray > (773) 669-7717 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From brianhray at gmail.com Fri May 27 10:05:33 2016 From: brianhray at gmail.com (Brian Ray) Date: Fri, 27 May 2016 10:05:33 -0400 Subject: [Chicago] Last chance to be awesome In-Reply-To: References: Message-ID: It varies in length based on how interesting you are. Evidently, you are interesting, congrats! On Fri, May 27, 2016 at 9:54 AM, Jeremy McMillan wrote: > So loong... There's going to be an age bias in your data based on > attention span. > > On Fri, May 27, 2016, 08:33 Brian Ray wrote: > >> Be awesome and Please take my survey! >> >> https://www.surveymonkey.com/r/python_hype_mailinglist >> You can win a diner of your choice. And all respondents get here good >> karma. >> >> Survey closes midnight tonight CT. >> >> Sent from my phone >> >> >> -- >> Brian Ray >> @brianray >> (773) 669-7717 >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: From catdude at gmail.com Wed May 25 11:38:10 2016 From: catdude at gmail.com (Dan Mahoney) Date: Wed, 25 May 2016 10:38:10 -0500 Subject: [Chicago] List comprehension question Message-ID: I've got a question about using list comprehensions. I've got a piece of code that is making a MySQL query: sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" c.execute(sql) I'm currently using a loop to get the values into a list: rows = c.fetchall() for row in rows: comm = row[0] since the return value from MySQL is delivered as tuples. I'd like to use a list comprehension to build my final list (no important reason, I just want to learn how). I tried: comm = [x for x in c.fetchall()][0] but that just gives me the first tuple. If I use: comm = [s for x in c.fetchall()] I end up with a list of tuples. Any suggestions as to how I could do this without using a for loop? -- -------------------------- Dan Mahoney catdude at gmail.com Skype: catdude60440 "How you behave towards cats here below determines your status in Heaven." Robert Heinlein "There are two means of refuge from the miseries of life - music and cats" - Albert Schweitzer -------------- next part -------------- An HTML attachment was scrubbed... URL: From hundredpercentjuice at gmail.com Fri May 27 10:39:33 2016 From: hundredpercentjuice at gmail.com (JS Irick) Date: Fri, 27 May 2016 09:39:33 -0500 Subject: [Chicago] Last chance to be awesome In-Reply-To: References: Message-ID: Parts of this survey make no sense: What should I be doing here? [image: Inline image 1] On Fri, May 27, 2016 at 9:05 AM, Brian Ray wrote: > It varies in length based on how interesting you are. Evidently, you are > interesting, congrats! > > On Fri, May 27, 2016 at 9:54 AM, Jeremy McMillan < > jeremy.mcmillan at gmail.com> wrote: > >> So loong... There's going to be an age bias in your data based on >> attention span. >> >> On Fri, May 27, 2016, 08:33 Brian Ray wrote: >> >>> Be awesome and Please take my survey! >>> >>> https://www.surveymonkey.com/r/python_hype_mailinglist >>> You can win a diner of your choice. And all respondents get here good >>> karma. >>> >>> Survey closes midnight tonight CT. >>> >>> Sent from my phone >>> >>> >>> -- >>> Brian Ray >>> @brianray >>> (773) 669-7717 >>> >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >>> >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > > > -- > Brian Ray > @brianray > (773) 669-7717 > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- ==== JS Irick 312-307-8904 Consultant: truqua.com Coach: atlascrossfit.com Programmer: juicetux.com -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 45015 bytes Desc: not available URL: From carl at personnelware.com Fri May 27 11:37:11 2016 From: carl at personnelware.com (Carl Karsten) Date: Fri, 27 May 2016 10:37:11 -0500 Subject: [Chicago] List comprehension question In-Reply-To: References: Message-ID: On Wed, May 25, 2016 at 10:38 AM, Dan Mahoney wrote: > comm = [x for x in c.fetchall()][0] move the 0 to the thing you want to 0... comm = [x[0] for x in c.fetchall()] -- Carl K -------------- next part -------------- An HTML attachment was scrubbed... URL: From dale at codefu.org Fri May 27 11:40:41 2016 From: dale at codefu.org (Dale) Date: Fri, 27 May 2016 10:40:41 -0500 Subject: [Chicago] List comprehension question In-Reply-To: References: Message-ID: I believe you want something like comm = [row[0] for row in c.fetchall()] Keep in mind that the list comprehension is going to evaluate that part before the "for" for each row it gets from the cursor, so you need the [0] inside there, not outside the list comprehension, which would be asking for the first element from the list comprehension?not what you want. Note that c.fetchall() fetches all rows, which might be a waste of memory for large data sets. Psycopg (PostgreSQL DB API library) lets you iterate over a cursor directly: comm = [row[0] for row in c] *In theory* this doesn't have to load all the rows into memory at once. (In practice I bet it does unless you do something special with Psycopg/PostgreSQL.) I'm not sure if you can just iterate over a cursor with your MySQL driver, but there's no harm in trying. Dale On Wed, May 25, 2016 at 10:38 AM, Dan Mahoney wrote: > I've got a question about using list comprehensions. > > I've got a piece of code that is making a MySQL query: > sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" > c.execute(sql) > > I'm currently using a loop to get the values into a list: > rows = c.fetchall() > for row in rows: > comm = row[0] > > since the return value from MySQL is delivered as tuples. I'd like to use > a list comprehension to build my final list (no important reason, I just > want to learn how). I tried: > > comm = [x for x in c.fetchall()][0] > > but that just gives me the first tuple. If I use: > > comm = [s for x in c.fetchall()] > > I end up with a list of tuples. Any suggestions as to how I could do this > without using a for loop? > > > -- > -------------------------- > Dan Mahoney > catdude at gmail.com > Skype: catdude60440 > > "How you behave towards cats here below determines your status in Heaven." > Robert Heinlein > > "There are two means of refuge from the miseries of > life - music and cats" - Albert Schweitzer > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From tanya at tickel.net Fri May 27 12:00:30 2016 From: tanya at tickel.net (Tanya Schlusser) Date: Fri, 27 May 2016 11:00:30 -0500 Subject: [Chicago] List comprehension question Message-ID: > If I use: > > comm = [s for x in c.fetchall()] > > I end up with a list of tuples. Any suggestions as to how I could do > this without using a for loop? You did it! That's a list comprehension ? It has a `for' in the syntax: https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions -------------- next part -------------- An HTML attachment was scrubbed... URL: From catdude at gmail.com Fri May 27 11:46:47 2016 From: catdude at gmail.com (Dan Mahoney) Date: Fri, 27 May 2016 10:46:47 -0500 Subject: [Chicago] List comprehension question In-Reply-To: References: Message-ID: Very cool, thanks to both of you. That makes sense - I guess I'm just suffering from temporary (I hope) brain fade. On Fri, May 27, 2016 at 10:40 AM, Dale wrote: > I believe you want something like > > comm = [row[0] for row in c.fetchall()] > > Keep in mind that the list comprehension is going to evaluate that part > before the "for" for each row it gets from the cursor, so you need the [0] > inside there, not outside the list comprehension, which would be asking for > the first element from the list comprehension?not what you want. > > Note that c.fetchall() fetches all rows, which might be a waste of memory > for large data sets. Psycopg (PostgreSQL DB API library) lets you iterate > over a cursor directly: > > comm = [row[0] for row in c] > > *In theory* this doesn't have to load all the rows into memory at once. > (In practice I bet it does unless you do something special with > Psycopg/PostgreSQL.) I'm not sure if you can just iterate over a cursor > with your MySQL driver, but there's no harm in trying. > > Dale > > > On Wed, May 25, 2016 at 10:38 AM, Dan Mahoney wrote: > >> I've got a question about using list comprehensions. >> >> I've got a piece of code that is making a MySQL query: >> sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" >> c.execute(sql) >> >> I'm currently using a loop to get the values into a list: >> rows = c.fetchall() >> for row in rows: >> comm = row[0] >> >> since the return value from MySQL is delivered as tuples. I'd like to use >> a list comprehension to build my final list (no important reason, I just >> want to learn how). I tried: >> >> comm = [x for x in c.fetchall()][0] >> >> but that just gives me the first tuple. If I use: >> >> comm = [s for x in c.fetchall()] >> >> I end up with a list of tuples. Any suggestions as to how I could do this >> without using a for loop? >> >> >> -- >> -------------------------- >> Dan Mahoney >> catdude at gmail.com >> Skype: catdude60440 >> >> "How you behave towards cats here below determines your status in Heaven." >> Robert Heinlein >> >> "There are two means of refuge from the miseries of >> life - music and cats" - Albert Schweitzer >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- -------------------------- Dan Mahoney catdude at gmail.com Skype: catdude60440 "How you behave towards cats here below determines your status in Heaven." Robert Heinlein "There are two means of refuge from the miseries of life - music and cats" - Albert Schweitzer -------------- next part -------------- An HTML attachment was scrubbed... URL: From jeremy.mcmillan at gmail.com Fri May 27 11:35:17 2016 From: jeremy.mcmillan at gmail.com (Jeremy McMillan) Date: Fri, 27 May 2016 15:35:17 +0000 Subject: [Chicago] Last chance to be awesome In-Reply-To: References: Message-ID: It's a vector of weights! On Fri, May 27, 2016, 10:31 JS Irick wrote: > Parts of this survey make no sense: > > What should I be doing here? > [image: Inline image 1] > > On Fri, May 27, 2016 at 9:05 AM, Brian Ray wrote: > >> It varies in length based on how interesting you are. Evidently, you are >> interesting, congrats! >> >> On Fri, May 27, 2016 at 9:54 AM, Jeremy McMillan < >> jeremy.mcmillan at gmail.com> wrote: >> >>> So loong... There's going to be an age bias in your data based on >>> attention span. >>> >>> On Fri, May 27, 2016, 08:33 Brian Ray wrote: >>> >>>> Be awesome and Please take my survey! >>>> >>>> https://www.surveymonkey.com/r/python_hype_mailinglist >>>> You can win a diner of your choice. And all respondents get here good >>>> karma. >>>> >>>> Survey closes midnight tonight CT. >>>> >>>> Sent from my phone >>>> >>>> >>>> -- >>>> Brian Ray >>>> @brianray >>>> (773) 669-7717 >>>> >>>> _______________________________________________ >>>> Chicago mailing list >>>> Chicago at python.org >>>> https://mail.python.org/mailman/listinfo/chicago >>>> >>> >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >>> >>> >> >> >> -- >> Brian Ray >> @brianray >> (773) 669-7717 >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > > > -- > ==== > JS Irick > 312-307-8904 > Consultant: truqua.com > Coach: atlascrossfit.com > Programmer: juicetux.com > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 45015 bytes Desc: not available URL: From tuss4dbfn at gmail.com Fri May 27 11:48:34 2016 From: tuss4dbfn at gmail.com (Tj Sop) Date: Fri, 27 May 2016 10:48:34 -0500 Subject: [Chicago] List comprehension question In-Reply-To: References: Message-ID: You could potentially turn it into a generator comprehension (which might ease the use of memory) with: comm = (row[0] for row in c.fetchall()) On Fri, May 27, 2016 at 10:40 AM, Dale wrote: > I believe you want something like > > comm = [row[0] for row in c.fetchall()] > > Keep in mind that the list comprehension is going to evaluate that part > before the "for" for each row it gets from the cursor, so you need the [0] > inside there, not outside the list comprehension, which would be asking for > the first element from the list comprehension?not what you want. > > Note that c.fetchall() fetches all rows, which might be a waste of memory > for large data sets. Psycopg (PostgreSQL DB API library) lets you iterate > over a cursor directly: > > comm = [row[0] for row in c] > > *In theory* this doesn't have to load all the rows into memory at once. > (In practice I bet it does unless you do something special with > Psycopg/PostgreSQL.) I'm not sure if you can just iterate over a cursor > with your MySQL driver, but there's no harm in trying. > > Dale > > > On Wed, May 25, 2016 at 10:38 AM, Dan Mahoney wrote: > >> I've got a question about using list comprehensions. >> >> I've got a piece of code that is making a MySQL query: >> sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" >> c.execute(sql) >> >> I'm currently using a loop to get the values into a list: >> rows = c.fetchall() >> for row in rows: >> comm = row[0] >> >> since the return value from MySQL is delivered as tuples. I'd like to use >> a list comprehension to build my final list (no important reason, I just >> want to learn how). I tried: >> >> comm = [x for x in c.fetchall()][0] >> >> but that just gives me the first tuple. If I use: >> >> comm = [s for x in c.fetchall()] >> >> I end up with a list of tuples. Any suggestions as to how I could do this >> without using a for loop? >> >> >> -- >> -------------------------- >> Dan Mahoney >> catdude at gmail.com >> Skype: catdude60440 >> >> "How you behave towards cats here below determines your status in Heaven." >> Robert Heinlein >> >> "There are two means of refuge from the miseries of >> life - music and cats" - Albert Schweitzer >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- TJ Soptame http: //tjsoptame.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From carl at personnelware.com Fri May 27 12:32:44 2016 From: carl at personnelware.com (Carl Karsten) Date: Fri, 27 May 2016 11:32:44 -0500 Subject: [Chicago] List comprehension question In-Reply-To: References: Message-ID: Now that we have answered your question.... Stop doing all this and use an ORM. manual way: sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" c.execute(sql) comm = [x[0] for x in c.fetchall()] for c in comm: print( c ) ORMy way: class Aircraft_state(models.Model): airline = models.CharField(max_length=2) tail = models.CharField(max_length=20) states = Aircraft_state.objects.filter( airline='WN'" ) for state in states: print( state.tail ) All of the SQL and stuff has been done in the models.Model class. This includes generating and executing the CREATE TABLE commands to build a new db, parametrizing the parameters so no SQL injection exploits or mistakes, lazy reads so it ie less likely to read a bunch of data that never gets used, etc. And you write less code. less code is easier to read and debug. On Fri, May 27, 2016 at 10:46 AM, Dan Mahoney wrote: > Very cool, thanks to both of you. That makes sense - I guess I'm just > suffering from temporary (I hope) brain fade. > > On Fri, May 27, 2016 at 10:40 AM, Dale wrote: > >> I believe you want something like >> >> comm = [row[0] for row in c.fetchall()] >> >> Keep in mind that the list comprehension is going to evaluate that part >> before the "for" for each row it gets from the cursor, so you need the [0] >> inside there, not outside the list comprehension, which would be asking for >> the first element from the list comprehension?not what you want. >> >> Note that c.fetchall() fetches all rows, which might be a waste of memory >> for large data sets. Psycopg (PostgreSQL DB API library) lets you iterate >> over a cursor directly: >> >> comm = [row[0] for row in c] >> >> *In theory* this doesn't have to load all the rows into memory at once. >> (In practice I bet it does unless you do something special with >> Psycopg/PostgreSQL.) I'm not sure if you can just iterate over a cursor >> with your MySQL driver, but there's no harm in trying. >> >> Dale >> >> >> On Wed, May 25, 2016 at 10:38 AM, Dan Mahoney wrote: >> >>> I've got a question about using list comprehensions. >>> >>> I've got a piece of code that is making a MySQL query: >>> sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" >>> c.execute(sql) >>> >>> I'm currently using a loop to get the values into a list: >>> rows = c.fetchall() >>> for row in rows: >>> comm = row[0] >>> >>> since the return value from MySQL is delivered as tuples. I'd like to >>> use a list comprehension to build my final list (no important reason, I >>> just want to learn how). I tried: >>> >>> comm = [x for x in c.fetchall()][0] >>> >>> but that just gives me the first tuple. If I use: >>> >>> comm = [s for x in c.fetchall()] >>> >>> I end up with a list of tuples. Any suggestions as to how I could do >>> this without using a for loop? >>> >>> >>> -- >>> -------------------------- >>> Dan Mahoney >>> catdude at gmail.com >>> Skype: catdude60440 >>> >>> "How you behave towards cats here below determines your status in >>> Heaven." >>> Robert Heinlein >>> >>> "There are two means of refuge from the miseries of >>> life - music and cats" - Albert Schweitzer >>> >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >>> >>> >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > > > -- > -------------------------- > Dan Mahoney > catdude at gmail.com > Skype: catdude60440 > > "How you behave towards cats here below determines your status in Heaven." > Robert Heinlein > > "There are two means of refuge from the miseries of > life - music and cats" - Albert Schweitzer > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- Carl K -------------- next part -------------- An HTML attachment was scrubbed... URL: From adam at adamforsyth.net Fri May 27 12:51:20 2016 From: adam at adamforsyth.net (Adam Forsyth) Date: Fri, 27 May 2016 11:51:20 -0500 Subject: [Chicago] List comprehension question In-Reply-To: References: Message-ID: Sometimes an ORM is useful, but there are lots of cases where it can't do what you want, or encourages tight coupling of your logic and data model -- which is bad when your data model has to change. See https://github.com/kennethreitz/records for a nice wrapper around raw SQL. On Fri, May 27, 2016 at 11:32 AM, Carl Karsten wrote: > Now that we have answered your question.... > > Stop doing all this and use an ORM. > > manual way: > sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" > c.execute(sql) > comm = [x[0] for x in c.fetchall()] > for c in comm: > print( c ) > > ORMy way: > > class Aircraft_state(models.Model): > airline = models.CharField(max_length=2) > tail = models.CharField(max_length=20) > > states = Aircraft_state.objects.filter( airline='WN'" ) > for state in states: > print( state.tail ) > > > All of the SQL and stuff has been done in the models.Model class. This > includes generating and executing the CREATE TABLE commands to build a new > db, parametrizing the parameters so no SQL injection exploits or mistakes, > lazy reads so it ie less likely to read a bunch of data that never gets > used, etc. > > And you write less code. less code is easier to read and debug. > > > > > > > On Fri, May 27, 2016 at 10:46 AM, Dan Mahoney wrote: > >> Very cool, thanks to both of you. That makes sense - I guess I'm just >> suffering from temporary (I hope) brain fade. >> >> On Fri, May 27, 2016 at 10:40 AM, Dale wrote: >> >>> I believe you want something like >>> >>> comm = [row[0] for row in c.fetchall()] >>> >>> Keep in mind that the list comprehension is going to evaluate that part >>> before the "for" for each row it gets from the cursor, so you need the [0] >>> inside there, not outside the list comprehension, which would be asking for >>> the first element from the list comprehension?not what you want. >>> >>> Note that c.fetchall() fetches all rows, which might be a waste of >>> memory for large data sets. Psycopg (PostgreSQL DB API library) lets you >>> iterate over a cursor directly: >>> >>> comm = [row[0] for row in c] >>> >>> *In theory* this doesn't have to load all the rows into memory at once. >>> (In practice I bet it does unless you do something special with >>> Psycopg/PostgreSQL.) I'm not sure if you can just iterate over a cursor >>> with your MySQL driver, but there's no harm in trying. >>> >>> Dale >>> >>> >>> On Wed, May 25, 2016 at 10:38 AM, Dan Mahoney wrote: >>> >>>> I've got a question about using list comprehensions. >>>> >>>> I've got a piece of code that is making a MySQL query: >>>> sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" >>>> c.execute(sql) >>>> >>>> I'm currently using a loop to get the values into a list: >>>> rows = c.fetchall() >>>> for row in rows: >>>> comm = row[0] >>>> >>>> since the return value from MySQL is delivered as tuples. I'd like to >>>> use a list comprehension to build my final list (no important reason, I >>>> just want to learn how). I tried: >>>> >>>> comm = [x for x in c.fetchall()][0] >>>> >>>> but that just gives me the first tuple. If I use: >>>> >>>> comm = [s for x in c.fetchall()] >>>> >>>> I end up with a list of tuples. Any suggestions as to how I could do >>>> this without using a for loop? >>>> >>>> >>>> -- >>>> -------------------------- >>>> Dan Mahoney >>>> catdude at gmail.com >>>> Skype: catdude60440 >>>> >>>> "How you behave towards cats here below determines your status in >>>> Heaven." >>>> Robert Heinlein >>>> >>>> "There are two means of refuge from the miseries of >>>> life - music and cats" - Albert Schweitzer >>>> >>>> _______________________________________________ >>>> Chicago mailing list >>>> Chicago at python.org >>>> https://mail.python.org/mailman/listinfo/chicago >>>> >>>> >>> >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >>> >>> >> >> >> -- >> -------------------------- >> Dan Mahoney >> catdude at gmail.com >> Skype: catdude60440 >> >> "How you behave towards cats here below determines your status in Heaven." >> Robert Heinlein >> >> "There are two means of refuge from the miseries of >> life - music and cats" - Albert Schweitzer >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > > > -- > Carl K > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From proba at allstate.com Fri May 27 15:55:23 2016 From: proba at allstate.com (Robare, Phillip (TEKSystems)) Date: Fri, 27 May 2016 19:55:23 +0000 Subject: [Chicago] List comprehension question In-Reply-To: References: Message-ID: <50869A74BA4F07468AD797C9BFF1FE3E2883879E@A0185-XPO1026-C.ad.allstate.com> In my experience ORMs are good for the sort of simple filter and projection type of queries we have here. And for those queries they can really help productivity as Carl points out. As soon as you have the possibility of the SQL optimizer having multiple paths I have found the ORM just gets in the way of writing a good query. Then the O in ORM stands for Obfuscation and you spend as much time figuring out how to present the query to the ORM as it takes to write the code in SQL. And later maintainers can understand the SQL much more readily than the manipulations squirrelled away in the connector class can be understood. On the other hand I have worked with people with years of experience in Django?s ORM or Psycopg and they could produce and maintain the ORM code quite efficiently. The rest of the team, with less experience, just had to take their word for it that this was the way to do it and not break anything. Phil Robare From: Chicago [mailto:chicago-bounces+proba=allstate.com at python.org] On Behalf Of Adam Forsyth Sent: Friday, May 27, 2016 11:51 AM To: The Chicago Python Users Group Subject: Re: [Chicago] List comprehension question Sometimes an ORM is useful, but there are lots of cases where it can't do what you want, or encourages tight coupling of your logic and data model -- which is bad when your data model has to change. See https://github.com/kennethreitz/records for a nice wrapper around raw SQL. On Fri, May 27, 2016 at 11:32 AM, Carl Karsten > wrote: Now that we have answered your question.... Stop doing all this and use an ORM. manual way: sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" c.execute(sql) comm = [x[0] for x in c.fetchall()] for c in comm: print( c ) ORMy way: class Aircraft_state(models.Model): airline = models.CharField(max_length=2) tail = models.CharField(max_length=20) states = Aircraft_state.objects.filter( airline='WN'" ) for state in states: print( state.tail ) All of the SQL and stuff has been done in the models.Model class. This includes generating and executing the CREATE TABLE commands to build a new db, parametrizing the parameters so no SQL injection exploits or mistakes, lazy reads so it ie less likely to read a bunch of data that never gets used, etc. And you write less code. less code is easier to read and debug. On Fri, May 27, 2016 at 10:46 AM, Dan Mahoney > wrote: Very cool, thanks to both of you. That makes sense - I guess I'm just suffering from temporary (I hope) brain fade. On Fri, May 27, 2016 at 10:40 AM, Dale > wrote: I believe you want something like comm = [row[0] for row in c.fetchall()] Keep in mind that the list comprehension is going to evaluate that part before the "for" for each row it gets from the cursor, so you need the [0] inside there, not outside the list comprehension, which would be asking for the first element from the list comprehension?not what you want. Note that c.fetchall() fetches all rows, which might be a waste of memory for large data sets. Psycopg (PostgreSQL DB API library) lets you iterate over a cursor directly: comm = [row[0] for row in c] In theory this doesn't have to load all the rows into memory at once. (In practice I bet it does unless you do something special with Psycopg/PostgreSQL.) I'm not sure if you can just iterate over a cursor with your MySQL driver, but there's no harm in trying. Dale On Wed, May 25, 2016 at 10:38 AM, Dan Mahoney > wrote: I've got a question about using list comprehensions. I've got a piece of code that is making a MySQL query: sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" c.execute(sql) I'm currently using a loop to get the values into a list: rows = c.fetchall() for row in rows: comm = row[0] since the return value from MySQL is delivered as tuples. I'd like to use a list comprehension to build my final list (no important reason, I just want to learn how). I tried: comm = [x for x in c.fetchall()][0] but that just gives me the first tuple. If I use: comm = [s for x in c.fetchall()] I end up with a list of tuples. Any suggestions as to how I could do this without using a for loop? -- -------------------------- Dan Mahoney catdude at gmail.com Skype: catdude60440 "How you behave towards cats here below determines your status in Heaven." Robert Heinlein "There are two means of refuge from the miseries of life - music and cats" - Albert Schweitzer _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago -- -------------------------- Dan Mahoney catdude at gmail.com Skype: catdude60440 "How you behave towards cats here below determines your status in Heaven." Robert Heinlein "There are two means of refuge from the miseries of life - music and cats" - Albert Schweitzer _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago -- Carl K _______________________________________________ Chicago mailing list Chicago at python.org https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: From carl at personnelware.com Fri May 27 18:35:43 2016 From: carl at personnelware.com (Carl Karsten) Date: Fri, 27 May 2016 17:35:43 -0500 Subject: [Chicago] List comprehension question In-Reply-To: <50869A74BA4F07468AD797C9BFF1FE3E2883879E@A0185-XPO1026-C.ad.allstate.com> References: <50869A74BA4F07468AD797C9BFF1FE3E2883879E@A0185-XPO1026-C.ad.allstate.com> Message-ID: To add to the soup.... ORMs are the future, don't fight it. First my resume: hopefully you find this interesting. I consider myself fluent in 6502 and 6809 assembly, when I looked at 8088, 80286 and 68000 I was not put off. I have written C professionally and had my patches to an open source C++ project accepted. From what I hear, it is hard to write assembly code that is better than compiled C because the compilers can do optimizations that are hard for a human, maybe because brute force? I am also fluent in SQL. I have studied the SQL97 spec to try and figure out what should happen when you ORDER BY with null's. (spoiler alert: it is left up to the implementation. I think this means they couldn't come to a consensus and gave up.) I have written frameworky code to construct SQL commands, mostly WHERE clauses. I have studded the lex/yack syntax definition files in hopes to parse SQL commands back into an object representation so I could augment them. (don't try to write your own parser, you can only get 90% there, and it is the 10% that is hard and what I needed to fiddle with anyway.) I can also rant about Python's db-api spec and how parameter syntax is another implementation detail which means everyone has to write a layer of drivers to handle all the implementations of ? and {} and % and whatever syntax the authors dream up. Gee thanks. /resume However, I kinda cringe at the idea of ever using those skills again. I much prefer Python over C, even if there are parts that would run faster if I wrote them in C. I suspect my Python version will be more maintainable than anyone's C version. This is because Python is a very well designed implemented language. Same with SQL. Only once in the last 3 years have I coded SQL: (veyepar) carl at twist:~/src/veyepar$ ack-grep "\.raw\(" dj/main/views.py 1678: raw_files=Raw_File.objects.raw( 1729: episodes=Episode.objects.raw('select distinct e1.* from main_episode e1, main_episode e2 where e1.id != e2.id and e1.starte2.start and e1.location_id=e2.location_id and e1.show_id=%s and e2.show_id=%s order by e1.location_id, e1.start', [show.id,show.id]) (That first one is pretty much the same as the 2nd one) I did that because I couldn't figure out the ORM code to do it. (If someone can give me the ORM code to do that, I'll be happy to give it a whirl.) This is in an app with a bunch of views and stuff: (veyepar) carl at twist:~/src/veyepar$ grep "^def " dj/main/views.py |wc 49 139 1901 I think ORMs are currently pretty good but will get better over the next decade. Maybe something new will take their place, but it will be some abstraction or whatever that is easier to work with than SQL. ORMs kinda struggle to work well with NoSQL db. They work, but I think they restrict things to the point of losing most of the benefits of NoSQL. (I guess. I have only made videos of such things, never got my hands dirty.) So... There are some good augments against using an ORM, but I think they are the way to go right from the start. Like me, you may need something they can't do and you are forced to code SQL, but make that the exception not the norm. On Fri, May 27, 2016 at 2:55 PM, Robare, Phillip (TEKSystems) < proba at allstate.com> wrote: > In my experience ORMs are good for the sort of simple filter and > projection type of queries we have here. And for those queries they can > really help productivity as Carl points out. As soon as you have the > possibility of the SQL optimizer having multiple paths I have found the ORM > just gets in the way of writing a good query. Then the O in ORM stands for > Obfuscation and you spend as much time figuring out how to present the > query to the ORM as it takes to write the code in SQL. And later > maintainers can understand the SQL much more readily than the manipulations > squirrelled away in the connector class can be understood. > > > > On the other hand I have worked with people with years of experience in > Django?s ORM or Psycopg and they could produce and maintain the ORM code > quite efficiently. The rest of the team, with less experience, just had > to take their word for it that this was the way to do it and not break > anything. > > > > Phil Robare > > > > *From:* Chicago [mailto:chicago-bounces+proba=allstate.com at python.org] *On > Behalf Of *Adam Forsyth > *Sent:* Friday, May 27, 2016 11:51 AM > *To:* The Chicago Python Users Group > *Subject:* Re: [Chicago] List comprehension question > > > > Sometimes an ORM is useful, but there are lots of cases where it can't do > what you want, or encourages tight coupling of your logic and data model -- > which is bad when your data model has to change. > > See https://github.com/kennethreitz/records > > for a nice wrapper around raw SQL. > > > > On Fri, May 27, 2016 at 11:32 AM, Carl Karsten > wrote: > > Now that we have answered your question.... > > Stop doing all this and use an ORM. > > manual way: > sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" > c.execute(sql) > comm = [x[0] for x in c.fetchall()] > > for c in comm: > > print( c ) > > > > ORMy way: > > class Aircraft_state(models.Model): > airline = models.CharField(max_length=2) > tail = models.CharField(max_length=20) > > states = Aircraft_state.objects.filter( airline='WN'" ) > > for state in states: > > print( state.tail ) > > > > All of the SQL and stuff has been done in the models.Model class. This > includes generating and executing the CREATE TABLE commands to build a new > db, parametrizing the parameters so no SQL injection exploits or mistakes, > lazy reads so it ie less likely to read a bunch of data that never gets > used, etc. > > And you write less code. less code is easier to read and debug. > > > > > > > > > On Fri, May 27, 2016 at 10:46 AM, Dan Mahoney wrote: > > Very cool, thanks to both of you. That makes sense - I guess I'm just > suffering from temporary (I hope) brain fade. > > > > On Fri, May 27, 2016 at 10:40 AM, Dale wrote: > > I believe you want something like > > > > comm = [row[0] for row in c.fetchall()] > > > > Keep in mind that the list comprehension is going to evaluate that part > before the "for" for each row it gets from the cursor, so you need the [0] > inside there, not outside the list comprehension, which would be asking for > the first element from the list comprehension?not what you want. > > > > Note that c.fetchall() fetches all rows, which might be a waste of memory > for large data sets. Psycopg (PostgreSQL DB API library) lets you iterate > over a cursor directly: > > > > comm = [row[0] for row in c] > > > > *In theory* this doesn't have to load all the rows into memory at once. > (In practice I bet it does unless you do something special with > Psycopg/PostgreSQL.) I'm not sure if you can just iterate over a cursor > with your MySQL driver, but there's no harm in trying. > > > > Dale > > > > > > On Wed, May 25, 2016 at 10:38 AM, Dan Mahoney wrote: > > I've got a question about using list comprehensions. > > I've got a piece of code that is making a MySQL query: > sql = "SELECT tail FROM aircraft_state WHERE airline='WN'" > > c.execute(sql) > > I'm currently using a loop to get the values into a list: > > rows = c.fetchall() > > for row in rows: > > comm = row[0] > > > > since the return value from MySQL is delivered as tuples. I'd like to use > a list comprehension to build my final list (no important reason, I just > want to learn how). I tried: > > comm = [x for x in c.fetchall()][0] > > but that just gives me the first tuple. If I use: > > comm = [s for x in c.fetchall()] > > I end up with a list of tuples. Any suggestions as to how I could do this > without using a for loop? > > > -- > > -------------------------- > Dan Mahoney > catdude at gmail.com > > Skype: catdude60440 > > > "How you behave towards cats here below determines your status in Heaven." > Robert Heinlein > > "There are two means of refuge from the miseries of > life - music and cats" - Albert Schweitzer > > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > > > > -- > > -------------------------- > Dan Mahoney > catdude at gmail.com > > Skype: catdude60440 > > > "How you behave towards cats here below determines your status in Heaven." > Robert Heinlein > > "There are two means of refuge from the miseries of > life - music and cats" - Albert Schweitzer > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > > > > -- > > Carl K > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- Carl K -------------- next part -------------- An HTML attachment was scrubbed... URL: From brianhray at gmail.com Fri May 27 12:26:25 2016 From: brianhray at gmail.com (Brian Ray) Date: Fri, 27 May 2016 12:26:25 -0400 Subject: [Chicago] Last chance to be awesome In-Reply-To: References: Message-ID: You rank the languages that you used (if any) during that time frame. If you primary used Python, that is 1. And if you also used C++, but to a lesser degree then that is 2. On Fri, May 27, 2016 at 10:39 AM, JS Irick wrote: > Parts of this survey make no sense: > > What should I be doing here? > [image: Inline image 1] > > On Fri, May 27, 2016 at 9:05 AM, Brian Ray wrote: > >> It varies in length based on how interesting you are. Evidently, you are >> interesting, congrats! >> >> On Fri, May 27, 2016 at 9:54 AM, Jeremy McMillan < >> jeremy.mcmillan at gmail.com> wrote: >> >>> So loong... There's going to be an age bias in your data based on >>> attention span. >>> >>> On Fri, May 27, 2016, 08:33 Brian Ray wrote: >>> >>>> Be awesome and Please take my survey! >>>> >>>> https://www.surveymonkey.com/r/python_hype_mailinglist >>>> You can win a diner of your choice. And all respondents get here good >>>> karma. >>>> >>>> Survey closes midnight tonight CT. >>>> >>>> Sent from my phone >>>> >>>> >>>> -- >>>> Brian Ray >>>> @brianray >>>> (773) 669-7717 >>>> >>>> _______________________________________________ >>>> Chicago mailing list >>>> Chicago at python.org >>>> https://mail.python.org/mailman/listinfo/chicago >>>> >>> >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >>> >>> >> >> >> -- >> Brian Ray >> @brianray >> (773) 669-7717 >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago >> >> > > > -- > ==== > JS Irick > 312-307-8904 > Consultant: truqua.com > Coach: atlascrossfit.com > Programmer: juicetux.com > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > > -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 45015 bytes Desc: not available URL: From mikaeltamillow96 at gmail.com Fri May 27 23:31:36 2016 From: mikaeltamillow96 at gmail.com (Michael Tamillow) Date: Fri, 27 May 2016 22:31:36 -0500 Subject: [Chicago] Last chance to be awesome In-Reply-To: References: Message-ID: <767FABCA-02FC-456E-99D5-7503A9F7AA26@gmail.com> I hire a Mongolian to write my Python, where does that rank? Sent from my iPhone > On May 27, 2016, at 11:26 AM, Brian Ray wrote: > > You rank the languages that you used (if any) during that time frame. If you primary used Python, that is 1. And if you also used C++, but to a lesser degree then that is 2. > > > >> On Fri, May 27, 2016 at 10:39 AM, JS Irick wrote: >> Parts of this survey make no sense: >> >> What should I be doing here? >> >> >>> On Fri, May 27, 2016 at 9:05 AM, Brian Ray wrote: >>> It varies in length based on how interesting you are. Evidently, you are interesting, congrats! >>> >>>> On Fri, May 27, 2016 at 9:54 AM, Jeremy McMillan wrote: >>>> So loong... There's going to be an age bias in your data based on attention span. >>>> >>>> >>>>> On Fri, May 27, 2016, 08:33 Brian Ray wrote: >>>>> Be awesome and Please take my survey! >>>>> https://www.surveymonkey.com/r/python_hype_mailinglist >>>>> >>>>> You can win a diner of your choice. And all respondents get here good karma. >>>>> >>>>> Survey closes midnight tonight CT. >>>>> >>>>> Sent from my phone >>>>> >>>>> >>>>> -- >>>>> Brian Ray >>>>> @brianray >>>>> (773) 669-7717 >>>>> >>>>> _______________________________________________ >>>>> Chicago mailing list >>>>> Chicago at python.org >>>>> https://mail.python.org/mailman/listinfo/chicago >>>> >>>> _______________________________________________ >>>> Chicago mailing list >>>> Chicago at python.org >>>> https://mail.python.org/mailman/listinfo/chicago >>> >>> >>> >>> -- >>> Brian Ray >>> @brianray >>> (773) 669-7717 >>> >>> _______________________________________________ >>> Chicago mailing list >>> Chicago at python.org >>> https://mail.python.org/mailman/listinfo/chicago >> >> >> >> -- >> ==== >> JS Irick >> 312-307-8904 >> Consultant: truqua.com >> Coach: atlascrossfit.com >> Programmer: juicetux.com >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago > > > > -- > Brian Ray > @brianray > (773) 669-7717 > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago -------------- next part -------------- An HTML attachment was scrubbed... URL: From brianhray at gmail.com Mon May 30 16:12:20 2016 From: brianhray at gmail.com (Brian Ray) Date: Mon, 30 May 2016 16:12:20 -0400 Subject: [Chicago] More RSVPs added for happy hour Message-ID: https://www.eventbrite.com/e/combined-python-user-groups-startup-row-happy-hour-tickets-25250738639?aff=eiospostshreclip&ref=eiospostshreclip -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: From brianhray at gmail.com Mon May 30 18:11:48 2016 From: brianhray at gmail.com (Brian Ray) Date: Mon, 30 May 2016 18:11:48 -0400 Subject: [Chicago] Pycon Happy Hour Message-ID: Don just opened more tickets for those attending Pycon: https://www.eventbrite.com/e/combined-python-user-groups-startup-row-happy-hour-tickets-25250738639?aff=eiospostshreclip&ref=eiospostshreclip -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: From eevel.weezel at gmail.com Mon May 30 23:10:33 2016 From: eevel.weezel at gmail.com (eevel.weezel at gmail.com) Date: Mon, 30 May 2016 22:10:33 -0500 Subject: [Chicago] Vancouver Python Day Message-ID: <3873680e-db74-4010-9892-9be4c7a3ff91@gmail.com> http://vanpyday.com If you're hanging out in Portland until Saturday, Vancouver Python is having a one-day conference. Contact Bryan Chow regarding discounted tickets, bryan at fullfactor.com. Sent from my Cyanogen phone -------------- next part -------------- An HTML attachment was scrubbed... URL: From shekay at pobox.com Tue May 31 14:14:36 2016 From: shekay at pobox.com (sheila miguez) Date: Tue, 31 May 2016 13:14:36 -0500 Subject: [Chicago] Python Office Hours this Wednesday at Pumping Station: One Message-ID: Hi everyone still in the area this week, PYOO is tomorrow at PS1. You don't need to RSVP, but it is helpful to get an idea of the size of the group. http://www.meetup.com/ChicagoPythonistas/events/231182880/ Ps. There are other events going on at the space tomorrow, check https://pumpingstationone.org/events/ to for details lockpicking and music. -- shekay at pobox.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From proba at allstate.com Tue May 31 19:13:51 2016 From: proba at allstate.com (Robare, Phillip (TEKSystems)) Date: Tue, 31 May 2016 23:13:51 +0000 Subject: [Chicago] May's Collections Module talk Message-ID: <50869A74BA4F07468AD797C9BFF1FE3E28838A2D@A0185-XPO1026-C.ad.allstate.com> I have put the files from my May 12th meeting talk on the Collections module up on github: https://github.com/verisimilidude/TheCollectionsModule The one exception is the data file I used, the City of Chicago's building permits data. I have a file in the archive about how to download that data. Phil Robare TEK Systems / Allstate QR&A 847-667-0431 D2W-722D From bob.haugen at gmail.com Tue May 31 19:18:57 2016 From: bob.haugen at gmail.com (Bob Haugen) Date: Tue, 31 May 2016 18:18:57 -0500 Subject: [Chicago] May's Collections Module talk In-Reply-To: <50869A74BA4F07468AD797C9BFF1FE3E28838A2D@A0185-XPO1026-C.ad.allstate.com> References: <50869A74BA4F07468AD797C9BFF1FE3E28838A2D@A0185-XPO1026-C.ad.allstate.com> Message-ID: That's really educational for a self-taught sloppy python programmer. Thank you very much. On Tue, May 31, 2016 at 6:13 PM, Robare, Phillip (TEKSystems) wrote: > I have put the files from my May 12th meeting talk on the Collections module up on github: https://github.com/verisimilidude/TheCollectionsModule > > The one exception is the data file I used, the City of Chicago's building permits data. I have a file in the archive about how to download that data. > > Phil Robare > TEK Systems / Allstate QR&A > 847-667-0431 > D2W-722D > > > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago From mikaeltamillow96 at gmail.com Tue May 31 19:23:12 2016 From: mikaeltamillow96 at gmail.com (Michael Tamillow) Date: Tue, 31 May 2016 18:23:12 -0500 Subject: [Chicago] May's Collections Module talk In-Reply-To: References: <50869A74BA4F07468AD797C9BFF1FE3E28838A2D@A0185-XPO1026-C.ad.allstate.com> Message-ID: <7836FE0C-1E05-4803-A6BA-EC7CE1584CF9@gmail.com> Yeah, I second what Bob said. You kicked as+ Sent from my iPhone > On May 31, 2016, at 6:18 PM, Bob Haugen wrote: > > That's really educational for a self-taught sloppy python programmer. > Thank you very much. > > On Tue, May 31, 2016 at 6:13 PM, Robare, Phillip (TEKSystems) > wrote: >> I have put the files from my May 12th meeting talk on the Collections module up on github: https://github.com/verisimilidude/TheCollectionsModule >> >> The one exception is the data file I used, the City of Chicago's building permits data. I have a file in the archive about how to download that data. >> >> Phil Robare >> TEK Systems / Allstate QR&A >> 847-667-0431 >> D2W-722D >> >> >> _______________________________________________ >> Chicago mailing list >> Chicago at python.org >> https://mail.python.org/mailman/listinfo/chicago > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago From zitterbewegung at gmail.com Tue May 31 20:11:54 2016 From: zitterbewegung at gmail.com (Joshua Herman) Date: Wed, 01 Jun 2016 00:11:54 +0000 Subject: [Chicago] May's Collections Module talk In-Reply-To: <7836FE0C-1E05-4803-A6BA-EC7CE1584CF9@gmail.com> References: <50869A74BA4F07468AD797C9BFF1FE3E28838A2D@A0185-XPO1026-C.ad.allstate.com> <7836FE0C-1E05-4803-A6BA-EC7CE1584CF9@gmail.com> Message-ID: Yes it was a very interesting and easy to understand what you were talking about great presentation. Also good practical examples. On Tue, May 31, 2016 at 6:23 PM Michael Tamillow wrote: > Yeah, I second what Bob said. You kicked as+ > > Sent from my iPhone > > > On May 31, 2016, at 6:18 PM, Bob Haugen wrote: > > > > That's really educational for a self-taught sloppy python programmer. > > Thank you very much. > > > > On Tue, May 31, 2016 at 6:13 PM, Robare, Phillip (TEKSystems) > > wrote: > >> I have put the files from my May 12th meeting talk on the Collections > module up on github: > https://github.com/verisimilidude/TheCollectionsModule > >> > >> The one exception is the data file I used, the City of Chicago's > building permits data. I have a file in the archive about how to download > that data. > >> > >> Phil Robare > >> TEK Systems / Allstate QR&A > >> 847-667-0431 > >> D2W-722D > >> > >> > >> _______________________________________________ > >> Chicago mailing list > >> Chicago at python.org > >> https://mail.python.org/mailman/listinfo/chicago > > _______________________________________________ > > Chicago mailing list > > Chicago at python.org > > https://mail.python.org/mailman/listinfo/chicago > _______________________________________________ > Chicago mailing list > Chicago at python.org > https://mail.python.org/mailman/listinfo/chicago > -------------- next part -------------- An HTML attachment was scrubbed... URL: From geoffbrown at comcast.net Tue May 31 20:25:15 2016 From: geoffbrown at comcast.net (Geoff Brown) Date: Tue, 31 May 2016 17:25:15 -0700 Subject: [Chicago] Free Ticket to the Portland Art Museum dinner In-Reply-To: References: <50869A74BA4F07468AD797C9BFF1FE3E28838A2D@A0185-XPO1026-C.ad.allstate.com> Message-ID: <574E2B6B.8000708@comcast.net> Hello fellow Chipy members at Pycon. I'm heading out on an earlier flight tomorrow and won't be able to attend Portland Art museum dinnner so I've got a free dinner ticket. Its sold out and it sounds like a terrific time. First come first serve! Email me at geoffbrown.w at gmail.com. I can meet you tomorrow at Pycon before noon. From brianhray at gmail.com Tue May 31 16:44:30 2016 From: brianhray at gmail.com (Brian Ray) Date: Tue, 31 May 2016 16:44:30 -0400 Subject: [Chicago] Missed it: mets organizers In-Reply-To: References: <574C8185.1080603@treyhunner.com> Message-ID: It's looking like wedged into B114 at 3pm? -- Brian Ray @brianray (773) 669-7717 -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: IMG_6865.jpg Type: image/jpeg Size: 171656 bytes Desc: not available URL: From stephen.ld.hoover at gmail.com Tue May 31 14:21:28 2016 From: stephen.ld.hoover at gmail.com (Stephen Hoover) Date: Tue, 31 May 2016 13:21:28 -0500 Subject: [Chicago] PyData Chicago: Talk submission open! Message-ID: The PyData conference is coming to Chicago this summer! The conference will be August 26-28th at the University of Illinois at Chicago. The conference brings together analysts, scientists, developers, engineers, architects and others from the data science community to discuss new techniques and tools for management, analytics and visualization of data. Presentations focus on tools in Python and other languages used in data science, such as R and Julia. The call for talk proposals is open now, and will close on Monday, June 13th. http://pydata.org/chicago2016/cfp/ PyData is a great conference series, and I'm excited to have it come to Chicago. Please submit talks, and mark your calendars! Feel free to contact me with any questions. The conference also still has opportunities for sponsorship available, so contact me if your organization might be interested in sponsoring. Stephen -------------- next part -------------- An HTML attachment was scrubbed... URL: