Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How did you do that?

miped
July 06, 2012

How did you do that?

Or: How a Non-developer Snuck Python Into a Large Organization

miped

July 06, 2012
Tweet

Other Decks in Programming

Transcript

  1. How did you do that? Or: How a Non-developer Snuck

    Python Into a Large Organization
  2. Me?

  3. Disclaimer THE AUTHOR MAKES NO REPRESENTATIONS OR WARRANTIES AS TO

    THE TIMELINESS, AVAILABILITY, ACCURACY OR COMPLETENESS OF ANY INFORMATION CONTAINED IN THIS PRESENTATION. LIKE ANY PRINTED MATERIALS, THE INFORMATION PROVIDED IN THIS PRESENTATION MAY BECOME OUTDATED OVER TIME. THE AUTHOR UNDERTAKES NO OBLIGATION TO CORRECT OR UPDATE ANY CONTENT OR INFORMATION ON THIS PRESENTATION. THE AUTHOR MAY MAKE IMPROVEMENTS AND/OR CHANGES IN THE CONTENT AND INFORMATION AT ANY TIME WITHOUT NOTICE, AND RESERVES THE RIGHT TO ALTER OR DELETE CONTENT AND INFORMATION IN THE PRESENTATION AT ANY TIME. ALL INFORMATION IN THIS PRESENTATION IS PROVIDED "AS IS," WITHOUT ANY WARRANTIES OF ANY SORT WHATSOEVER, ALL OF WHICH ARE EXPRESSLY DISCLAIMED. NEITHER THE AUTHOR, HIS FIRM, NOR ANYONE ELSE WILL BE LIABLE FOR YOUR USE OF OR RELIANCE ON INFORMATION CONTAINED ON THIS SITE UNDER ANY CIRCUMSTANCES, INCLUDING NEGLIGENCE. NEITHER SHALL THE AUTHOR, HIS FIRM, OR ANYONE ELSE BE LIABLE FOR ANY INJURY OR ANY DIRECT, INDIRECT, SPECIAL, EXEMPLARY, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR OTHER DAMAGES ARISING OUT OF ACCESS TO, USE OF OR INABILITY TO USE THE CONTENT OR MATERIALS ON THIS WEBSITE, EVEN IF THE AUTHOR IS INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. APPLICABLE LAW MAY NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU, BUT IN NO EVENT SHALL ANY LIABILITY TO YOU FOR ALL DAMAGES, LOSSES AND CAUSES OF ACTION ARISING FROM OR RELATED TO THIS WEBSITE (WHETHER IN CONTRACT, TORT OR OTHERWISE) EXCEED THE AMOUNT PAID BY YOU, IF ANY, FOR ACCESSING THIS WEBSITE.
  4. Disclaimer THE AUTHOR MAKES NO REPRESENTATIONS OR WARRANTIES AS TO

    THE TIMELINESS, AVAILABILITY, ACCURACY OR COMPLETENESS OF ANY INFORMATION CONTAINED IN THIS PRESENTATION. LIKE ANY PRINTED MATERIALS, THE INFORMATION PROVIDED IN THIS PRESENTATION MAY BECOME OUTDATED OVER TIME. THE AUTHOR UNDERTAKES NO OBLIGATION TO CORRECT OR UPDATE ANY CONTENT OR INFORMATION ON THIS PRESENTATION. THE AUTHOR MAY MAKE IMPROVEMENTS AND/OR CHANGES IN THE CONTENT AND INFORMATION AT ANY TIME WITHOUT NOTICE, AND RESERVES THE RIGHT TO ALTER OR DELETE CONTENT AND INFORMATION IN THE PRESENTATION AT ANY TIME. ALL INFORMATION IN THIS PRESENTATION IS PROVIDED "AS IS," WITHOUT ANY WARRANTIES OF ANY SORT WHATSOEVER, ALL OF WHICH ARE EXPRESSLY DISCLAIMED. NEITHER THE AUTHOR, HIS FIRM, NOR ANYONE ELSE WILL BE LIABLE FOR YOUR USE OF OR RELIANCE ON INFORMATION CONTAINED ON THIS SITE UNDER ANY CIRCUMSTANCES, INCLUDING NEGLIGENCE. NEITHER SHALL THE AUTHOR, HIS FIRM, OR ANYONE ELSE BE LIABLE FOR ANY INJURY OR ANY DIRECT, INDIRECT, SPECIAL, EXEMPLARY, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR OTHER DAMAGES ARISING OUT OF ACCESS TO, USE OF OR INABILITY TO USE THE CONTENT OR MATERIALS ON THIS WEBSITE, EVEN IF THE AUTHOR IS INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. APPLICABLE LAW MAY NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU, BUT IN NO EVENT SHALL ANY LIABILITY TO YOU FOR ALL DAMAGES, LOSSES AND CAUSES OF ACTION ARISING FROM OR RELATED TO THIS WEBSITE (WHETHER IN CONTRACT, TORT OR OTHERWISE) EXCEED THE AMOUNT PAID BY YOU, IF ANY, FOR ACCESSING THIS WEBSITE. If you follow my advice and get fired, don’t blame me!
  5. Other Goodies • DB2 • SQL Server • C#/.NET •

    (+ custom framework) • SAS • JAVA • Lotus Notes (Eclipse based e- mail client) • Windows XP • IE7 (migrated from IE6 ~1 year ago)
  6. Test Step 3: Hint: This is the only part that

    actually adds business value
  7. Downsides • Really slow • Mind-numbingly boring • Really, really

    slow • Inconsistent • Ridiculously slow • Lots of room for error
  8. Excel VBA Solution: Hint: Make an auto-installing add-on. And stop

    crying, it’s still better than doing it by hand!
  9. py2exe Solution: Hint: Put the output in a dist/ folder

    and include a bat file for easy launching. Distribute as a zip file
  10. Python magic Excel Input SQL SQL SQL SQL SQL SQL

    SQL SQL SQL SQL SQL SQL Split
  11. Python magic • Queries are hugely expensive • Run as

    few as possible • Hit the right indexes (this gets nasty) • Use threading to run queries in parallel • Multiprocessing + py2exe is a no-go • Schedule expensive queries first
  12. VBA magic • Make required pivots • Add some metadata

    • e.g. account names • Do a little formatting • Add thousand separators • Color specific lines and panes
  13. Result • Time/test case cut from 2+ hours to ~45

    minutes • From 2-3 test cases/day to 6+ • Errors in data non-existent • Excel files have a standardized format • Flatter learning curve
  14. Conversion Tools Made conversions from old to new system a

    one man job. Used to take 2-3 people. On weekend overtime pay.
  15. No really. Measure! Suggestion #4b Cost to the company if

    you did it on your own time: Nothing
  16. No really. Measure! Suggestion #4b Cost to the company if

    you did it on your own time: Nothing Value for the company if it saves you 2 hours a day: 20 days/month at 2 hours/day = 40 hours/month
  17. No really. Measure! Suggestion #4b 1 person = 40 hours

    2 people = 80 hours 3 people = 120 hours 4 people = 160 hours That’s a man-month!