What's In Your Stack?
This post originally appeared on the Software Carpentry website.
As a long-delayed follow-up to a conversation with Travis Oliphant: based on our experience, researchers who are computational novices want more than numerical computing and visualization tools. They want a complete stack—an end-to-end, nachos-to-cheesecake [1] solution to their basic computing needs, including an editor, a debugger, a version control system, blogging tools, data management tools, some way to create presentations and papers, and so on. My personal stack includes:
- Emacs (despite the damage it does to my hands)
- Subversion (because it's still simpler for novices to use on day 1 than either Git or Mercurial)
- the PyCharm IDE (when I'm doing Django, because it can debug templates—to my shame, for day-to-day work, I use PDB or print statements)
- WordPress
- SQLite (but I don't have very much data)
- LaTeX (because I can diff/merge files) and LibreOffice Impress (even though I can't, but LaTeX-based presentation systems have all of PowerPoint's flaws and none of its advantages)
These are all as important to researchers' day-to-day lives as Python, NumPy, Matplotlib, or Pandas, and like most of you, I use them all together—I use Python scripts to generate LaTeX tables from SQLite databases for inclusion in papers that I put under version control, and so on. What we're seeing in workshops, though, is that most computational novices (i.e., most research scientists) either don't think to integrate these things, or really struggle to do so (and reinvent a lot of wheels along the way).
My question is, how far do you think we (NumFOCUS, Software Carpentry, the community as a whole) should try to go? I personally think that showing people how to write readable code is in bounds, but showing them how to create a comprehensible paper or presentation is not; everyone else will have different dividing lines, and I'm very curious what those are. So:
- What's in your stack?
- Which parts of that do you think we (the people who show up at SciPy conferences) ought to be trying to teach, and which are someone else's job? (Bonus marks if you can clearly identify who that someone else is.)
[1] My preferred variation on "soup to nuts".