From jep200404 at columbus.rr.com Tue Oct 2 04:19:08 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 1 Oct 2012 22:19:08 -0400 Subject: [CentralOH] =?utf-8?b?6YGT5aC0IExpbmtz?= Message-ID: <20121001221908.0c9d4e1d.jep200404@columbus.rr.com> http://pyvideo.org/video/542/pyohio-2011-names-objects-and-plummeting-from https://secure.wikimedia.org/wikipedia/en/wiki/Behavior-driven_development https://secure.wikimedia.org/wikipedia/en/wiki/Test-driven_development https://secure.wikimedia.org/wikipedia/en/wiki/DevOps ted.com https://secure.wikimedia.org/wikipedia/en/wiki/Dadawa https://secure.wikimedia.org/wikipedia/en/wiki/Vim_(text_editor) http://inventwithpython.com/chapters/ http://inventwithpython.com/pygame/chapters/ https://secure.wikimedia.org/wikipedia/en/wiki/Rich_Dad,_Poor_Dad http://www.pygame.org/news.html http://shop.oreilly.com/product/9780596158071.do https://secure.wikimedia.org/wikipedia/en/wiki/Graph_database https://secure.wikimedia.org/wikipedia/en/wiki/Freebase http://wolfram.com/alpha From brian.costlow at gmail.com Tue Oct 2 19:14:03 2012 From: brian.costlow at gmail.com (Brian Costlow) Date: Tue, 2 Oct 2012 13:14:03 -0400 Subject: [CentralOH] Scott's Lawn Care Python Opportunities Message-ID: All, Scott's currently has a couple of IT/Sales Support jobs that are at least partly Python based. Can't easily direct link because of the way their web site works but you can go to: http://www.thescottsmiraclegrocompany.com/careers/career_opportunities.html and put Python in the keywords section of the job search form. Also, if anyone on the list is part of Scott's IT or knows someone who is, that knows more about how Python is used there, please contact Eric Floehr or me. I'd love to get Scott's involved with PyOhio. Cheers, Brian -------------- next part -------------- An HTML attachment was scrubbed... URL: From eric at intellovations.com Fri Oct 5 14:04:40 2012 From: eric at intellovations.com (Eric Floehr) Date: Fri, 5 Oct 2012 08:04:40 -0400 Subject: [CentralOH] O'Reilly eBook Deal of the Day: Programming Python Message-ID: All, I wanted to let you know the O'Reilly eBook deal of the day is Mark Lutz's "Programming Python": http://shop.oreilly.com/product/9780596158118.do Normally the eBook is $52, but if you apply code "DEAL" at checkout, it will be $26. The O'Reilly eBooks give you all three formats: pdf, epub, and mobi. That's cheaper even than the Kindle-only version on Amazon, which is currently $30. Programming Python is a big, thick book, and if you already know the basics of Python, will help you extend your knowledge of Python. I own a physical copy, and will be getting the eBook as a reference (it's much easier to search!) Cheers, Eric -------------- next part -------------- An HTML attachment was scrubbed... URL: From catherine.devlin at gmail.com Sun Oct 7 01:35:59 2012 From: catherine.devlin at gmail.com (Catherine Devlin) Date: Sat, 6 Oct 2012 19:35:59 -0400 Subject: [CentralOH] Columbus Python Workshop for women and their friends Message-ID: Hey, COHPy folks, Some of you have heard me talking about this: https://openhatch.org/wiki/Columbus_Python_Workshop ... well, it's got a website now, so it's officially going to happen! You can start talking it up and pointing people to the page. Of course it doesn't have a date yet, or a venue, or a sponsor (or two). I need your help to get them! We'd like to buy the (20? 30?) attendees lunch on Saturday (and maybe a snack on Friday night), so $200-$400 worth of sponsorship would hit the spot. We need a venue with good wireless, screen, projector, and seating that isn't locked into lecture mode (for the large hands-on portions, "eyes forward" is totally the wrong seating.) The venue should permit or provide food that fits within our sponsored budget. The dates are any Friday night and Saturday that work well for the venue (and possibly for Sarah D., she might come down to help teach). Probably at least two months out to give us time to find these all and then to publicize it well. Venue and sponsor suggestions, please! Even better if you know a specific individual at Company X we can talk to about sponsorship. And, of course, I'd love to do these annually (at least). We might just do the second one on the PyOhio premises, but let's not wait that long to do the first. Another thing COHPy is on the hook for is some "project nights" following the workshop - nights where attendees are invited to come and continue work on the projects they started at the workshop (or new projects) and get help from each other and from existing user group members. The point is to make sure that attendees end up plugged into the Python user community. This can - and probably should - be at the same time and place as regular COHPy meetings... possibly with a portion of the room designated as the Project Night corner, or maybe even a room next door... we want them to get hooked on COHPy, but also be able to focus on their projects rather than the main COHPy talk which may be way above them. Anyway, there's plenty of time to work out details there. Let's hear those suggestions! Thanks! -- - Catherine http://catherinedevlin.blogspot.com From kurtis.mullins at gmail.com Mon Oct 8 16:14:52 2012 From: kurtis.mullins at gmail.com (Kurtis Mullins) Date: Mon, 8 Oct 2012 10:14:52 -0400 Subject: [CentralOH] Looking for opportunities (near Dayton) Message-ID: Hey guys/girls, I'm looking to possibly escape the "freelance" business and find a decent paying position at an established business. My school loans aren't going away anytime soon and I'd really like to start pulling in a reasonable salary to dig myself out of debt. Most of my experience has been involved with Web Application Development although I'm honestly up for tackling almost any problem using any tool for the job. Fun and creative projects are always a bonus. Python/Django have recently been my tools of choice and are probably the technologies I'm most "grounded in" at the moment. I can easily adapt to whatever is needed, though. I live in Kettering and am not able to travel out of the Dayton area except for the occasional meeting. I've telecommuted for years and have no problems working in that type of environment. If anyone has suggestions on businesses or even well-financed projects looking to hire, I'd be happy to hear about it. I can send a resume if anyone is interested. Feel free to share my email address or contact me if you have any questions. Thanks a lot! - Kurtis Mullins -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Mon Oct 8 17:58:44 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 8 Oct 2012 11:58:44 -0400 Subject: [CentralOH] Nojo Message-ID: <20121008115844.35243fea.jep200404@columbus.rr.com> Reminder: There is _no_ dojo tonight. The venue is closed. From qedwards at thi-terra.com Wed Oct 10 22:31:27 2012 From: qedwards at thi-terra.com (Quintin Edwards) Date: Wed, 10 Oct 2012 15:31:27 -0500 Subject: [CentralOH] Sr Python Developer Career oppurtunity Message-ID: Please excuse any interruptions. I wanted to reach out to you regarding an excellent opportunity for an Sr. Python Developer position that we are staffing for our client. We would appreciate your considerations, and hope it can serve as a viable career opportunity for you at this time. If you have a colleauge who is interested we have multiple vacancies. Thanks! Job Details: Location: Bethesda, MD Setting: Office Work Shift: Full Time Qualifications: *Bachelor's degree in Computer Science, Engineering, Math, Physics or related technical field and 3 year(s) of related work experience. Experience must include: *UNIX, C/C++, TCP/IP - Interprocess Communication, Python, Oracle Python Experience is a must. *Designing, developing, testing, and implementing software applications. -*Gathering and interpreting requirements, translating requirements into system definitions and solutions, and creating detailed documentation *Project management *High availability, high performance and high transaction processing environments (experience in the payments industry a plus) If you are interested in the position and the hiring details, please contact me at your earliest convenience along with sending an updated resume. You can reach me at qedwards at thi-terra.com or 210-645-5039. If not, we would appreciate it, if you would please forward this opportunity to any applicable individuals, or colleagues. Thank you. Quintin Edwards Government Service Team/ IT Terra Health, Inc 5710 W. Hausman, Ste 108 San Antonio, TX 78249 Direct Line-210.424.4007 x231 Fax-210.582.0084 Cell-210.687.7537 qedwards at thi-terra.com [cid:image001.jpg at 01CDA6FC.5097AFA0] [cid:image002.jpg at 01CDA6FC.5097AFA0] Confidentiality Notice The information in this message (and the documents attached to it, if any) is confidential and may be legally privileged. It is intended solely for the addressee. Access to this message by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken is prohibited and may be unlawful. If you have received this message in error, please delete all electronic copies of this message (and the documents attached to it, if any), destroy any hard copies you may have created and notify me immediately. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.jpg Type: image/jpeg Size: 1554 bytes Desc: image001.jpg URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image002.jpg Type: image/jpeg Size: 1564 bytes Desc: image002.jpg URL: From jep200404 at columbus.rr.com Mon Oct 15 18:49:08 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 15 Oct 2012 12:49:08 -0400 Subject: [CentralOH] How To Present: Learning from Columbus Code Camp Presenters Message-ID: <20121015124908.3fce1efa.jep200404@columbus.rr.com> At least two Pythonistas presented at Columbus Code Camp[1]. One of them arrived without a needed piece of equipment and was scrambling on a work around. Another said that my guidelines have changed how he judges others' presentations. I'd like to hear their comments about how to present at the next CohPy meeting. It would be good to hear how well my guidelines[2] worked, what the errors and omissions[3] there are, and which things were helpful and reinforced by experience. [1] http://columbuscodecamp.com/ [2] http://mail.python.org/pipermail/centraloh/2012-July/001336.html http://mail.python.org/pipermail/centraloh/2012-July/001337.html [3] I think I should add a note about using checklists of stuff to bring and things to do. I need to publish the guidelines about content: Should be easily viewed from last row 24 * 80 is about max to display Need high contrast Good: black on white and white on black OK: pastels on white Bad: pastels on black From catherine.devlin at gmail.com Tue Oct 16 15:36:55 2012 From: catherine.devlin at gmail.com (Catherine Devlin) Date: Tue, 16 Oct 2012 09:36:55 -0400 Subject: [CentralOH] Columbus Python Workshop for women and their friends, Jan 18-19 Message-ID: Announcing the first Columbus Python Workshop for women and their friends! Jan. 18-19, 2013 The Columbus Python Workshop for women and their friends is a free hands-on introduction to computer programming that's fun, accessible, and practical even to those who've never programmed at all before. We empower women of all ages and backgrounds to learn programming in a beginner-friendly environment. Thanks to Pillar Technologies for hosting the workshop in their brand-new office in Columbus' Short North! The workshop is the latest in a series based on the famous Boston Python Workshop; they've already introduced hundreds of beginners to programming in Boston, Indianapolis, Portland, Chicago, and Kansas City. Now it's Ohio's turn, so spread the word! Get more details and sign up now: https://openhatch.org/wiki/Columbus_Python_Workshop * Happy Ada Lovelace Day! Traditionally, Ada Lovelace Day is celebrated by highlighting the achievements of present and past women in programming. Today, instead, I'm saluting the contributors of the future! * -- - Catherine http://catherinedevlin.blogspot.com From jep200404 at columbus.rr.com Thu Oct 18 02:58:37 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Wed, 17 Oct 2012 20:58:37 -0400 Subject: [CentralOH] Powershop (Written in Python) Message-ID: <20121017205837.7375a935.jep200404@columbus.rr.com> Where can I find "powershop"? I have been STFWing for "powershop" (written in Python) as mentioned in the following presentation. It's a nifty visualization program. The citation is around 14:35 to 14:40 of the presentation. http://www.ted.com/talks/john_maeda_how_art_technology_and_design_inform_creative_leaders.html From centeractive.communities at gmail.com Thu Oct 18 14:58:53 2012 From: centeractive.communities at gmail.com (Centeractive AG) Date: Thu, 18 Oct 2012 14:58:53 +0200 Subject: [CentralOH] =?windows-1252?q?Retrospective_Log_Analyzer_=96_10_fr?= =?windows-1252?q?ee_licences_for_your_JUG?= Message-ID: Hi, We are a Swiss software company called centeractive ag and as part of our marketing campaign we have decided to offer your JUG 10 free Retrospective Log Analyzer licences (worth 58$ each), which is a new tool we have recently developed. To get your free licence you need to register at: http://community.centeractive.net quoting the following code: US_PYT_8839 Then you can go directly to the download site: www.retrospective.ch We are sure you will enjoy the following cartoon that gives a brief explanation of the key features of Retrospective: http://bit.ly/OWBqY0 Some interesting features that are unique to Retrospective are: - search / tail (monitoring) of logs on Linux hosts over SSH and on local disks - log entries split - column-split, log4j support - date auto-parsing in logs, support for 90% popular formats (search in logs considering date of entry) - filters (contains, date, etc.) The licences are absolutely free with no conditions attached and no trickery involved. The only thing we would be grateful for would be if you could provide feedback about the product with one of the following methods: - Posts on our forum: http://bit.ly/Sr89v3 - Short blog entries (please inform us at community at centeractive.com so we can link it to our website) - Tweets on Twitter (@centeractive_ag) Our company is ?community & user-friendly? and we would appreciate proposals concerning any improvement on new features. Any serious advice/comments will be considered when we prepare the next version. We publish a new version approximately once a month so for us it?s very important that we receive a valuable feedback from our future users. Our roadmap includes: - SSH keys support - database search / tail support (table, view, query) - windows host search / tail support - hierarchical search - command-line tool Our agenda is full till at least March 2013. In addition we would like to provide every speaker of your JUG with a free licence. If you are interested in this special offer, please contact us at orders at centeractive.com Regards, centeractive ag team P.S. Here is the link to the documentation and the screencasts: http://bit.ly/QtYrlh -------------- next part -------------- An HTML attachment was scrubbed... URL: From yanovich.1 at osu.edu Thu Oct 18 17:27:15 2012 From: yanovich.1 at osu.edu (Michael Yanovich) Date: Thu, 18 Oct 2012 11:27:15 -0400 Subject: [CentralOH] =?windows-1252?q?Retrospective_Log_Analyzer_=96_10_fr?= =?windows-1252?q?ee_licences_for_your_JUG?= In-Reply-To: References: Message-ID: <50801FD3.2020607@osu.edu> Did this arrive in anyone else's spam box? Though it is a bit suspicious to use lots of bitly's if this isn't really spam. Though the bitly's do go to what appears to be their website and the "cartoon" link does go to youtube. Though last I checked, we aren't a JUG, but a PUG. Oh well. On 10/18/2012 08:58 AM, Centeractive AG wrote: > Hi, > > We are a Swiss software company called centeractive ag and as part of our > marketing campaign we have decided to offer your JUG 10 free Retrospective > Log Analyzer licences (worth 58$ each), which is a new tool we have > recently developed. > > To get your free licence you need to register at: > http://community.centeractive.net quoting the following code: US_PYT_8839 > Then you can go directly to the download site: www.retrospective.ch > > We are sure you will enjoy the following cartoon that gives a brief > explanation of the key features of Retrospective: http://bit.ly/OWBqY0 > > Some interesting features that are unique to Retrospective are: > - search / tail (monitoring) of logs on Linux hosts over SSH and on local > disks > - log entries split > - column-split, log4j support > - date auto-parsing in logs, support for 90% popular formats (search in > logs considering date of entry) > - filters (contains, date, etc.) > > The licences are absolutely free with no conditions attached and no > trickery involved. The only thing we would be grateful for would be if you > could provide feedback about the product with one of the following methods: > - Posts on our forum: http://bit.ly/Sr89v3 > - Short blog entries (please inform us at community at centeractive.com so we > can link it to our website) > - Tweets on Twitter (@centeractive_ag) > > Our company is ?community & user-friendly? and we would appreciate > proposals concerning any improvement on new features. Any serious > advice/comments will be considered when we prepare the next version. We > publish a new version approximately once a month so for us it?s very > important that we receive a valuable feedback from our future users. > > Our roadmap includes: > - SSH keys support > - database search / tail support (table, view, query) > - windows host search / tail support > - hierarchical search > - command-line tool > > Our agenda is full till at least March 2013. In addition we would like to > provide every speaker of your JUG with a free licence. If you are > interested in this special offer, please contact us at > orders at centeractive.com > > Regards, > centeractive ag team > > P.S. Here is the link to the documentation and the screencasts: > http://bit.ly/QtYrlh > > > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh > -- Michael Yanovich -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 897 bytes Desc: OpenPGP digital signature URL: From kurtis.mullins at gmail.com Thu Oct 18 18:04:18 2012 From: kurtis.mullins at gmail.com (Kurtis Mullins) Date: Thu, 18 Oct 2012 12:04:18 -0400 Subject: [CentralOH] =?windows-1252?q?Retrospective_Log_Analyzer_=96_10_fr?= =?windows-1252?q?ee_licences_for_your_JUG?= In-Reply-To: <50801FD3.2020607@osu.edu> References: <50801FD3.2020607@osu.edu> Message-ID: haha, it didn't end up in my spam box. As far as the JUG thing goes, I kinda felt the same way. It's a nice offer but I'm not sure what it has to do with Python. On Thu, Oct 18, 2012 at 11:27 AM, Michael Yanovich wrote: > Did this arrive in anyone else's spam box? > > Though it is a bit suspicious to use lots of bitly's if this isn't > really spam. Though the bitly's do go to what appears to be their > website and the "cartoon" link does go to youtube. > > Though last I checked, we aren't a JUG, but a PUG. > > Oh well. > > On 10/18/2012 08:58 AM, Centeractive AG wrote: > > Hi, > > > > We are a Swiss software company called centeractive ag and as part of our > > marketing campaign we have decided to offer your JUG 10 free > Retrospective > > Log Analyzer licences (worth 58$ each), which is a new tool we have > > recently developed. > > > > To get your free licence you need to register at: > > http://community.centeractive.net quoting the following code: > US_PYT_8839 > > Then you can go directly to the download site: www.retrospective.ch > > > > We are sure you will enjoy the following cartoon that gives a brief > > explanation of the key features of Retrospective: http://bit.ly/OWBqY0 > > > > Some interesting features that are unique to Retrospective are: > > - search / tail (monitoring) of logs on Linux hosts over SSH and on > local > > disks > > - log entries split > > - column-split, log4j support > > - date auto-parsing in logs, support for 90% popular formats (search in > > logs considering date of entry) > > - filters (contains, date, etc.) > > > > The licences are absolutely free with no conditions attached and no > > trickery involved. The only thing we would be grateful for would be if > you > > could provide feedback about the product with one of the following > methods: > > - Posts on our forum: http://bit.ly/Sr89v3 > > - Short blog entries (please inform us at community at centeractive.com so > we > > can link it to our website) > > - Tweets on Twitter (@centeractive_ag) > > > > Our company is ?community & user-friendly? and we would appreciate > > proposals concerning any improvement on new features. Any serious > > advice/comments will be considered when we prepare the next version. We > > publish a new version approximately once a month so for us it?s very > > important that we receive a valuable feedback from our future users. > > > > Our roadmap includes: > > - SSH keys support > > - database search / tail support (table, view, query) > > - windows host search / tail support > > - hierarchical search > > - command-line tool > > > > Our agenda is full till at least March 2013. In addition we would like to > > provide every speaker of your JUG with a free licence. If you are > > interested in this special offer, please contact us at > > orders at centeractive.com > > > > Regards, > > centeractive ag team > > > > P.S. Here is the link to the documentation and the screencasts: > > http://bit.ly/QtYrlh > > > > > > > > _______________________________________________ > > CentralOH mailing list > > CentralOH at python.org > > http://mail.python.org/mailman/listinfo/centraloh > > > > -- > Michael Yanovich > > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From centeractive.communities at gmail.com Fri Oct 19 08:56:34 2012 From: centeractive.communities at gmail.com (Centeractive AG) Date: Fri, 19 Oct 2012 08:56:34 +0200 Subject: [CentralOH] =?windows-1252?q?Retrospective_Log_Analyzer_=96_10_fr?= =?windows-1252?q?ee_licences_for_your_JUG?= In-Reply-To: References: <50801FD3.2020607@osu.edu> Message-ID: Hi guys, JUG means Java User Group - sorry for the inconsistency, it's simply a human mistake :) This offer is not directly related to python, but at the end of the day everybody uses logs, don't they? This giveaway action is simply addressed to the programmers' communities. We are not trying to sell anything, the licenses are free of charge. What is important for us is to get a valuable feedback from developers to make the tool even better. Have a nice day down there in Ohio :) centeractive ag www.centeractive.com 2012/10/18 Kurtis Mullins > haha, it didn't end up in my spam box. As far as the JUG thing goes, I > kinda felt the same way. It's a nice offer but I'm not sure what it has to > do with Python. > > > On Thu, Oct 18, 2012 at 11:27 AM, Michael Yanovich wrote: > >> Did this arrive in anyone else's spam box? >> >> Though it is a bit suspicious to use lots of bitly's if this isn't >> really spam. Though the bitly's do go to what appears to be their >> website and the "cartoon" link does go to youtube. >> >> Though last I checked, we aren't a JUG, but a PUG. >> >> Oh well. >> >> On 10/18/2012 08:58 AM, Centeractive AG wrote: >> > Hi, >> > >> > We are a Swiss software company called centeractive ag and as part of >> our >> > marketing campaign we have decided to offer your JUG 10 free >> Retrospective >> > Log Analyzer licences (worth 58$ each), which is a new tool we have >> > recently developed. >> > >> > To get your free licence you need to register at: >> > http://community.centeractive.net quoting the following code: >> US_PYT_8839 >> > Then you can go directly to the download site: www.retrospective.ch >> > >> > We are sure you will enjoy the following cartoon that gives a brief >> > explanation of the key features of Retrospective: http://bit.ly/OWBqY0 >> > >> > Some interesting features that are unique to Retrospective are: >> > - search / tail (monitoring) of logs on Linux hosts over SSH and on >> local >> > disks >> > - log entries split >> > - column-split, log4j support >> > - date auto-parsing in logs, support for 90% popular formats (search in >> > logs considering date of entry) >> > - filters (contains, date, etc.) >> > >> > The licences are absolutely free with no conditions attached and no >> > trickery involved. The only thing we would be grateful for would be if >> you >> > could provide feedback about the product with one of the following >> methods: >> > - Posts on our forum: http://bit.ly/Sr89v3 >> > - Short blog entries (please inform us at community at centeractive.comso we >> > can link it to our website) >> > - Tweets on Twitter (@centeractive_ag) >> > >> > Our company is ?community & user-friendly? and we would appreciate >> > proposals concerning any improvement on new features. Any serious >> > advice/comments will be considered when we prepare the next version. We >> > publish a new version approximately once a month so for us it?s very >> > important that we receive a valuable feedback from our future users. >> > >> > Our roadmap includes: >> > - SSH keys support >> > - database search / tail support (table, view, query) >> > - windows host search / tail support >> > - hierarchical search >> > - command-line tool >> > >> > Our agenda is full till at least March 2013. In addition we would like >> to >> > provide every speaker of your JUG with a free licence. If you are >> > interested in this special offer, please contact us at >> > orders at centeractive.com >> > >> > Regards, >> > centeractive ag team >> > >> > P.S. Here is the link to the documentation and the screencasts: >> > http://bit.ly/QtYrlh >> > >> > >> > >> > _______________________________________________ >> > CentralOH mailing list >> > CentralOH at python.org >> > http://mail.python.org/mailman/listinfo/centraloh >> > >> >> -- >> Michael Yanovich >> >> >> _______________________________________________ >> CentralOH mailing list >> CentralOH at python.org >> http://mail.python.org/mailman/listinfo/centraloh >> >> > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Mon Oct 22 04:46:15 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Sun, 21 Oct 2012 22:46:15 -0400 Subject: [CentralOH] Improving Zipfile Code Message-ID: <20121021224615.3bb46356.jep200404@columbus.rr.com> The following code smells. How would you improve it? import csv from zipfile import ZipFile def foo(filename): z = ZipFile(filename) for f in filter((lambda s: s.endswith('.xyz')), z.namelist()): for line_number, row in enumerate(csv.DictReader(z.open(f, 'rU')), 2): print 'line_number:', line_number, 'row:', row From mark at microenh.com Mon Oct 22 06:40:39 2012 From: mark at microenh.com (Mark Erbaugh) Date: Mon, 22 Oct 2012 00:40:39 -0400 Subject: [CentralOH] Improving Zipfile Code In-Reply-To: <20121021224615.3bb46356.jep200404@columbus.rr.com> References: <20121021224615.3bb46356.jep200404@columbus.rr.com> Message-ID: <10D12DA0-70DA-4B95-8E4D-A27138702E0E@microenh.com> What's the smell you're concerned about? Sent from my iPad On Oct 21, 2012, at 10:46 PM, jep200404 at columbus.rr.com wrote: > The following code smells. How would you improve it? > > import csv > from zipfile import ZipFile > > def foo(filename): > z = ZipFile(filename) > for f in filter((lambda s: s.endswith('.xyz')), z.namelist()): > for line_number, row in enumerate(csv.DictReader(z.open(f, 'rU')), 2): > print 'line_number:', line_number, 'row:', row > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh From jep200404 at columbus.rr.com Mon Oct 22 14:09:23 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 22 Oct 2012 08:09:23 -0400 Subject: [CentralOH] Improving Zipfile Code In-Reply-To: <10D12DA0-70DA-4B95-8E4D-A27138702E0E@microenh.com> References: <20121021224615.3bb46356.jep200404@columbus.rr.com> <10D12DA0-70DA-4B95-8E4D-A27138702E0E@microenh.com> Message-ID: <20121022080923.20c9d1a2.jep200404@columbus.rr.com> On Mon, 22 Oct 2012 00:40:39 -0400, Mark Erbaugh wrote: > What's the smell you're concerned about? Too complicated and tricky. From eric at intellovations.com Mon Oct 22 15:27:13 2012 From: eric at intellovations.com (Eric Floehr) Date: Mon, 22 Oct 2012 09:27:13 -0400 Subject: [CentralOH] Improving Zipfile Code In-Reply-To: <20121021224615.3bb46356.jep200404@columbus.rr.com> References: <20121021224615.3bb46356.jep200404@columbus.rr.com> Message-ID: Jim, The biggest thing that smells to me is the magic number '2'. I assume that's because you are assuming a header row since you are opening a DictReader, but still want to get the line number of the csv row. Thankfully, csv readers expose the 'line_num' property, so you can get the line number of the file directly. Also, while not 'smelly', the anonymous function (the lambda) can be cleaned up by using the standard library module fnmatch, which is specifically built for file matching. You can also break up your combo opening the zip file and creating a DictReader in the for loop, which doesn't do anything other than making it look a little cleaner and makes it clearer at a glance what's going on. Finally, since 'rU' is something you need to look up to understand, I put a comment so it makes it clear what the 'rU' is for. With those revisions, here is the updated code: import csv import fnmatch from zipfile import ZipFile def foo(zipfilename): z = ZipFile(zipfilename) for filename in fnmatch.filter(z.namelist(), '*.xyz'): csvfile = z.open(filename, 'rU') # Open with universal newline support csvreader = csv.DictReader(csvfile) for row in csvreader: print 'line_number:', csvreader.line_num, 'row:', row -Eric On Sun, Oct 21, 2012 at 10:46 PM, wrote: > The following code smells. How would you improve it? > > import csv > from zipfile import ZipFile > > def foo(filename): > z = ZipFile(filename) > for f in filter((lambda s: s.endswith('.xyz')), z.namelist()): > for line_number, row in enumerate(csv.DictReader(z.open(f, 'rU')), > 2): > print 'line_number:', line_number, 'row:', row > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Mon Oct 22 17:57:48 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 22 Oct 2012 11:57:48 -0400 Subject: [CentralOH] Improving Zipfile Code In-Reply-To: References: <20121021224615.3bb46356.jep200404@columbus.rr.com> Message-ID: <20121022115748.5c84c527.jep200404@columbus.rr.com> On Mon, 22 Oct 2012 09:27:13 -0400, Eric Floehr wrote: > With those revisions, here is the updated code: > > import csv > import fnmatch > from zipfile import ZipFile > > def foo(zipfilename): > z = ZipFile(zipfilename) > for filename in fnmatch.filter(z.namelist(), '*.xyz'): > csvfile = z.open(filename, 'rU') # Open with universal newline support > csvreader = csv.DictReader(csvfile) > for row in csvreader: > print 'line_number:', csvreader.line_num, 'row:', row Thanks! That has _several_ nifty things, improving my code much. Python libraries continue to impress. From jep200404 at columbus.rr.com Mon Oct 22 20:55:35 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 22 Oct 2012 14:55:35 -0400 Subject: [CentralOH] csv.DictReader file mode In-Reply-To: <20121021224615.3bb46356.jep200404@columbus.rr.com> References: <20121021224615.3bb46356.jep200404@columbus.rr.com> Message-ID: <20121022145535.7652c96f.jep200404@columbus.rr.com> On Sun, 21 Oct 2012 22:46:15 -0400, jep200404 at columbus.rr.com wrote: > csv.DictReader(z.open(f, 'rU')) Going back and RTFMing[1], I see something that makes me wonder about the wisdom of using universal newline support. If csvfile is a file object, it must be opened with the ?b? flag on platforms where that makes a difference. [1] http://www.python.org/doc//current/library/csv.html#csv.reader From nick.albright at gmail.com Mon Oct 22 21:18:47 2012 From: nick.albright at gmail.com (Nick Albright) Date: Mon, 22 Oct 2012 15:18:47 -0400 Subject: [CentralOH] Improving Zipfile Code In-Reply-To: <20121022115748.5c84c527.jep200404@columbus.rr.com> References: <20121021224615.3bb46356.jep200404@columbus.rr.com> <20121022115748.5c84c527.jep200404@columbus.rr.com> Message-ID: Oo! fnmatch, didn't know about that one! Slick! On Mon, Oct 22, 2012 at 11:57 AM, wrote: > On Mon, 22 Oct 2012 09:27:13 -0400, Eric Floehr > wrote: > > > With those revisions, here is the updated code: > > > > import csv > > import fnmatch > > from zipfile import ZipFile > > > > def foo(zipfilename): > > z = ZipFile(zipfilename) > > for filename in fnmatch.filter(z.namelist(), '*.xyz'): > > csvfile = z.open(filename, 'rU') # Open with universal newline > support > > csvreader = csv.DictReader(csvfile) > > for row in csvreader: > > print 'line_number:', csvreader.line_num, 'row:', row > > Thanks! That has _several_ nifty things, improving my code much. > Python libraries continue to impress. > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh > -------------- next part -------------- An HTML attachment was scrubbed... URL: From nludban at columbus.rr.com Tue Oct 23 03:24:04 2012 From: nludban at columbus.rr.com (Neil Ludban) Date: Mon, 22 Oct 2012 21:24:04 -0400 Subject: [CentralOH] csv.DictReader file mode In-Reply-To: <20121022145535.7652c96f.jep200404@columbus.rr.com> References: <20121021224615.3bb46356.jep200404@columbus.rr.com> <20121022145535.7652c96f.jep200404@columbus.rr.com> Message-ID: <20121022212404.5ddfb4e7.nludban@columbus.rr.com> On Mon, 22 Oct 2012 14:55:35 -0400 jep200404 at columbus.rr.com wrote: > On Sun, 21 Oct 2012 22:46:15 -0400, jep200404 at columbus.rr.com wrote: > > > csv.DictReader(z.open(f, 'rU')) > > Going back and RTFMing[1], I see something that makes me wonder > about the wisdom of using universal newline support. > > If csvfile is a file object, it must be opened with the ?b? > flag on platforms where that makes a difference. I tried tracking down CSV standards a couple months ago while writing a reader and writer in C++ (borrowing heavily from Python's csv.Dialect). The best reference I found was http://tools.ietf.org/html/rfc4180 which says CRLF must be used for MIME (same as for any other text format, http://tools.ietf.org/html/rfc2046). After thinking about it a bit more, I believe my conclusion was that it was reasonable for the application I was working on to assume any end user bright enough to get a non-Excel compatible CSV file onto a Windows machine was also capable of making any translations to make it compatible. YMMV :) If I were doing the same thing in Python, I'd try opening the file with universal endlines, let csv.Sniffer figure out the details of a Dialect, and then force dialect.lineterminator = '\n'. > [1] http://www.python.org/doc//current/library/csv.html#csv.reader > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh From jep200404 at columbus.rr.com Tue Oct 23 21:06:10 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Tue, 23 Oct 2012 15:06:10 -0400 Subject: [CentralOH] =?utf-8?b?TWVudGlvbmVkIGF0IOmBk+WgtA==?= Message-ID: <20121023150610.43a08012.jep200404@columbus.rr.com> As mentioned at Dojo[1] http://docs.python.org/library/stdtypes.html#str.capitalize E.g., [ni at test ~]$ python Python 2.6.6 (r266:84292, Jun 18 2012, 14:18:47) [GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 'peRiLla'.capitalize() 'Perilla' >>> Magic Numbers https://secure.wikimedia.org/wikipedia/en/wiki/Magic_number_(programming)#Unnamed_numerical_constants [1] http://www.meetup.com/Central-Ohio-Python-Users-Group/events/qpfnddyqpbzb/ From brandon at rhodesmill.org Tue Oct 23 21:24:59 2012 From: brandon at rhodesmill.org (Brandon Rhodes) Date: Tue, 23 Oct 2012 15:24:59 -0400 Subject: [CentralOH] CodeMash has a bit of Python content this year Message-ID: <873915q9dg.fsf@asaph.rhodesmill.org> In case it interests any of you central-Ohioans, I thought I'd mention that my proposal has been accepted, and that I will be giving one of the three Python talks at this year's CodeMash conference: http://codemash.org/sessions?technology=Python CodeMash is heavy on C#, Java, and Ruby, so I love that Python gets a bit of attention there each year. It is a community-run conference - which seems quite a novelty in the C# and Java communities; attendees walk around almost in shock that the talks are not all vendor screeds about development tools for sale - and it's a fun place to find out what people in other languages have been up to, and what they like accomplishing in *their* favorite language. And water park resorts are just fun places to be in January as the snow swirls and drifts outside. Anyway, tickets go on sale tomorrow, and are expected to sell out within a few minutes: https://twitter.com/brianhprince/status/260746040121114624 So I thought I would mention it while there was still time for any of you who are curious to go read about the conference, and see if it would interest you. It should be within driving distance for all of you, which might make it attractive; but, of course, if you can afford only one late-winter conference, I very much recommend that you choose PyCon in March instead! -- Brandon Rhodes brandon at rhodesmill.org http://rhodesmill.org/brandon From eric at intellovations.com Tue Oct 23 22:22:13 2012 From: eric at intellovations.com (Eric Floehr) Date: Tue, 23 Oct 2012 16:22:13 -0400 Subject: [CentralOH] CodeMash has a bit of Python content this year In-Reply-To: <873915q9dg.fsf@asaph.rhodesmill.org> References: <873915q9dg.fsf@asaph.rhodesmill.org> Message-ID: Brandon, That looks like an awesome talk you are giving at CodeMash... perhaps you'll consider previewing/practicing it our combined November/December meeting which will be on December 3!?! Cheers, Eric On Tue, Oct 23, 2012 at 3:24 PM, Brandon Rhodes wrote: > In case it interests any of you central-Ohioans, I thought I'd mention > that my proposal has been accepted, and that I will be giving one of the > three Python talks at this year's CodeMash conference: > > http://codemash.org/sessions?technology=Python > > CodeMash is heavy on C#, Java, and Ruby, so I love that Python gets a > bit of attention there each year. It is a community-run conference - > which seems quite a novelty in the C# and Java communities; attendees > walk around almost in shock that the talks are not all vendor screeds > about development tools for sale - and it's a fun place to find out what > people in other languages have been up to, and what they like > accomplishing in *their* favorite language. And water park resorts are > just fun places to be in January as the snow swirls and drifts outside. > > Anyway, tickets go on sale tomorrow, and are expected to sell out within > a few minutes: > > https://twitter.com/brianhprince/status/260746040121114624 > > So I thought I would mention it while there was still time for any of > you who are curious to go read about the conference, and see if it would > interest you. It should be within driving distance for all of you, which > might make it attractive; but, of course, if you can afford only one > late-winter conference, I very much recommend that you choose PyCon in > March instead! > > -- > Brandon Rhodes brandon at rhodesmill.org > http://rhodesmill.org/brandon > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh > -------------- next part -------------- An HTML attachment was scrubbed... URL: From brandon at rhodesmill.org Wed Oct 24 00:15:50 2012 From: brandon at rhodesmill.org (Brandon Rhodes) Date: Tue, 23 Oct 2012 18:15:50 -0400 Subject: [CentralOH] CodeMash has a bit of Python content this year In-Reply-To: (Eric Floehr's message of "Tue, 23 Oct 2012 16:22:13 -0400") References: <873915q9dg.fsf@asaph.rhodesmill.org> Message-ID: <87liewq1gp.fsf@asaph.rhodesmill.org> Eric Floehr writes: > That looks like an awesome talk you are giving at CodeMash... perhaps > you'll consider previewing/practicing it our combined November/ > December meeting which will be on December 3!?! Yes, we should go ahead and plan on that! By the middle of November, I should be back from speaking at the first PyCon Canada in Toronto, and can use the last two weeks of November to get an early version of the talk assembled for the December 3 meeting. Thanks for the idea/invitation! :) -- Brandon Rhodes brandon at rhodesmill.org http://rhodesmill.org/brandon From jep200404 at columbus.rr.com Wed Oct 24 16:29:03 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Wed, 24 Oct 2012 10:29:03 -0400 Subject: [CentralOH] (Django) ValueError: 'Book' instance needs to have a primary key value before a many-to-many relationship can be used. Message-ID: <20121024102903.389af025.jep200404@columbus.rr.com> I have already solved the error in the subject line. Now, I am looking for a better solution. I have been using a ManyToManyField in Django with PostgreSQL for the first time and discovered new requirements it has. I solved the following error: ValueError: 'QcBook' instance needs to have a primary key value before a many-to-many relationship can be used. by doing a .save() to flesh out the primary key value, then doing the .add() for the ManyToManyField, then doing another .save(). I'm a bit uncomfortable that between the .save()s, an incomplete record is in the database. Is there a way to get the primary key value without .save()ing so that I could have just one .save(), or am I stuck with the two .save()s and should I use a transaction around the two .saves()s? I _do_ have to worry about other processes adding to the table at the same time. From kurtis.mullins at gmail.com Wed Oct 24 16:37:30 2012 From: kurtis.mullins at gmail.com (Kurtis Mullins) Date: Wed, 24 Oct 2012 10:37:30 -0400 Subject: [CentralOH] (Django) ValueError: 'Book' instance needs to have a primary key value before a many-to-many relationship can be used. In-Reply-To: <20121024102903.389af025.jep200404@columbus.rr.com> References: <20121024102903.389af025.jep200404@columbus.rr.com> Message-ID: Hey, You should only need 1 save. The .add() doesn't require a save if memory serves me correctly. You could wrap this in a transaction. I believe django offers a transaction middle ware to automatically rollback if errors were encountered. Good luck! On Oct 24, 2012 10:30 AM, wrote: > I have already solved the error in the subject line. > Now, I am looking for a better solution. > > I have been using a ManyToManyField in Django with PostgreSQL > for the first time and discovered new requirements it has. > I solved the following error: > > ValueError: 'QcBook' instance needs to have a primary key value before > a many-to-many relationship can be used. > > by doing a .save() to flesh out the primary key value, > then doing the .add() for the ManyToManyField, > then doing another .save(). > > I'm a bit uncomfortable that between the .save()s, > an incomplete record is in the database. > Is there a way to get the primary key value without .save()ing > so that I could have just one .save(), or am I stuck with the > two .save()s and should I use a transaction around the two > .saves()s? > I _do_ have to worry about other processes adding to the > table at the same time. > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Wed Oct 24 17:06:06 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Wed, 24 Oct 2012 11:06:06 -0400 Subject: [CentralOH] (Django) ValueError: 'Book' instance needs to have a primary key value before a many-to-many relationship can be used. In-Reply-To: References: <20121024102903.389af025.jep200404@columbus.rr.com> Message-ID: <20121024110606.3be352ce.jep200404@columbus.rr.com> On Wed, 24 Oct 2012 10:37:30 -0400, Kurtis Mullins wrote: > You should only need 1 save. The .add() doesn't require a save if memory > serves me correctly. I am dealing with a newly created object/row that does not yet have a primary key (id) until the first save. How were you getting a value for the primary key for the .add() to use? Were you using an object/row that already existed and so had already been saved earlier? On Wed, 24 Oct 2012 10:29:03 -0400, jep200404 at columbus.rr.com wrote: > by doing a .save() to flesh out the primary key value, > then doing the .add() for the ManyToManyField, > then doing another .save(). I might have discovered a solution. I see something now that I did not see when I first looked at the code[1]. Add commit=False to the first save. [1] busi = business.save(commit=False) from the last answer of http://stackoverflow.com/questions/6090859/django-instance-needs-to-have-a-primary-key-value-before-a-many-to-many-relatio From kurtis.mullins at gmail.com Wed Oct 24 17:11:28 2012 From: kurtis.mullins at gmail.com (Kurtis Mullins) Date: Wed, 24 Oct 2012 11:11:28 -0400 Subject: [CentralOH] (Django) ValueError: 'Book' instance needs to have a primary key value before a many-to-many relationship can be used. In-Reply-To: <20121024110606.3be352ce.jep200404@columbus.rr.com> References: <20121024102903.389af025.jep200404@columbus.rr.com> <20121024110606.3be352ce.jep200404@columbus.rr.com> Message-ID: Sorry, I should have been more clear. I believe you only need one save() before you call add() on the m2m field. I don't think you need to call it again afterwards. And yeah, you can call save with commit=False to get an object instance but I don't believe you will have a primary key until it's committed (saved). I could be wrong though :) my brain has been all over the place coding-wise lately. On Oct 24, 2012 11:06 AM, wrote: > On Wed, 24 Oct 2012 10:37:30 -0400, Kurtis Mullins < > kurtis.mullins at gmail.com> wrote: > > > You should only need 1 save. The .add() doesn't require a save if memory > > serves me correctly. > > I am dealing with a newly created object/row that does not yet > have a primary key (id) until the first save. > How were you getting a value for the primary key for the .add() > to use? Were you using an object/row that already existed and so > had already been saved earlier? > > On Wed, 24 Oct 2012 10:29:03 -0400, jep200404 at columbus.rr.com wrote: > > > by doing a .save() to flesh out the primary key value, > > then doing the .add() for the ManyToManyField, > > then doing another .save(). > > I might have discovered a solution. I see something now that > I did not see when I first looked at the code[1]. > Add commit=False to the first save. > > [1] busi = business.save(commit=False) > from the last answer of > > http://stackoverflow.com/questions/6090859/django-instance-needs-to-have-a-primary-key-value-before-a-many-to-many-relatio > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kurtis.mullins at gmail.com Wed Oct 24 18:28:38 2012 From: kurtis.mullins at gmail.com (Kurtis Mullins) Date: Wed, 24 Oct 2012 12:28:38 -0400 Subject: [CentralOH] (Django) ValueError: 'Book' instance needs to have a primary key value before a many-to-many relationship can be used. In-Reply-To: References: <20121024102903.389af025.jep200404@columbus.rr.com> <20121024110606.3be352ce.jep200404@columbus.rr.com> Message-ID: Hey Jep, If you don't get it figured out, feel free to share some code and I can probably give you a point in the right direction. On Wed, Oct 24, 2012 at 11:11 AM, Kurtis Mullins wrote: > Sorry, I should have been more clear. I believe you only need one save() > before you call add() on the m2m field. I don't think you need to call it > again afterwards. > > And yeah, you can call save with commit=False to get an object instance > but I don't believe you will have a primary key until it's committed > (saved). > > I could be wrong though :) my brain has been all over the place > coding-wise lately. > On Oct 24, 2012 11:06 AM, wrote: > >> On Wed, 24 Oct 2012 10:37:30 -0400, Kurtis Mullins < >> kurtis.mullins at gmail.com> wrote: >> >> > You should only need 1 save. The .add() doesn't require a save if memory >> > serves me correctly. >> >> I am dealing with a newly created object/row that does not yet >> have a primary key (id) until the first save. >> How were you getting a value for the primary key for the .add() >> to use? Were you using an object/row that already existed and so >> had already been saved earlier? >> >> On Wed, 24 Oct 2012 10:29:03 -0400, jep200404 at columbus.rr.com wrote: >> >> > by doing a .save() to flesh out the primary key value, >> > then doing the .add() for the ManyToManyField, >> > then doing another .save(). >> >> I might have discovered a solution. I see something now that >> I did not see when I first looked at the code[1]. >> Add commit=False to the first save. >> >> [1] busi = business.save(commit=False) >> from the last answer of >> >> http://stackoverflow.com/questions/6090859/django-instance-needs-to-have-a-primary-key-value-before-a-many-to-many-relatio >> >> _______________________________________________ >> CentralOH mailing list >> CentralOH at python.org >> http://mail.python.org/mailman/listinfo/centraloh >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Wed Oct 24 20:27:12 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Wed, 24 Oct 2012 14:27:12 -0400 Subject: [CentralOH] Fun Examples of Bad Code Message-ID: <20121024142712.7cf1edeb.jep200404@columbus.rr.com> Here are some fun examples of bad code. http://thedailywtf.com/ I don't see much Python code there. Hmmm. :-) From wam at cisco.com Thu Oct 25 00:07:40 2012 From: wam at cisco.com (William McVey) Date: Wed, 24 Oct 2012 18:07:40 -0400 Subject: [CentralOH] Fun Examples of Bad Code In-Reply-To: <20121024142712.7cf1edeb.jep200404@columbus.rr.com> References: <20121024142712.7cf1edeb.jep200404@columbus.rr.com> Message-ID: <1351116460.5215.13.camel@zelbinion.cisco.com> On Wed, 2012-10-24 at 14:27 -0400, jep200404 at columbus.rr.com wrote: > Here are some fun examples of bad code. > > http://thedailywtf.com/ > > I don't see much Python code there. Hmmm. :-) This one was particularly cringe worthy: http://thedailywtf.com/Articles/Python-Charmer.aspx -- William From jep200404 at columbus.rr.com Fri Oct 26 00:26:32 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Thu, 25 Oct 2012 18:26:32 -0400 Subject: [CentralOH] Automated Patches Message-ID: <20121025182632.1a5914d4.jep200404@columbus.rr.com> Does a library exist for something like I describe below exist? If so, I'd prefer to use it and avoid re-inventing the wheel and NIH[1]. I'm dealing with a many input files, some of which have some bad data. Coding one-off ad-hoc workarounds is bad for production. I'm tempted to write a file-like class for reading the input files and automatically finding and applying corresponding patch files. The patch files would be UNIX patch files and their names would be the input file name or sha1sum of the input file, with '.patch' appended. The generation of the patch files would be manual. That hassle would not be eliminated, but the application of them would be automated, and the input files would be maintained in their original state, so one wouldn't have to worry about whether one had the original or corrected version of the input file. [1] https://secure.wikimedia.org/wikipedia/en/wiki/Not_Invented_Here From godber at gmail.com Fri Oct 26 00:48:16 2012 From: godber at gmail.com (Austin Godber) Date: Thu, 25 Oct 2012 15:48:16 -0700 Subject: [CentralOH] Automated Patches In-Reply-To: <20121025182632.1a5914d4.jep200404@columbus.rr.com> References: <20121025182632.1a5914d4.jep200404@columbus.rr.com> Message-ID: I am not sure if I have fully grokked your problem, so here is a half answer http://en.wikipedia.org/wiki/Quilt_(software) I think either git or mercurial also does some management of patch stacks, but that might be a little further off mark. Quilt sounds closer. Austin On Thu, Oct 25, 2012 at 3:26 PM, wrote: > Does a library exist for something like I describe below exist? > If so, I'd prefer to use it and avoid re-inventing the wheel > and NIH[1]. > > I'm dealing with a many input files, some of which have some bad > data. Coding one-off ad-hoc workarounds is bad for production. > I'm tempted to write a file-like class for reading the input > files and automatically finding and applying corresponding > patch files. The patch files would be UNIX patch files and > their names would be the input file name or sha1sum of the > input file, with '.patch' appended. > > The generation of the patch files would be manual. > That hassle would not be eliminated, > but the application of them would be automated, > and the input files would be maintained in their original > state, so one wouldn't have to worry about whether one > had the original or corrected version of the input file. > > [1] https://secure.wikimedia.org/wikipedia/en/wiki/Not_Invented_Here > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh From jep200404 at columbus.rr.com Sun Oct 28 17:12:01 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Sun, 28 Oct 2012 12:12:01 -0400 Subject: [CentralOH] for after next monthly meeting In-Reply-To: References: <20120927154548.4f32cb99.jep200404@columbus.rr.com> <20120927212237.6721072a.jep200404@columbus.rr.com> <20120927213511.54c4263b.jep200404@columbus.rr.com> Message-ID: <20121028121201.1597012c.jep200404@columbus.rr.com> On Thu, 27 Sep 2012 21:42:09 -0400, Jonathan Hogue wrote: > We've been hitting explorer's club pretty regularly. mmm good. more than girth. > > 1586 South High Street > Columbus, OH 43207 > (614) 725-0155 They seem to be closed[1] Mondays. [1] http://www.explorersclubmv.com/ http://www.explorersclubmv.com/menu.php From jon.hogue at gmail.com Sun Oct 28 17:17:24 2012 From: jon.hogue at gmail.com (Jon Hogue) Date: Sun, 28 Oct 2012 12:17:24 -0400 Subject: [CentralOH] for after next monthly meeting In-Reply-To: <20121028121201.1597012c.jep200404@columbus.rr.com> References: <20120927154548.4f32cb99.jep200404@columbus.rr.com> <20120927212237.6721072a.jep200404@columbus.rr.com> <20120927213511.54c4263b.jep200404@columbus.rr.com> <20121028121201.1597012c.jep200404@columbus.rr.com> Message-ID: <244036715674510498@unknownmsgid> I forget this every other Monday. Sent from my iPhone On Oct 28, 2012, at 12:12 PM, "jep200404 at columbus.rr.com" wrote: > On Thu, 27 Sep 2012 21:42:09 -0400, Jonathan Hogue wrote: > >> We've been hitting explorer's club pretty regularly. mmm good. more than girth. >> >> 1586 South High Street >> Columbus, OH 43207 >> (614) 725-0155 > > They seem to be closed[1] Mondays. > > [1] http://www.explorersclubmv.com/ > http://www.explorersclubmv.com/menu.php > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh From brandon at rhodesmill.org Mon Oct 29 03:51:35 2012 From: brandon at rhodesmill.org (Brandon Rhodes) Date: Sun, 28 Oct 2012 22:51:35 -0400 Subject: [CentralOH] meeting place and meeting food Message-ID: <87pq42yoqw.fsf@asaph.rhodesmill.org> Two question questions before I head to the meetup tomorrow afternoon! First, where exactly is the building that we are looking for? Google Maps seems to vaguely indicate a spot in the middle of City Park Ave just south of its intersection with Thurman. Is it one of the buildings next to the nice spacious parking lot that I see immediately to the southeast when I bring up the satellite view? http://goo.gl/maps/GXQq9 Second, the mailing list message about the first meetup at this location two or three months ago (a meetup which, alas, I missed) mentioned that the hosts were providing food. Is that also true of this meetup, or was the food simply a first-time celebration of our presence? I look forward to seeing everyone! -- Brandon Rhodes brandon at rhodesmill.org http://rhodesmill.org/brandon From jon.hogue at gmail.com Mon Oct 29 04:28:00 2012 From: jon.hogue at gmail.com (Jon Hogue) Date: Sun, 28 Oct 2012 23:28:00 -0400 Subject: [CentralOH] meeting place and meeting food In-Reply-To: <87pq42yoqw.fsf@asaph.rhodesmill.org> References: <87pq42yoqw.fsf@asaph.rhodesmill.org> Message-ID: <-3874709665876737484@unknownmsgid> that is us. parking in the lot is ample in the evening. food will be provided. Sent from my iPhone On Oct 28, 2012, at 10:51 PM, Brandon Rhodes wrote: > Two question questions before I head to the meetup tomorrow afternoon! > > First, where exactly is the building that we are looking for? Google > Maps seems to vaguely indicate a spot in the middle of City Park Ave > just south of its intersection with Thurman. Is it one of the buildings > next to the nice spacious parking lot that I see immediately to the > southeast when I bring up the satellite view? http://goo.gl/maps/GXQq9 > > Second, the mailing list message about the first meetup at this location > two or three months ago (a meetup which, alas, I missed) mentioned that > the hosts were providing food. Is that also true of this meetup, or was > the food simply a first-time celebration of our presence? > > I look forward to seeing everyone! > > -- > Brandon Rhodes brandon at rhodesmill.org http://rhodesmill.org/brandon > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh From jep200404 at columbus.rr.com Mon Oct 29 21:53:34 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 29 Oct 2012 16:53:34 -0400 Subject: [CentralOH] Automated Patches In-Reply-To: References: <20121025182632.1a5914d4.jep200404@columbus.rr.com> Message-ID: <20121029165334.78d56b5e.jep200404@columbus.rr.com> On Thu, 25 Oct 2012 15:48:16 -0700, Austin Godber wrote: > I am not sure if I have fully grokked your problem, ... I am archiving data files as originally received. It is a requirement to preserve the original files as received, regardless of how good or bad they are. They are all compressed. There are many files. Some of them are around 1/2 Gigabyte. We have enough data that we have to move files that are not likely to be needed, from production servers, to off-line storage. Some of the data files have some bad content, and the corrections to the (uncompressed) content are tiny, so diffs are a nice way to keep track of corrections, using little extra storage while preserving the original (bad) files. Conventional version control systems don't seem to be a good fit. Many don't handle compressed files well. I don't know how well they would handle moving older data to off-line storage. I'm looking for a Pythonic way to automate the application of an individual patches, when they exist, without modfying, creating or renaming any files[2]. Pipes are good, whether ala Unix, or within Python[1]. Instead of using open(filename), I would call open_patched(filename) which would look for both filename and filename + '.patch'. If both files exist, open_patched would return a file-like object that would yield the output of something like[3] cat $filename | patcheroo filename+'.patch' otherwise open_patched() would work just like open(), returning a file-like object for just filename. [1] http://mail.python.org/pipermail/centraloh/2012-August/001369.html Thanks again Neil. [2] Of course, I could copy or write the uncompressed file in some temporary directory, modify it, consume it, then delete it. It'd be nice if to avoid having temporary files by using pipes or pipe-like goodness instead. The patch command might require temp files. [3] I use the ficticious patcheroo which uses stdin for the unpatched data, and stdout for the patched data, to avoid dealing with patch's grammar and behavior. [4] And now for something completely different. NATs are good. http://www.youtube.com/watch?v=v26BAlfWBm8 Thanks Rick. From nludban at columbus.rr.com Mon Oct 29 23:25:47 2012 From: nludban at columbus.rr.com (Neil Ludban) Date: Mon, 29 Oct 2012 18:25:47 -0400 Subject: [CentralOH] Automated Patches In-Reply-To: <20121029165334.78d56b5e.jep200404@columbus.rr.com> References: <20121025182632.1a5914d4.jep200404@columbus.rr.com> <20121029165334.78d56b5e.jep200404@columbus.rr.com> Message-ID: <20121029182547.808686f2.nludban@columbus.rr.com> On Mon, 29 Oct 2012 16:53:34 -0400 jep200404 at columbus.rr.com wrote: > On Thu, 25 Oct 2012 15:48:16 -0700, Austin Godber wrote: > > > I am not sure if I have fully grokked your problem, ... > > I am archiving data files as originally received. > It is a requirement to preserve the original files > as received, regardless of how good or bad they are. > They are all compressed. There are many files. > Some of them are around 1/2 Gigabyte. > We have enough data that we have to move files that are not > likely to be needed, from production servers, to off-line > storage. The internets suggest that subversion is using zlib compression for everything -- network communications, server side file storage, and server side delta storage. You would need to decompress the originals before committing, but then the server would manage your patches and history. (Test this to see if it's true and works well with your file contents.) I believe the latest release of subversion includes its own patch program, which likely provides the same set of options on all client platforms. You can move an entire subversion server file-backed repository offline, eg create a new repo every month. But, your clients would need to calculate an extra component for each file URL. Lastly, put the subversion servers behind Apache and then you can more easily access the files from Python using http (vs using the Python interface to the subversion C-language client API). > ... From brian.costlow at gmail.com Tue Oct 30 16:31:29 2012 From: brian.costlow at gmail.com (Brian Costlow) Date: Tue, 30 Oct 2012 11:31:29 -0400 Subject: [CentralOH] Fwd: [PyOhio-organizers] Fwd: [Python-Dev] Python Bug Day this Saturday announced In-Reply-To: References: <508EE588.5070408@netwok.org> Message-ID: Forwarded to the mailing list to the COhPy user group and the regular PyOhio list to spread the word. PyOhio-organizers tends to be focused more on the PyOhio annual conference. --Brian ---------- Forwarded message ---------- From: Todd Rovito Date: Mon, Oct 29, 2012 at 9:59 PM Subject: [PyOhio-organizers] Fwd: [Python-Dev] Python Bug Day this Saturday announced To: catherine.devlin at gmail.com, pyohio-organizers at python.org Just in case PyOhio wants to participate in the virtual event. ---------- Forwarded message ---------- From: ?ric Araujo Date: Mon, Oct 29, 2012 at 4:22 PM Subject: [Python-Dev] Python Bug Day this Saturday announced To: python-dev at python.org Hi everybody, I just sent the announcement for the bug day to python-list (apparently pending approval), core-mentorship and montrealpython. Core developers who plan on being on IRC can add themselves to the list on http://wiki.python.org/moin/PythonBugDay so that people can connect nicknames with people. The list by Petri at http://piratepad.net/pyconfi-sprint-issues can still be updated. Otherwise we?ll fall back to the usual roundup query for easy bugs. Cheers! _______________________________________________ Python-Dev mailing list Python-Dev at python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/rovitotv%40gmail.com _______________________________________________ PyOhio-organizers mailing list PyOhio-organizers at python.org http://mail.python.org/mailman/listinfo/pyohio-organizers -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Wed Oct 31 16:39:33 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Wed, 31 Oct 2012 11:39:33 -0400 Subject: [CentralOH] 2012-10-29 notes Message-ID: <20121031113933.213edda3.jep200404@columbus.rr.com> Thanks for ContactUS for hosting the meeting, the pizza and pop and to Raymond for his presentation. I took more notes than usual because I may need to use what Raymond was talking about. They have errors and ommission. Please post corrections and additions. Raymond Chandler started with presenting about Twitter Bootstrap and segued to other nifty tools that reduce the amount of work one has to do to develop web sites. Twitter Bootstrap A scaffolding for web site design consistency repetition alignment proximity similar things are grouped together fluid or fixed grid system "responsive" design aligns to various display sizes (requires more includes) grid system is much easier than doing tables integrates well with jquery take example and modify it works with many browsers requires javascript on client https://en.wikipedia.org/wiki/Twitter_Bootstrap http://twitter.github.com/bootstrap/ Cassette What is cassette for? How tied to .net is cassette? Is cassette the .net version of django_compressor? http://getcassette.net/documentation/v1/tutorials/twitter-bootstrap Example http://www.agilehog.com/ (playground for raymond?) easiest way to start bootstrap is customize.html http://twitter.github.com/bootstrap/customize.html two ways to install #1 python-admin.py startproject example cd example python manage.py startapp bootstrap cd bootstrap # refer bootstrap app from other apps mkdir templates mkdir static cd static wget http://twitter.github.com/bootstrap/assets/bootstrap.zi unzip bootstrap.zip # add to templates referenced as /static/bootstrap/css/bootstrap-responsive.css? #2 # another way: clone it from github, then compile it # to compile it, you need to install less python-admin.py startproject example cd example python manage.py startapp bootstrap cd bootstrap # refer bootstrap app from other apps mkdir templates mkdir static cd static git clone https://github.com/twitter/bootstrap.git rm -rf bootstrap/.git ;# raymond just reclones updates from scratch put bootstrap specific files in bootstrap app then reference it from project (include bootstrap from base template) (of course, put bootstrap in INSTALLED_APPS) CSS http://www.w3schools.com/css/ less extend CSS; makes CSS easier to handle; written in javascript (was ruby) variables allow DRY (don't repeat yourself) nested rules are very cool (nevermind variables and mixins) runs on server-side (node.js, Rhino) or client-side? Raymond, which side (server v client) do you find less most helpful? https://en.wikipedia.org/wiki/LESS_(stylesheet_language) http://lesscss.org/ for Joel, less is not Turing complete Raymond recommends less over sass/scss because of integration with twitter bootstrap less uses node.js (server side js) and node.js is awesome node can be used interactively at the command line there is a program that will convert existing css to less sass/scss inspired less requires ruby (unless use pysass/pyscss, which are incomplete compared to ruby version) sass has pythonic indentation instead of curly braces scss has curly braces https://en.wikipedia.org/wiki/Sass_(stylesheet_language) http://sass-lang.com/ compass kind of like bootstrap for sass http://compass-style.org/ pycss (what was point of this?) https://code.google.com/p/pycss/ Coffeescript syntactic sugar for javascript (compiles to javascript) uses indentation ala Python comprehensions!!! pattern matching has lambda functions nobody codes in javascript anymore coffeescript compiles into javascript http://coffeescript.org/ https://secure.wikimedia.org/wikipedia/en/wiki/Coffeescript also built on top of node.js use coffeescript for front end development Python (and ruby's) event handling sucks python and ruby don't handle call backs well they both have trouble with global interpreter lock ruby's is a little worse javascript handles them _very_ well twisted good, written in python event driven asynchronous communication server/client stuff https://secure.wikimedia.org/wikipedia/en/wiki/Twisted_(software) http://twistedmatrix.com/trac/wiki/TwistedProject node.js is the javascript version of twisted twisted is the python version of node.js celery - distributes tasks http://pypi.python.org/pypi/celery/ http://celeryproject.org/ https://github.com/celery/celery/ Django compressor - raymond says to use this compresses (compiles) css and js into a single file uglifier for django http://pypi.python.org/pypi/django_compressor https://code.google.com/p/django-compressor/ http://blog.heynemann.com.br/2010/06/07/django-compressor/ not deterministic includes coffeescript compiler? recompilation is instantaneous sudo apt-get install node npm install coffeescript npm install less debug mode reloads stuff each time one reloads a page pip install django_compressor HAML - simplifies HTML, syntactic sugar, less typing uses indentation like Python http://en.wikipedia.org/wiki/Haml http://haml.info/ written in ruby https://github.com/jessemiller/HamlPy https://github.com/kitanata/django_haml allows one to use haml inside django stylesheets written by raymond has 100% of HAML features? haml compressor is deterministic zencoding - mentioned by xy http://mattn.github.com/zencoding-vim/ http://www.vim.org/scripts/script.php?script_id=2981 https://code.google.com/p/zen-coding/ http://coding.smashingmagazine.com/2009/11/21/zen-coding-a-new-way-to-write-html-code/ http://downloadsquad.switched.com/2010/04/30/if-you-code-html-zen-coding-will-change-your-life/ EMACS absinthe emacs theme http://zencoding.org/archives/183 Absinthe makes the heart grow fonder not http://zencoding.org/ http://zen-coding.org/ http://zencoding.net/ http://underscorejs.org/ There was a big sigh of appreciation from the back when Raymond changed from pastels on dark to pastels on light (peach) background. http://mail.python.org/pipermail/centraloh/2012-October/001416.html Should be easily viewed from last row 24 * 80 is about max to display Need high contrast Good: black on white and white on black OK: pastels on white Bad: pastels on black BDD jasmine - BDD for testing js using "given, when, then" syntax by Justine Searls of Columbus, formerly of edjecase (or edgecase?) http://about.me/searls http://pivotal.github.com/jasmine/ https://github.com/searls/jasmine-given https://codification.wordpress.com/2010/08/23/jasmine-bdd-for-javascript/ rspec - BDD framework for ruby https://secure.wikimedia.org/wikipedia/en/wiki/RSpec http://rspec.info/ rspec-given - uses Given/When/Then notation. ruby's https://github.com/jimweirich/rspec-given https://secure.wikimedia.org/wikipedia/en/wiki/RSpec Cucumber https://secure.wikimedia.org/wikipedia/en/wiki/Cucumber_(software) Gherkin language https://github.com/cucumber/cucumber/wiki/Gherkin http://www.odr.lu/node/128 behave - gherkin based bdd: python style http://packages.python.org/behave/ TDD tests should complete in under 1 second test database code by not using database. Likewise for web stuff. pytest is the test framework to use for python pytest.org is good - brandon http://pytest.org/latest/ http://wiki.python.org/moin/PyTest http://pypi.python.org/pypi/pytest not http://www.drugs.com/pro/pytest.html unittest2 sucks test failure messages not helpful nose - extends unittest to make testing easier. (but unittest sucks?) https://nose.readthedocs.org/en/latest/ https://github.com/nose-devs/nose http://blog.mattwynne.net/category/bdd/ spherical projection on inverted ceiling fixture http://eclecti.cc/computergraphics/snow-globe-part-one-cheap-diy-spherical-projection http://eclecti.cc/computergraphics/science-on-a-snow-globe-spherical-display http://www.engadget.com/2011/07/16/microvisions-showwx-pico-projector-gets-hdmi-upgrade/ Somebody was asking about editor plugins for some kind of work. Data Visualization vtk visualization toolkit https://en.wikipedia.org/wiki/VTK http://www.vtk.org/ http://d3js.org/ flowingdata.com matplotlib xkcd style plots http://jakevdp.github.com/blog/2012/10/07/xkcd-style-plots-in-matplotlib/ http://www.reddit.com/r/Python/comments/11mfge/xkcdstyle_plots_in_matplotlib/ in the mean time, xkcd does do-si-do http://xkcd.com/1127/ john hunter died https://mloss.org/community/blog/2012/aug/30/john-hunter-the-author-of-matplotlib-has-died/ http://www.teknoids.net/content/john-hunter-matplotlibsourceforgenet-has-died http://numfocus.org/johnhunter/ garden Turnip - name already taken for BDD http://watirmelon.com/2012/02/05/turnip-trying-to-solve-cucumbers-problems-with-ruby-bdd/ https://github.com/jnicklas/turnip Spinach - http://watirmelon.com/2011/10/29/watirmelon-spinach/ Lettuce - http://lettuce.it/ eye candy http://www.glyphish.com/ http://glyphicons.com/ http://www.iconeden.com/icon/ http://min.frexy.com/article/milky_a_free_vector_icon_set_part_1/ http://fortawesome.github.com/Font-Awesome/ Raymond really liked the laser pointer NOVAS Naval Observatory Vector Astrometry Subroutines https://en.wikipedia.org/wiki/Naval_Observatory_Vector_Astrometry_Subroutines https://secure.wikimedia.org/wikipedia/en/wiki/Astronomical_Almanac http://aa.usno.navy.mil/software/novas/novas_info.php http://aa.usno.navy.mil/software/novas/novas_py/novaspy_intro.php http://www.usno.navy.mil/USNO/astronomical-applications/software-products/novas/novas-python http://pynovas.sourceforge.net/ http://www.doughellmann.com/articles/pythonmagazine/completely-different/2007-11-science/index.html#index-10 posted by brandon http://pypi.python.org/pypi/novas/3.1 not this brandon: http://www.mugshotsworld.com/BRANDON-NOVAS-2 wx http://weatherspark.com/#!dashboard;q=43210 http://radar.weather.gov/Conus/Loop/NatLoop.gif http://radar.weather.gov/Conus/Loop/centgrtlakes_loop.gif http://radarmatic.com/ http://radblast-mi.wunderground.com/cgi-bin/radar/WUNIDS_map?station=CMH&brand=wui&num=6&delay=15&type=TR0&frame=0&scale=1.000&noclutter=0&t=1283201928&lat=0&lon=0&label=you&showstorms=0&map.x=400&map.y=240¢erx=400¢ery=240&transx=0&transy=0&showlabels=1&severe=0&rainsnow=0&lightning=0&smooth=0 http://radblast-mi.wunderground.com/cgi-bin/radar/WUNIDS_map?station=ILN&brand=wui&num=6&delay=15&type=N0R&frame=0&scale=1.000&noclutter=0&t=1294241235&lat=40.00462723&lon=-83.021102&label=you&showstorms=0&map.x=400&map.y=240¢erx=400¢ery=240&transx=0&transy=0&showlabels=1&severe=0&rainsnow=0&lightning=0&smooth=0 http://forecast.weather.gov/MapClick.php?site=iln&FcstType=text&zmx=&zmy=&site=ILN&map.x=238&map.y=102 Next meeting will be December 3rd. Brandon will practice giving a presentation. http://codemash.org/ mostly .net with some token other languages