{
"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": {}
}
]
}