Survey Results
Here are the results of the survey that we announced a couple of days ago. I’m a bit surprised that so many computer scientists responded, and equally surprised by the popularity of “biomedical engineering” — who knew? The scores for various topics hold a few surprises as well: I would have predicted that something with the word “web” in it would have scored near the top of the list, rather than at the bottom.
But it’s clear that version control has to be the next lecture we produce, followed by one on task automation. We’re going to use Subversion for the former: Git and Mercurial and other distributed version control systems are clearly on the rise, but there isn’t a clear winner yet, and integration with other tools still lags. Deciding what to use for task automation is harder: we’ve always used GNU Make in the past, but that requires knowledge of the shell, which many of our intended audience don’t have. Ant is a non-starter; SCons or Rake would be better from a geek point of view, but again, there’s the question of tool support. Your thoughts would be greatly appreciated…
| Education | ||||
| Graduate degree | 69 | 75.8% | ||
| Undergraduate degree | 22 | 24.2% | ||
| Area | ||||
| Computer Science | 52 | 57.1% | ||
| Mathematics and Statistics | 22 | 24.2% | ||
| Earth Sciences | 20 | 22.0% | ||
| Physics | 17 | 18.7% | ||
| Biomedical Engineering | 15 | 16.5% | ||
| Microbiology | 13 | 14.3% | ||
| Electrical Engineering | 8 | 8.8% | ||
| Macrobiology | 7 | 7.7% | ||
| Business/Finance | 4 | 4.4% | ||
| Mechanical Engineering | 4 | 4.4% | ||
| Medicine and Health Care | 4 | 4.4% | ||
| Astronomy | 3 | 3.3% | ||
| Economics | 3 | 3.3% | ||
| Psychology | 3 | 3.3% | ||
| Other | 8 | 8.8% | ||
| Job | ||||
| Academic Researcher | 40 | 44.0% | ||
| Software Developer | 31 | 34.1% | ||
| Graduate Student | 16 | 17.6% | ||
| Engineer | 14 | 15.4% | ||
| Government Research Scientist | 8 | 8.8% | ||
| Manager/Supervisor | 8 | 8.8% | ||
| System Administrator | 6 | 6.6% | ||
| Industrial Research Scientist | 2 | 2.2% | ||
| Teacher | 2 | 2.2% | ||
| Topics | ||||
| Version Control | 2.64 | |||
| Automating Repetitive Tasks | 2.59 | |||
| Data Visualization | 2.53 | |||
| Reproducible Research | 2.51 | |||
| Testing and Quality Assurance | 2.51 | |||
| Coding Style | 2.44 | |||
| Data Structures | 2.44 | |||
| Debugging with a Debugger | 2.40 | |||
| Designing a Data Model | 2.36 | |||
| Object-Oriented Programming | 2.34 | |||
| Performance Optimization | 2.32 | |||
| Basic Programming | 2.31 | |||
| Using the Unix Shell | 2.31 | |||
| Refactoring | 2.25 | |||
| Parallel Programming | 2.23 | |||
| Working in Teams/on Large Projects | 2.22 | |||
| Computational Complexity | 2.18 | |||
| Packaging Code for Release | 2.16 | |||
| Static and Dynamic Code Analysis Tools | 2.12 | |||
| Design Patterns | 2.10 | |||
| Systems Programming | 2.03 | |||
| Integrating with C and Fortran | 1.98 | |||
| Matrix Algebra | 1.97 | |||
| Functional Languages | 1.94 | |||
| Handling Binary Data | 1.88 | |||
| Image Processing | 1.82 | |||
| XML | 1.80 | |||
| Build a Desktop User Interface | 1.76 | |||
| Create a Web Service | 1.75 | |||
| Introduction | 1.68 | |||
| Geographic Information Systems | 1.51 | |||

Perhaps I got task automation wrong, but I didn’t directly think of building software. More like: automate all from LaTeX runs over data acquisition to automate simulation setups. For this also plain python would perhaps work or some other tools? Has to be platform independent though as many of us still are forced to on or the other operating system.
For building software I heard about CMake.
@Jochen Building software is one special case (albeit a common one) of task automation: automating LaTeX runs etc. is much the same.
I’m looking forward to the lecture! I would perhaps have chosen some kind of make-derivate for automating LaTeX but not necessarily for the other tasks.
We started with gmake for our scientific software project and it was powerful enough to get through about two years worth of work but then we had to consider something else. Especially since we needed to move to more platforms and use and test multiple languages.
Cmake so far has worked well for that next step. It is our main tool for this … we even have it handle doxygen and latex builds. It can generate gmake files. We see it being useful to automate running of various types of tests and drivers along with helping automate use of metric tools and report generating.
We heard of SCons but it seemed less appealing.
@DrBubba The problem with *Make (from our point of view) is that it requires some knowledge of the shell, which we don’t want to require. Ant/SCons/Rake don’t, and of those, SCons is the only one based on Python. Benjamin Smedberg (of Mozilla) is rumored to be working on a pure-Python reimplementation of Make, but I have no idea (a) if that’s true, or (b) if it would allow direct invocation of Python commands, bypassing the shell.
Yes, I missed that point before. I can appreciate it though in the context of what you are trying to accomplish.
Of course often when we try to take a path around one issue then we later run into complexity or complications that may well be worse than if we had gone through the issue to begin with. Only time will tell.
I have used Ant in some training classes but that was for Java. I found it to be very useful but of less value to me since we use C++ almost exclusively. I am still waiting to find a non-commerical version of Ant for C++.
Good luck.
@Greg: Ben Smedberg started a project called pymake, which is intended to be a pure-Python reimplementation of GNU make:
http://hg.mozilla.org/users/bsmedberg_mozilla.com/pymake/summary
The last time I checked though, it had significant shortcomings in terms of compatibility and performance, so it may not be appropriate for your uses here, at least not if you want to avoid being continually surprised by yet-another-feature-that-pymake-doesn’t-support-yet.