Greg Wilson - software carpentry - selling Python to scientists - most computational science is not reproducible, and of unknown quality - most scientists don't care, because journals and tenure reviewers don't - improve productivity or quality? - RUP: prevent bugs through overdesign - XP: catch bugs immediately after creating them - can't sell Python by saying that it makes programming easy - have to offer solutions to problems, which happen to use Python - what are the problems of scientists? - they don't know how to program (although they think they do) - they don't know how to develop (or the difference) - lots of data to manage (in weird formats) - many tasks to automate (perhaps involving odd hardware) - best time to teach scientists is in grad school - show them how to handle a small software project - version control (market as syncing tool) - no traction on Python build tools - make, ant, IDE builders are too well established - data crunching (Python shines on RE, XML, DB) - no traction on rapid prototyping (hard to fight MATLAB) - GUI easier than Swing, but hard to integrate with legacy code - problem with multi-language debugging - desktop GUIs will be dominated by browser GUIs - testing good - but integration is hard - no one knows how to unit-test floating point code - test I/O, error handling - teach design: class design, modularization, debugging - in Python it hurts much less than in F90, C++, Java, C# - teach process: bug tracking, continuous integration - Trac, drproject - APIs cool... pipe simulation output into wiki - the final frontier: CS 101 - Python better than C++, Java - MATLAB ok... - open source, free - www.third-bit.com