{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%load_ext load_style\n", "%load_style talk.css" ], "language": "python", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "html": [ "" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Software development tools

" ] }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Git/GitHub" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Version control systems promote good software engineering practices\n", "* In the last few years, Git has emerged as one the best in class\n", "* GitHub has completely transformed collaborative software development\n", " - Contributions to open source projects have *exploded* as a result\n", " - Makes software development deeply social: \"Facebook for coders\"\n", "* Public repositories are free\n", " - Encourages open collaboration\n", " - All code, history, discussions are public\n", " - Some scientists are uncomfortable with this\n", " - The benefits outweight any downsides\n", " - Most contributions are peer reviewed!\n", "* You can have private repositories, but they cost $\n", "* Let's have a look at [IPython's GitHub repo](https://github.com/ipython/ipython)" ] }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Git/GitHub as a path to reproducibility" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Version control systems are not the final answer to reproducibility, but they are a\n", "necessary beginning\n", "* Developer behavior changes when they know that everything they do is public\n", " - Their reputation is on the line - employers routinely consult GitHub profiles\n", " - Documentation and tests magically appear ;-)\n", "* A case study with an undergraduate physics major\n", " - Zach Sailer graduated from Cal Poly in 2013 with a physics B.S.\n", " - He did his senior project on \"Dielectric Behavior of de Vries Liquid Crystals\"\n", " - \"Hey you should post your senior project on GitHub\"\n", " - Reproducibility magically follows...\n", " - Here is his [GitHub repo](https://github.com/Zsailer/calpolythesis)\n", "\n", "## Science inherits the attributes of the software tools used" ] }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Travis CI (continuous integration)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Let's assume that all of us are writing tests for our software ;-)\n", "* Everytime you make a change, the test suite should automatically run\n", "* You should get an email if a test fails\n", "* **That is what Travis CI does**\n", "* Let's have a look at the [Travis CI site for IPython](https://travis-ci.org/ipython/ipython)\n", "* Language independent, complete control of dependency installation\n", "* Free for open source projects, $ for others\n", "* Seamless integration with GitHub\n", "\n", "## Science inherits the attributes of the software tools used" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "

Good software development tools and practices allow you to create projects with\n", "adoring communities of developers and users

\n", "\n", "

Impact by attraction rather than promotion

" ] } ], "metadata": {} } ] }