2. Best practices in Interactive Computing
June 26, 2014 · View on GitHub
Full list of references in Chapter 2 of the IPython Cookbook, the definitive guide to high-performance scientific computing and data science in Python, by Dr. Cyrille Rossant, Packt Publishing, 400 pages, 2014.
Python 2/Python 3
- What's new in Python 3?.
- An excellent free book about porting code to Python 3, by Lennart Regebro.
- Official recommendations about Python 2/Python 3 compatibility.
2to3module to convert Python 2 code to Python 3.sixcompatibility module.- Official wiki page about the Python 2/Python 3 question.
- Python 3 questions and answers, by Nick Coghlan.
- "Ten awesome features of Python that you can't use because you refuse to upgrade to Python 3", a presentation by Aaron Meurer.
- Using the
__future__module when writing compatibility code. - Key differences between Python 2 and Python 3.
Integrated Development Environments for Python
- PyDev for Eclipse.
- Spyder, an open source IDE.
- PyCharm.
- PyTools for Microsoft Visual Studio on Windows.
- PyScripter.
- IEP, the Interactive Editor for Python.
Git
Hosted Git Services
Learning Git
- GitHub help.
- Pro Git book.
- Hands-on tutorial.
- Git Guided Tour.
- GitHub Git tutorial.
- Atlassian Git tutorial.
- CodeSchool's online course.
- Git tutorial by Lars Vogel.
- Git tutorial for scientists.
Git workflows
- A popular but complex Git flow.
- A simpler workflow, used by GitHub.
- Different Git workflows.
- Learn Git branching.
- The Git workflow recommended on the NumPy project (and others).
- A post on the IPython mailing list about an efficient Git workflow, by Fernando Perez.
Good practices
- The Python Cookbook, by David Beazley, a must-read with many advanced recipes for Python 3.
- The Hitchhiker's Guide to Python.
- PEP8 rules.
- PyLint, a static analysis tool.
- Design patterns in Python.
- Design patterns on Wikipedia.
- Coding standards of Tahoe-LAFS.
- "How to be a great software developer", by Peter Nixey.
- "Why you should write buggy software with as few features as possible?" a talk by Brian Granger.
Packaging
Reproducibility
- "An efficient workflow for reproducible science", a talk by Trevor Bekolay.
- "Ten Simple Rules for Reproducible Computational Research", Sandve et al., PLoS Computational Biology, 2013.
- Konrad Hinsen's blog.
Tools
- Markdown, a simple markup language.
- Sphinx.
- Figshare for storing binary research data online.
- Datadryad for storing binary research data online.
- joblib, a must-have tool for interactive computing.
- ipycache, providing a
%%cachemagic in IPython. - AutoIt to automate GUI actions.
- AutoHotKey to create automation scripts on Windows.
Unit testing
- Nose, a unit testing package for Python.
- Test-driven development.
- "Untested code is broken code", by Martin Aspeli.