<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Content on The Carpentries</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/tag/content/</link><description>Recent content in Content on The Carpentries</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 20 Nov 2024 10:51:28 -0500</lastBuildDate><atom:link href="https://deploy-preview-705--carpentries-website.netlify.app/blog/tag/content/index.xml" rel="self" type="application/rss+xml"/><item><title>Changing Our Core Curriculum</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2014/03/changing-our-core-curriculum/</link><pubDate>Thu, 27 Mar 2014 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2014/03/changing-our-core-curriculum/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>
 &lt;a href="{{site.baseurl}}/faq/#trademark">We currently say&lt;/a>
 that people must teach task automation, structured programming, version control, and unit testing
 in order to use the Software Carpentry name.
 However,
 many bootcamps either don't teach unit testing at all,
 or only cover it briefly,
 while many of us teach data management using SQL,
 which also seems like a core lab skill for scientific computing.
 We asked instructors this week whether we should formalize the change,
 and they responded as follows:
&lt;/p></description></item><item><title>Release 2013.11</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/12/release-2013-11/</link><pubDate>Tue, 10 Dec 2013 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/12/release-2013-11/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>
 We are pleased to announce the release of
 &lt;a href="{{site.github_url}}/bc/releases/tag/v2013.11">v2013.11&lt;/a>
 of our lesson materials.
 This release represents nearly 2 years of collaborative lesson development from 54 contributors,
 and features lessons for using the Unix shell to automate repetitive tasks,
 modular programming in Python and R,
 personal and collaborative version control with Git,
 unit testing,
 and working with databases.
 Contributors include:
&lt;/p></description></item><item><title>Reorganizing</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/11/reorganizing/</link><pubDate>Sat, 02 Nov 2013 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/11/reorganizing/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>TL;DR: We're going to:&lt;/p>
&lt;ul>
 &lt;li>
 split our lesson materials for absolute beginners and people with some previous experience;
 &lt;/li>
 &lt;li>
 build some tools to manage those materials;
 &lt;/li>
 &lt;li>
 update and clarify the guidelines for instructor training,
 Software Carpentry's scope,
 making contributions,
 and use of our name and logo; and
 &lt;/li>
 &lt;li>
 use GitHub issues and blog posts to manage discussion of details
 rather than our mailing list.
 &lt;/li>
&lt;/ul></description></item><item><title>Software Carpentry's Scope</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/11/scope/</link><pubDate>Sat, 02 Nov 2013 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/11/scope/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>
 To help people figure out what's in and what out
 as we're &lt;a href="{{site.baseurl}}/blog/2013/11//reorganizing.html">reorganizing our material&lt;/a>,
 I've drafted an explicit description of our scope
 inspired in part by
 &lt;a href="http://www.astropy.org/affiliated/">AstroPy's idea of an "affiliated" package&lt;/a>,
 which is, "...an astronomy-related Python package
 that is not part of the astropy core package,
 but has requested to be included as part of the Astropy project's community."
&lt;/p>
&lt;blockquote>
 Domain-specific tools for machine learning and computational fluid dynamics
 aren't built into LAPACK or NumPy:
 they're stored in separate repositories
 and released in their own packages.
 Similarly, domain-specific lessons don't belong in Software Carpentry.
 Instead,
 they should build on our lessons,
 just as computer vision libraries build on matrix and image libraries.
 Our examples should be drawn from biology, physics, economics, and similar disciplines
 in order to appeal to our audience,
 but everything we include must be accessible to anyone who's done freshman science.
&lt;/blockquote></description></item><item><title>Curriculum Design</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/10/curriculum-design/</link><pubDate>Mon, 14 Oct 2013 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/10/curriculum-design/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>
 I spoke with three different people about curriculum design last week,
 so this seems like a good time to summarize what I know about doing that properly,
 how we've actually been doing it for Software Carpentry,
 why the two are different,
 and what we hope to do in future.
 To set the stage,
 I need to talk about the medical program at McMaster University in Ontario.
&lt;/p></description></item><item><title>How Much Testing Is Enough?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/09/how-much-testing-is-enough/</link><pubDate>Tue, 24 Sep 2013 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/09/how-much-testing-is-enough/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>When we teach testing, we are sometimes asked, "How much is enough?" The short answer is, "It depends." To help construct a longer answer, we'd like to find out how much testing scientists do in other contexts. For example, the Cosmic Origins Spectrograph (COS) and the Space Telescope Imaging Spectrograph (STIS) are two of the instruments on the Hubble Space Telescope. During Cycle 21 (which starts this month, and runs for about a year), they will spend roughly 25% and 67% of their time respectively on calibration:&lt;/p></description></item><item><title>Connecting Bootcamp Content to Motivation and Best Practices</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/04/connecting-content-to-best-practices/</link><pubDate>Wed, 03 Apr 2013 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/04/connecting-content-to-best-practices/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>
 As our next Software Carpentry bootcamp quickly approaches,
 we have been struggling with many of the usual questions of what to teach and what not to teach.
 We expect a broad array of skills and experience (pre-assessment is yet to be completed),
 and want to make sure that all the learners leave with a clear motivation to build on what they learn.
&lt;/p></description></item><item><title>Testing Image Processing</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/03/testing-image-processing/</link><pubDate>Sun, 17 Mar 2013 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2013/03/testing-image-processing/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>
 &lt;a href="{{site.baseurl}}/lessons/previous/#test">Testing&lt;/a> has always been part of Software Carpentry,
 but it's also always been one of our weak spots.
 We explain that testing can't possibly uncover all the mistakes in a piece of software,
 but is useful anyway, then talk about unit testing and test-driven development.
 Separately,
 in the &lt;a href="{{site.baseurl}}/lessons/previous/#invperc">extended program design example&lt;/a>,
 we demonstrate how to refactor code to make it more testable.
&lt;/p>
&lt;p>
 What we &lt;em>don't&lt;/em> do is show people how to test the science-y bits of scientific software.
 More specifically,
 our current material doesn't contain a single example showing how to check
 the correctness of something that does floating-point.
 You won't find much mention of this in books and articles aimed at mainstream programmers either:
 most just say, "Oh, round-off,"
 then tell you to use an &lt;code>almostEquals&lt;/code> assertion with a tolerance,
 without telling you how to decide what the tolerance should be,
 or what to do when your result is a vector or matrix rather than a single scalar value.
&lt;/p></description></item><item><title>Moving Up and Moving Down</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/12/moving-up-and-moving-down/</link><pubDate>Wed, 05 Dec 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/12/moving-up-and-moving-down/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Our existing workshops/material are aimed at people who know enough to write a hundred-line script, but don't yet use version control or do any systematic testing. Many scientists either haven't gotten this far, or are well past it, and we'd like to start helping them. We think that means we need:&lt;/p>
&lt;ul>
 &lt;li>"Software Carpentry for Complete Beginners", which would only cover basic programming and version control, and&lt;/li>
 &lt;li>"Advanced Software Carpentry", which would cover parallel computing, integration with legacy code written in C/C++ and Fortran, and so on.&lt;/li>
&lt;/ul>
&lt;p>The challenge, as always, is resources: doing this requires people to put together the content &lt;em>and&lt;/em> teach half a dozen times to tune it &lt;em>and&lt;/em> help show others how to teach it as well. It's a big commitment, but the potential rewards are pretty big too. If you're willing to commit a hundred hours or so to help make the world a better place and give your career a boost, please &lt;a href="mailto:{{site.contact}}">get in touch&lt;/a>.&lt;/p></description></item><item><title>Updating Our Reading List</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/11/updating-our-reading-list/</link><pubDate>Sat, 17 Nov 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/11/updating-our-reading-list/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We're planning to launch an update to this web site in the next few days, and as part of that, we're revisiting some of our content. For example, we'd like to shorten and update our recommended reading list&amp;mdash;the current short list is below, and we'd welcome suggestions for additions. However, if you'd like to put something in, please suggest something to take out (so that the list doesn't become a Sunday stew).&lt;/p></description></item><item><title>Pelican Guts: on content management for Software Carpentry</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/11/pelican-guts/</link><pubDate>Thu, 01 Nov 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/11/pelican-guts/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>

&lt;p>This morning I spent some time talking over &lt;a title="Rebuliding Redux" href="{{site.baseurl}}/blog/2012/10/rebuilding-redux.html">the content management problem&lt;/a> for the Software Carpentry website with Greg. To recap: we'd like to make it easier for anyone to contribute and manage the website content (lecture pages, new bootcamps, events, etc). For example, there are plenty of bits of site building that could be automated so that contributing a new lecture or topic &lt;em>doesn't&lt;/em>have to involve wiring in links to a table of contents, forward and backward links to other lectures/topics, and so on.&lt;/p></description></item><item><title>Usability Testing and Instructional Design</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/usability-testing-instructional-design/</link><pubDate>Sun, 28 Oct 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/usability-testing-instructional-design/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>

&lt;p>This is a story in several parts.&lt;/p>

&lt;p>1. From Guido van Rossum's &lt;a href="http://python-history.blogspot.ca/2009/02/early-language-design-and-development.html">intermittently-updated blog&lt;/a> about the history and design of Python:&lt;/p>
&lt;blockquote>Python's first and foremost influence was &lt;a href="http://homepages.cwi.nl/%7Esteven/abc/">ABC&lt;/a>, a language designed in the early 1980s [that] was meant to be a teaching language, a replacement for BASIC, and a language and environment for personal computing. It was designed by first doing a task analysis of...programming...and then doing several iterations that included serious user testing... ABC's authors did invent the use of the colon that separates the lead-in clause from the indented block. After early user testing without the colon, it was discovered that the meaning of the indentation was unclear to beginners being taught the first steps of programming. The addition of the colon clarified it significantly: the colon somehow draws attention to what follows and ties the phrases before and after it together in just the right way.&lt;/blockquote>
&lt;p>This story and others like it were something of a revelation to me when I first encountered Python in the late 1990s. Usability testing of programming languages? Huh&amp;mdash;why isn't &lt;em>everyone&lt;/em> doing that?&lt;/p></description></item><item><title>Mozilla Web Literacies White Paper</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/mozilla-web-literacies-white-paper/</link><pubDate>Fri, 26 Oct 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/mozilla-web-literacies-white-paper/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>

&lt;p>The Mozilla Foundation (which has been our home for the last eight months) have posted a &lt;a href="https://wiki.mozilla.org/Learning/WebLiteraciesWhitePaper">white paper on web literacies&lt;/a> that outlines their vision for the web:&lt;/p>
&lt;blockquote>...the world's largest public resource, the operating system of the future, and (we believe) one of the greatest drivers of happiness and human flourishing the world has ever seen.&lt;/blockquote>
&lt;p>The &lt;a href="https://wiki.mozilla.org/Learning/WebLiteraciesWhitePaper#Web_Skills_.2F_Competencies_.2F_Literacies_grid">skills/competencies/literacies grid&lt;/a> gives a condensed overview of how beginners and intermediates could explore, create, connect, and protect with and on the web. Over the coming months, we'll be working to find ways of connecting this with scientists. If you'd like to help, please &lt;a href="mailto:{{site.contact}}">get in touch&lt;/a>.&lt;/p></description></item><item><title>Prime Numbers, Biologists, and Data Visualization</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/prime-numbers-biologists-and-data-visualization/</link><pubDate>Thu, 25 Oct 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/prime-numbers-biologists-and-data-visualization/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>

&lt;p>A couple of days ago, Titus Brown posted &lt;a href="http://ivory.idyll.org/blog/prime-numbers-for-biologists.html">a question from Randy Olson&lt;/a>: are there relevant, non-abstract problems (for biologists) that you can solve with minimal programming skills? I.e., what's the biology equivalent to traditional intro CS problems like "calculate the primes".&lt;/p>

&lt;p>The answer has three parts:&lt;/p>
&lt;ol>
 &lt;li>Calculating primes, finding the longest line in a file, etc., are lousy introductory problems because they're completely valueless to most of the intended audience. You have to already believe you really, really want to learn how to program, &lt;em>and&lt;/em> be good at delayed gratification, to get through them to the good stuff. (This isn't just true in computing: see the discussion in &lt;em>&lt;a href="http://www.amazon.com/How-Learning-Works-Research-Based-Jossey-Bass/dp/0470484101">How Learning Works&lt;/a>&lt;/em> of the impact of motivation on learning.)&lt;/li>
 &lt;li>Guzdial, Ericson, et al's work at Georgia Tech showed pretty conclusively that a media-first approach to computing has better outcomes, i.e., if people are manipulating images (and audio and video) right from day 1, they'll retain more of what they learn, and more students will stay in the program. (But note: you probably can't use an industrial-strength image manipulation library like PIL for intro teaching, at least not directly: you need something that assumes less background knowledge both in domain and skills.)&lt;/li>
 &lt;li>Robbins, Senseman, and Pate have been piloting a "visualization first" programming course for biologists (see &lt;a href="http://dl.acm.org/citation.cfm?id=1953265">this paper&lt;/a> if you can&amp;mdash;apologies for the paywall). While it's early days, it seems that this should have the benefits of "media first" for scientists. For example, a programming exercise could be "draw the curves in red if the end point is less than the starting point, and in blue otherwise".&lt;/li>
&lt;/ol>
&lt;p>We haven't reorganized our intro material around this idea yet, partly because of inertia, but partly because of the installation headaches of getting visualization working on N platforms in a two-day workshop. I'm very keen to try it out, though, particularly if the IPython Notebook really does make simple visualization simple to do on all major platforms.&lt;/p></description></item><item><title>25 Questions</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/25-questions/</link><pubDate>Tue, 23 Oct 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/25-questions/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>

&lt;p>We've tried several times to define Software Carpentry's aims and content in terms of the questions that researchers ask (see for example our competence matrix and &lt;a href="{{site.baseurl}}/blog/2012/09/systematic-curriculum-design.html">this post mapping eight questions to our current content&lt;/a>). Our latest attempt is crowd-sourced with a small 'c': the people who are taking part in the first round of our &lt;a href="{{site.training_url}}">online study group&lt;/a> for instructors and would-be instructors put together their own lists of questions, along with the answers they'd expect from novice, intermediate, and expert scientific programmers. I've consolidated those lists into 25 questions, which I'd like to boil back down to no more than 10. If you'd like to take a crack at doing that, please post your suggestion as a comment, and I'll send you a Software Carpentry t-shirt if we use it.&lt;/p></description></item><item><title>Key Points</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/key-points/</link><pubDate>Tue, 23 Oct 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/key-points/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>

&lt;p>On the flight back from Vancouver yesterday, I finally did what I should have done eight months ago and compiled the key points from our core lesson content. The results are presented below, broken down by lesson and topic; going forward, we're going to use something like this as a basis for defining what Software Carpentry is, and what workshop attendees can expect to learn.&lt;/p></description></item><item><title>Rebuilding Redux</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/rebuilding-redux/</link><pubDate>Fri, 12 Oct 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/rebuilding-redux/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The time has come to replace our creaking combination of web tools with something that will let us do more for more people while spending less time switching between browser tabs. To recap &lt;a href="{{site.baseurl}}/blog/2012/04/behind-the-scenes-or-the-ethics-of-cultivating-discontent.html">an earlier post&lt;/a>, we currently use:&lt;/p>
&lt;ul>
&lt;li>WordPress for our blog, web site pages, and comments;&lt;/li>
&lt;li>YouTube to host our videos (links to which are embedded in the WordPress pages);&lt;/li>
&lt;li>Subversion (administered via the Dreamhost control panel) to manage our slides, code examples, and other files;&lt;/li>
&lt;li>Mailman (administered the same way) to manage mailing lists;&lt;/li>
&lt;li>a Google Map to show the locations of past and future bootcamps;&lt;/li>
&lt;li>a Google Calendar to show their dates;&lt;/li>
&lt;li>Google Analytics to track web site traffic;&lt;/li>
&lt;li>EventBrite to handle event signup; and&lt;/li>
&lt;li>OpenBadges to keep track of who's accomplished what (currently in beta).&lt;/li>
&lt;/ul>
&lt;p>We also use Vidyo for video conferencing (primarily tutorials), and run Etherpad beside it so that people have a text channel for asking questions, posting links and code fragments, taking minutes, and so on. As I pointed out in that &lt;a href="{{site.baseurl}}/blog/2012/04/behind-the-scenes-or-the-ethics-of-cultivating-discontent.html">aforementioned post&lt;/a>, this means admins need at least six different logins to get things done, and need to copy a lot of information from place to place. For example, whenever we commit to a new bootcamp, someone needs to:&lt;/p></description></item><item><title>Transitioning to the IPython Notebook</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/transitioning-to-the-ipython-notebook/</link><pubDate>Thu, 04 Oct 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/transitioning-to-the-ipython-notebook/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Here at Software Carpentry we've been teaching Python for a little while. We teach Python in our bootcamps and we have a library of instructional videos on Python topics including basics, dictionaries, regular expressions, and object oriented programming.&lt;/p>
&lt;p>As usual, though, we're not satisfied with the status quo. For both our bootcamps and our online material we're in the process of switching to the &lt;a href="http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html">IPython Notebook&lt;/a>. The Notebook lets the user write and execute Python code and see the results, all inside their favorite web browser.&lt;/p></description></item><item><title>Best Practices for Scientific Computing</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/best-practices-for-scientific-computing/</link><pubDate>Wed, 03 Oct 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/best-practices-for-scientific-computing/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The following pre-print is now &lt;a href="http://arxiv.org/abs/1210.0530">available on arXiv&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;div align="center">
&lt;h2>&lt;a href="http://arxiv.org/abs/1210.0530">Best Practices for Scientific Computing&lt;/a>&lt;/h2>
&lt;/div>
&lt;p>&lt;a href="http://faculty.uoit.ca/aruliah/">D.A. Aruliah&lt;/a>&lt;sup>a&lt;/sup>, &lt;a href="http://ivory.idyll.org/blog/">C. Titus Brown&lt;/a>&lt;sup>b&lt;/sup>, &lt;a href="http://www.epcc.ed.ac.uk/about-us/staff/chue-hong-neil/">Neil P. Chue Hong&lt;/a>&lt;sup>c&lt;/sup>, &lt;a href="http://penandpants.com/">Matt Davis&lt;/a>&lt;sup>d&lt;/sup>, &lt;a href="http://www.cs.toronto.edu/~guy/">Richard T. Guy&lt;/a>&lt;sup>e&lt;/sup>, &lt;a href="http://www.mbari.org/staff/haddock/">Steven H.D. Haddock&lt;/a>&lt;sup>f&lt;/sup>, &lt;a href="http://ged.msu.edu">Katy Huff&lt;/a>&lt;sup>g&lt;/sup>, &lt;a href="http://www.cs.ubc.ca/~mitchell/">Ian Mitchell&lt;/a>&lt;sup>h&lt;/sup>, &lt;a href="http://www.elec.qmul.ac.uk/people/markp/">Mark Plumbley&lt;/a>&lt;sup>i&lt;/sup>, &lt;a href="http://www.hep.ucl.ac.uk/~waugh/">Ben Waugh&lt;/a>&lt;sup>j&lt;/sup>, &lt;a href="http://whitelab.weecology.org/">Ethan P. White&lt;/a>&lt;sup>k&lt;/sup>, &lt;a href="http://software-carpentry.org">Greg Wilson&lt;/a>&lt;sup>l&lt;/sup>, and &lt;a href="https://cnerg.engr.wisc.edu/?page_id=8">Paul Wilson&lt;/a>&lt;sup>g&lt;/sup>.&lt;/p>
&lt;p>&lt;sup>a&lt;/sup>University of Ontario Institute of Technology, &lt;sup>b&lt;/sup>Michigan State University, &lt;sup>c&lt;/sup>Software Sustainability Institute, &lt;sup>d&lt;/sup>Space Telescope Science Institute, &lt;sup>e&lt;/sup>University of Toronto, &lt;sup>f&lt;/sup>Monterey Bay Aquarium Research Institute, &lt;sup>g&lt;/sup>University of Wisconsin, &lt;sup>h&lt;/sup>University of British Columbia, &lt;sup>i&lt;/sup>Queen Mary University London, &lt;sup>j&lt;/sup>University College London, &lt;sup>k&lt;/sup>Utah State University, and &lt;sup>l&lt;/sup>Software Carpentry.&lt;/p></description></item><item><title>What Would You Like in an Instructor's Guide?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/what-would-you-like-in-an-instructors-guide/</link><pubDate>Mon, 01 Oct 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/10/what-would-you-like-in-an-instructors-guide/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One of our goals for the next three months is to create an instructor's guide for Software Carpentry to help people teach this material more effectively: something akin to the SSI's "&lt;a href="http://software.ac.uk/how-run-software-carpentry-boot-camp">How to run a Software Carpentry bootcamp&lt;/a>", but larger, and focused on the content. For example, when we teach the Unix shell (which is normally the morning of the first day), we actually don't introduce many commands&amp;mdash;last time I actually checked, I only showed learners pwd, mkdir, cd, ls, rm, mv, cat, head, tail, wc, cut, and history. Instead, our real aims are to give them what they need to get through subsequent programming exercises in Python (i.e., creating data files, moving program files around, etc.), and to:&lt;/p></description></item><item><title>Why This Stuff Is Hard To Teach</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/why-this-stuff-is-hard-to-teach/</link><pubDate>Thu, 20 Sep 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/why-this-stuff-is-hard-to-teach/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>If we get funding to continue our work (we hope to find out in a month), one of the first things we want to do is put together an introduction to web programming for scientists. As I've remarked many times before, we won't try to teach people how to build web applications: all we can do in the time we have, starting from what they know, is teach them how to create security holes. What we &lt;em>would&lt;/em> like to show them is how to pull data off the web and post data of their own for others to consume, but even that turns out to be a lot harder than it should be.&lt;/p></description></item><item><title>What's In Your Stack?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/whats-in-your-stack/</link><pubDate>Tue, 18 Sep 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/whats-in-your-stack/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>As a long-delayed follow-up to a conversation with &lt;a href="http://technicaldiscovery.blogspot.com">Travis Oliphant&lt;/a>: based on our experience, researchers who are computational novices want more than numerical computing and visualization tools. They want a complete stack&amp;mdash;an end-to-end, nachos-to-cheesecake [&lt;a href="#1">1&lt;/a>] 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:&lt;/p></description></item><item><title>Systematic Curriculum Design</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/systematic-curriculum-design/</link><pubDate>Sun, 16 Sep 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/systematic-curriculum-design/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>&lt;em>Executive summary: we'd appreciate your help organizing and motivating our material better.&lt;/em>&lt;/p>
&lt;p>One of the good things about traveling is that it gives me time to think. One of the bad things about thinking is that every time I do, I wind up with more work than I had when I started. For example, to organize and motivate our content, I'm using eight questions that scientists frequently ask:&lt;/p></description></item><item><title>Patterns Wanted</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/patterns-wanted/</link><pubDate>Wed, 12 Sep 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/patterns-wanted/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>At some point or other, most programmers have encountered the idea of design patterns in software, and many (including myself) have been zealous about them, at least for a while. They haven't actually revolutionized either the practice of software development or the way we teach it, but becoming familiar with them is to programmers what learning the Beatles' greatest hits is to musicians.&lt;/p></description></item><item><title>Free As In Pretty Much Whatever You Want</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/free-as-in-pretty-much-whatever-you-want/</link><pubDate>Tue, 04 Sep 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/free-as-in-pretty-much-whatever-you-want/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>A couple of different people have asked us recently whether they can use our materials in their courses. The answer is an emphatic "yes": all of our slides, essays, posts, and what-not are covered by the &lt;a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons &amp;mdash; Attribution license&lt;/a>, and all of our code is covered by the open source &lt;a href="http://opensource.org/licenses/mit-license.php">MIT License&lt;/a>, so basically, you can do whatever you want, whenever you want, without seeking special permission. (And yes, this means you can charge for your courses, even though we don't charge for ours.) The only requirement (imposed by the CC-BY license) is that you cite us as the source, and of course we'd be grateful if you'd point us at your material and/or send us any changes you make.&lt;/p></description></item><item><title>Lifted by the Audience</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/lifted-by-the-audience/</link><pubDate>Sun, 02 Sep 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/09/lifted-by-the-audience/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I spent Thursday and Friday recording most of the material we've been using in workshops for the past six months [&lt;a href="#1">1&lt;/a>]. One thing that kept bugging me was how flat and uninspiring it was to talk to a camera: I had forgotten just how much a live audience energizes me. I also realized how much I rely on people's questions, and the expressions on their faces, to keep me on track: it took me almost 15 minutes to remember that I needed to explain that Python uses indentation to show nesting, whereas I &lt;em>always&lt;/em> do that at the right time in a live class because someone either asks or looks puzzled.&lt;/p></description></item><item><title>A Problem With Badges</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/08/a-problem-with-badges/</link><pubDate>Wed, 29 Aug 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/08/a-problem-with-badges/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We issued the first learning badges for Software Carpentry a couple of weeks ago, and in doing so, uncovered a significant flaw in the design of existing badging systems. My intent was to give a bunch of people "Instructor" badges; by mistake, I set the pulldown to "Organizer", then clicked "Issue". As a result, two dozen people got the wrong kind of badge&amp;mdash;and there doesn't appear to be any way for me to undo that. According to Dave Lester, who created the &lt;a href="http://wordpress.org/extend/plugins/wpbadger/">WPBadger&lt;/a> plugin for WordPress that I'm using:&lt;/p></description></item><item><title>What We Talk About When We Talk About Software Carpentry</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/08/what-we-talk-about-when-we-talk-about-software-carpentry/</link><pubDate>Mon, 20 Aug 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/08/what-we-talk-about-when-we-talk-about-software-carpentry/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>&lt;img src="{{site.filesurl}}/swc_blog/2012/08/swc-wordle.png" />&lt;/p></description></item><item><title>A Question and Answer Matrix for Software Carpentry</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/08/a-question-and-answer-matrix-for-software-carpentry/</link><pubDate>Tue, 14 Aug 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/08/a-question-and-answer-matrix-for-software-carpentry/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Following up on yesterday's post about &lt;a href="{{site.baseurl}}/blog/2012/08/applying-pedagogical-principles-in-this-course.html">applying educational principles&lt;/a> to this course, here's a not-yet-completed Q&amp;amp;A matrix for this course. The section headings are questions people ask (or equivalently, tasks they want to perform). The headings underneath are the major topics Software Carpentry covers, and below each of those is my attempt to relate those topics to the questions. "TBD" means "I haven't written it yet", while "N/A" means "I can't think of any relationship." This matrix is going to be the basis of our next big reorganization of material (which should start this fall), so we would be &lt;em>very&lt;/em> grateful for your input:&lt;/p></description></item><item><title>Record and Playback</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/07/record-and-playback/</link><pubDate>Mon, 30 Jul 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/07/record-and-playback/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The biggest bottleneck Software Carpentry faces right now is a shortage of experienced instructors. To help fix that, we are going to record a complete presentation of our core two-day material so that people who want to teach it themselves can see &lt;em>how&lt;/em> we say things, as well as &lt;em>what&lt;/em> we say [&lt;a href="#1">1&lt;/a>, &lt;a href="#2">2&lt;/a>].&lt;/p>
&lt;p>As soon as we say "record", though, we have to ask, what exactly are we recording? Audio and video of a presenter in front of a whiteboard? Sure&amp;mdash;that helps humanize the presentation. But what about the presenter's desktop? Viewers definitely need to see it, but should they see an MP4 in which the text on the presenter's screen appears as colored pixels arranged in the shapes of characters, or should we record the characters directly? I think the latter is by far the best option, since:&lt;/p></description></item><item><title>Handling Variant Configuration Files</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/06/handling-variant-configuration-files/</link><pubDate>Tue, 26 Jun 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/06/handling-variant-configuration-files/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One of our learners came to us with a problem last week. The program she uses depends on some complex configuration files, which she'd like to store in version control. However, a couple of parameters change depending on the machine the program is running on. She doesn't want to check &lt;em>those&lt;/em> changes into version control over and over again; what should she do?&lt;/p></description></item><item><title>Ten Simple Rules</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/06/ten-simple-rules/</link><pubDate>Thu, 07 Jun 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/06/ten-simple-rules/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The "&lt;a href="http://www.ploscollections.org/article/browseIssue.action?issue=info:doi/10.1371/issue.pcol.v03.i01">Ten Simple Rules&lt;/a>" series being run in &lt;cite>PLoS Computational Biology&lt;/cite> has a lot of useful gems. Written by editor-in-chief Philip Bourne and others, the entire collection to date is available as &lt;a href="http://www.ploscollections.org/downloads/TenSimpleRulesCollection.pdf">a single PDF&lt;/a>, but for those who prefer bite-sized reading, here are ten simple rules for:&lt;/p>
&lt;ul>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1002439">Starting a Company&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1002439&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1002232">Getting Involved in Your Scientific Community&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1002232&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1002243">Teaching Bioinformatics at the High School Level&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1002243&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1002245">Developing a Short Bioinformatics Training Course&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1002245&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1002202">Getting Help from Online Scientific Communities&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1002202&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1002108">Building and Maintaining a Scientific Reputation&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1002108&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1001126">Providing a Scientific Web Resource&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1001126&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1002001">Getting Ahead as a Computational Biologist in Academia&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1002001&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1000941">Editing Wikipedia&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1000941&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1000650">Organizing a Virtual Conference&amp;mdash;Anywhere&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1000650&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1000517">Chairing a Scientific Session&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1000517&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1000388">Choosing between Industry and Academia&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1000388&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1000358">Combining Teaching and Research&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1000358&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1000080">Organizing a Scientific Meeting&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1000080&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1000024">Aspiring Scientists in a Low-Income Country&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.1000024&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.0030229">Graduate Students&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.0030229&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.0030213">Doing Your Best Research, According to Hamming&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.0030213&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.0030102">a Good Poster Presentation&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.0030102&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.0030077">Making Good Oral Presentations&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.0030077&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.0030044">a Successful Collaboration&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.0030044&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.0020121">Selecting a Postdoctoral Position&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.0020121&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.0020110">Reviewers&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.0020110&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.0020012">Getting Grants&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.0020012&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;li>...&lt;a href="http://www.ploscollections.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.0010057">Getting Published&lt;/a> (&lt;a href="http://www.ploscollections.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pcbi.0010057&amp;amp;representation=PDF">PDF&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>So, what would &lt;em>your&lt;/em> ten simple rules for good computational science be?&lt;/p></description></item><item><title>What Skills Are Required to Implement Open Access?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/06/what-skills-are-required-to-implement-open-access/</link><pubDate>Mon, 04 Jun 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/06/what-skills-are-required-to-implement-open-access/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Late last night, local time, the &lt;a href="https://wwws.whitehouse.gov/petitions/!/petition/require-free-access-over-internet-scientific-journal-articles-arising-taxpayer-funded-research/wDX82FLQ">Access2Research petition at whitehouse.gov&lt;/a> got 25,000 signatures, which means that the White House is committed to responding. As someone who no longer reviews for journals that aren't OA, I obviously think that's great news, but it once again raises the question: what concepts and skills do researchers need in order to &lt;em>implement&lt;/em> open access? Jon Udell has written at length about some things (most recently &lt;a href="http://www.wired.com/cloudline/2012/06/calendars-in-the-cloud/">here&lt;/a>), but to sharpen up the discussion:&lt;/p></description></item><item><title>SoundSoftware 2012: Workshop on Software and Data for Audio and Music Research</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/05/soundsoftware-2012-workshop/</link><pubDate>Wed, 30 May 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/05/soundsoftware-2012-workshop/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The SoundSoftware project &amp;mdash; a UK based project aiming towards software sustainability in the Audio and Music Research community &amp;mdash; is organising a one day workshop on "Software and Data for Audio and Music Research". The aim of this workshop is to discuss issues such as robust software development for audio and music research, reproducible research, management of research data, and open access.&lt;/p></description></item><item><title>An Exercise With Functions and Plotting</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/05/an-exercise-with-functions-and-plotting/</link><pubDate>Sun, 06 May 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/05/an-exercise-with-functions-and-plotting/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Let's say you have a text file called &lt;tt>workout.csv&lt;/tt> that contains information about your workouts for the month of March:&lt;/p>
&lt;pre># date, kind of workout, distance (miles), time (min)
"2012, Mar-01", run, 2, 25
"2012, Mar-03", bike, 10, 55
"2012, Mar-06", bike, 5, 20
"2012, Mar-09", run, 3, 42
"2012, Mar-10", skateboarding, 2, 10

# Broke my leg :(

"2012, Mar-11", Wii, 0, 60
"2012, Mar-12", Wii, 0, 60
"2012, Mar-13", Wii, 0, 60
"2012, Mar-14", Wii, 0, 60&lt;/pre>
&lt;p>It's a common-separated value (CSV) file, but contains comments and blank lines. The first line (a comment) describes the fields in this file, which are (from left to right) the date of your workout, the kind of workout, how many miles you traveled, and how many minutes you spent.&lt;/p></description></item><item><title>Video Update</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/04/video-update/</link><pubDate>Thu, 12 Apr 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/04/video-update/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Back in February, we asked people to &lt;a href="{{site.baseurl}}/blog/2012/02/watch-me-trial-run.html">make short screencasts&lt;/a> of themselves solving a simple programming problem. The submissions convinced us that it's a good idea, but so many people ran into so many problems that we're taking a step back and trying to write better instructions, select a simpler (more stable, more reliable) set of tools, etc. Some people's screen recording software stopped recording at 10 minutes without giving any signal; others produced files that play properly on some platforms, but have no audio on others; and screen resolution problems have made text unreadable in several cases. I didn't think this would be so hard in the early 21st Century, but then, I say that a lot...We'll pick this up again as soon as we can; in the meantime, our thanks (again) to everyone who has contributed so far.&lt;/p></description></item><item><title>Straw Man for Web Programming</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/04/straw-man-for-web-programming/</link><pubDate>Tue, 10 Apr 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/04/straw-man-for-web-programming/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Last week, I asked what &lt;a href="{{site.baseurl}}/blog/2012/04/what-to-teach-researchers-about-the-web.html">we should teach researchers about the web&lt;/a>. I think that I have an answer, and that the easiest way to describe it is by describing what we want learners to be able to build when we're done. So, imagine you are studying changes in rainfall due to climate change in North America. As part of that work, you're comparing results from your simulation with historical data from Environment Canada. Since your calculations may be useful to other scientists, you want to share them on the web. You are therefore going to build a command-line tool so that:&lt;/p></description></item><item><title>What to Teach Researchers About the Web</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/04/what-to-teach-researchers-about-the-web/</link><pubDate>Sun, 01 Apr 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/04/what-to-teach-researchers-about-the-web/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One reason I'm reflecting on &lt;a href="{{site.baseurl}}/blog/2012/04/sending-email-back-in-time.html">what I've learned in the last two years&lt;/a> is a question that is back on the top of my work pile: what should we teach researchers about the web? Partly, it's a priority because I'm currently embedded in Mozilla; their mandate is to defend and extend the open web, and their educational efforts are all aimed at that, so I ought to be doing something too. The real reason, though, is that a lot of things have brought this into sharper focus recently:&lt;/p></description></item><item><title>What We Teach in Two Days</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/03/what-we-teach-in-two-days/</link><pubDate>Fri, 30 Mar 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/03/what-we-teach-in-two-days/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>This week's workshops at MBARI and NERSC both had more lecturing and less hands-on practical work than either I or the students would have liked, but when we're trying to squeeze so many things into two days, that's probably unavoidable. We hope that the online tutorials we're going to run over the next few weeks will make up for that by giving learners a chance to practice their skills at leisure.&lt;/p></description></item><item><title>Programs as Experimental Apparatus</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/03/programs-as-experimental-apparatus/</link><pubDate>Mon, 05 Mar 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/03/programs-as-experimental-apparatus/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Suppose you have two photographs of a patch of the night sky:&lt;/p>
&lt;p>&lt;img src="{{site.filesurl}}/swc_blog/2012/03/ngc1333-noao.jpg" />&lt;/p>
&lt;p>and you want to know how different they are. The simplest way would be to see if any of the pixels' values differ, but that's pretty much guaranteed to return a "yes". A better measure is to see how many pixels differ by more than some threshold, but that raises two questions:&lt;/p></description></item><item><title>Badges (Finalized)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/badges-finalized/</link><pubDate>Mon, 27 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/badges-finalized/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have finalized our first set of &lt;a href="http://openbadges.org/">Software Carpentry badges&lt;/a>&amp;mdash;with luck, we'll list the first set of recipients later this week.&lt;/p>
&lt;table>
&lt;tbody>
&lt;tr>
&lt;td>&lt;img src="{{site.filesurl}}/swc_blog/2012/02/Badge_CoreSkills.png" />&lt;/td>
&lt;td>for people who complete the core curriculum&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;img src="{{site.filesurl}}/swc_blog/2012/02/Badge_Instructor.png" />&lt;/td>
&lt;td>for helping to teach (either workshops or online)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;img src="{{site.filesurl}}/swc_blog/2012/02/Badge_Organizer.png" />&lt;/td>
&lt;td>for organizing workshops&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;img src="{{site.filesurl}}/swc_blog/2012/02/Badge_Creator.png" />&lt;/td>
&lt;td>for creating (or fixing) content&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Frustration (continued)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/frustration-continued/</link><pubDate>Mon, 27 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/frustration-continued/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>It's been a frustrating couple of days. To recap, I want to convert our material from PowerPoint to HTML5 to make it easier for people to fork and merge, to make things easier to re-style, because it's an open format, and so on. David Seifried has welded an HTML5 audio player to Caleb Troughton's deck.js to create a display tool, which I'm very pleased with, but the content is killing me. Seriously. Here are three slides taken from our first episode on the Unix shell:&lt;/p></description></item><item><title>Fourth (or Sixth) Online Tutorial</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/fourth-or-sixth-online-tutorial/</link><pubDate>Fri, 24 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/fourth-or-sixth-online-tutorial/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>For the past four weeks, I've been meeting online with learners from the&lt;a href="http://www.stsci.edu"> Space Telescope Science Institute&lt;/a> to work through some Python topics and exercises. (We split the group in two for a couple of those sessions to accommodate different interests and levels.) I think it's been going pretty well: about half the people who took part in the two-day workshop in January are still with us, and we've just covered basic image processing with PIL. I'm looking forward to finding out whether the model scales to more groups with more people in the coming four months.&lt;/p></description></item><item><title>Should We Relocate Our Repository?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/should-we-relocate-our-repository/</link><pubDate>Thu, 23 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/should-we-relocate-our-repository/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Software Carpentry has been an open project since 2004: MIT License for the code, Creative Commons for everything else. All our stuff has lived in a public Subversion repository since then as well&amp;mdash;it's at &lt;a href="http://svn.software-carpentry.org/swc">http://svn.software-carpentry.org/swc&lt;/a> if you want to check it out. Today's question is, should we move that repo off our server and onto &lt;a href="https://github.com/">GitHub&lt;/a>, &lt;a href="https://bitbucket.org/">BitBucket&lt;/a>, or some other repo-hosting service? We want to make it easy for people to remix our content; as I said back in December, that means making it easy for them to &lt;a href="{{site.baseurl}}/blog/2011/12/fork-merge-and-share.html">fork, merge, and share&lt;/a>. Would you be more likely to do this if our slides, learning plans, diagrams, and code samples were on some well-known hosting site rather than in Subversion on our own machine?&lt;/p></description></item><item><title>Watch Me: Trial Run</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/watch-me-trial-run/</link><pubDate>Wed, 22 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/watch-me-trial-run/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>A dozen people have come forward since I asked last week for volunteers to make &lt;a href="{{site.baseurl}}/blog/2012/02/watch-me-volunteers-wanted.html">short screencasts showing how they program&lt;/a>. I just sent them a sample problem to work on to test things out (see below the fold); the videos they create won't be made public, but I hope it gives readers an idea of the scale of problems we're going to be looking at. If you have suggestions for interesting problems of a similar size, please add them as comments on this post.&lt;/p></description></item><item><title>Badges (Mark 1)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/badges-mark-1/</link><pubDate>Tue, 21 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/badges-mark-1/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One of our key deliverables for the &lt;a href="{{site.baseurl}}/blog/2012/01/sloan-foundation-grant-to-software-carpentry-and-mozilla.html">Sloan Foundation-funded work&lt;/a> is a &lt;a href="{{site.baseurl}}/blog/2012/01/badging.html">badging program&lt;/a> built on top of Mozilla's &lt;a href="http://openbadges.org/">Open Badges Initiative&lt;/a>. Riffing on our &lt;a href="{{site.baseurl}}/blog/2012/02/our-new-look.html">new logo&lt;/a>, Carri Han has designed three badges for us:&lt;/p>
&lt;table>
&lt;tbody>
&lt;tr>
&lt;td>&lt;img src="{{site.filesurl}}/swc_blog/2012/02/learner.png" />&lt;/td>
&lt;td>for people who have mastered our &lt;a href="{{site.baseurl}}/blog/2012/01/revising-the-curriculum.html">core content&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;img src="{{site.filesurl}}/swc_blog/2012/02/organizer.png" />&lt;/td>
&lt;td>for people who have organized and run workshops&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;img src="{{site.filesurl}}/swc_blog/2012/02/creator.png" />&lt;/td>
&lt;td>for people who have created content&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Please let us know what you think.&lt;/p></description></item><item><title>A Flash (well, MP4) from the Past</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/a-flash-well-mp4-from-the-past/</link><pubDate>Sun, 19 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/a-flash-well-mp4-from-the-past/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>In July 2009, we held a one-day symposium on open science at the University of Toronto. I recently uploaded video from those talks to YouTube; the audio is a bit shaky, but I hope they're useful despite that. The talks are linked below.&lt;/p>
&lt;p>Titus Brown: &lt;a href="http://youtu.be/1XAipuBacsE">Choosing Infrastructure and Testing Tools for Scientific Software Projects&lt;/a>&lt;/p>
&lt;p>Cameron Neylon: &lt;a href="http://youtu.be/JwhpENWQF6c">A Web Native Research Record: Applying the Best of the Web to the Lab Notebook&lt;/a>&lt;/p></description></item><item><title>Slide Drive</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/slide-drive/</link><pubDate>Wed, 15 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/slide-drive/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Speaking of new kinds of content (which I've &lt;a href="{{site.baseurl}}/blog/2012/01/never-mind-the-content-what-about-the-format.html">been&lt;/a> &lt;a href="{{site.baseurl}}/blog/2012/02/formatting-revisited.html">doing&lt;/a> &lt;a href="{{site.baseurl}}/blog/2012/02/new-kinds-of-content.html">a lot&lt;/a>), &lt;a href="http://dseifried.wordpress.com/">David Seifreid&lt;/a> has built a working prototype of a new slideshow tool that combines &lt;a href="http://imakewebthings.github.com/deck.js/">deck.js&lt;/a> with an HTML5 audio player. You can check out a demo or grab the source from &lt;a href="https://github.com/dseif/slide-drive">https://github.com/dseif/slide-drive&lt;/a>. Slides are pure HTML like this:&lt;/p>
&lt;pre>&amp;lt;section popcorn-slideshow="24"&amp;gt;
 &amp;lt;h2&amp;gt;Solution&amp;lt;/h2&amp;gt;
 &amp;lt;p&amp;gt;Short intensive workshops&amp;lt;/p&amp;gt;
 &amp;lt;div&amp;gt;
 Our solution combines short, intensive workshops...
 &amp;lt;/div&amp;gt;
 &amp;lt;div popcorn-slideshow="27"&amp;gt;
 &amp;lt;p&amp;gt;Plus self-paced online instruction&amp;lt;/p&amp;gt;
 &amp;lt;div&amp;gt;
 ...with self-paced online instruction.
 &amp;lt;/div&amp;gt;
 &amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;&lt;/pre>
&lt;p>which combines slide pages and transcripts in a single file suitable for diffing and merging. (Images are still in external files, but I can live with that.) You can pause the slideshow at any point to select and copy the content (something you definitely &lt;em>can't&lt;/em> do with a video), and we'll add support for translations into other languages and so on.&lt;/p></description></item><item><title>Watch Me: Volunteers Wanted</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/watch-me-volunteers-wanted/</link><pubDate>Wed, 15 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/watch-me-volunteers-wanted/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Back in 2007, Jon Udell observed that screencasts facilitate &lt;a href="http://blog.jonudell.net/2007/08/13/transmission-of-tacit-knowledge-teaching-what-we-dont-know-that-we-know/">accidental knowledge transfer&lt;/a> in a way that more traditional media don't. As I said &lt;a href="{{site.baseurl}}/blog/2012/02/new-kinds-of-content.html">yesterday&lt;/a>, we'd therefore like to start recording short screencasts of programmers thinking aloud as they solve small problems using their preferred tools. The aim is to show learners &lt;em>how&lt;/em> to program&amp;mdash;what order to write things in, how to debug, when and how much to test, and so on. Everything will be covered by the same Creative Commons license as our other material, and made freely available for remixing and other use.&lt;/p></description></item><item><title>New Kinds of Content</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/new-kinds-of-content/</link><pubDate>Tue, 14 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/new-kinds-of-content/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Mark Guzdial, whose blog on CS education is always interesting, recently posted about &lt;a href="http://computinged.wordpress.com/2012/02/14/using-a-worksheet-to-address-a-cs-education-problem/">using worksheets to help people learn to write programs&lt;/a>. As he says, research going back 30 years shows that &lt;em>reading&lt;/em> and &lt;em>writing&lt;/em> skills develop independently; there's also a ton of research showing that partially-worked examples are a very effective (possibly the most effective) way to teach people new skills.&lt;/p>
&lt;p>Which immediately suggests two questions:&lt;/p></description></item><item><title>Advertising Flyer</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/advertising-flyer/</link><pubDate>Mon, 13 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/advertising-flyer/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've put together a one-page flyer to advertise the course (each site would customize the "Local info" space at the bottom). Please let us know what you think...&lt;/p></description></item><item><title>Formatting Revisited</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/formatting-revisited/</link><pubDate>Mon, 13 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/formatting-revisited/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>&lt;a href="http://dseifried.wordpress.com/">David Seifreid&lt;/a> has been working for the past week to combine &lt;a href="http://imakewebthings.github.com/deck.js/">deck.js&lt;/a>, a Javascript-plus-CSS slideshow package, with the &lt;a href="https://github.com/dz0ny/AudioJS">AudioJS&lt;/a> audio player, so that we can re-do slides as pure HTML5 (instead of using PNGs exported from PowerPoint). At the same time, I'm trying to turn the course notes into long-form prose (what used to be called a "book") for people who prefer reading at leisure. How should all this content be managed? My &lt;a href="{{site.baseurl}}/blog/2012/01/never-mind-the-content-what-about-the-format.html">previous post&lt;/a> on 21st Century teaching formats described what I'd eventually like, but the tool I want doesn't exist yet, so what can be done now?&lt;/p></description></item><item><title>Our New Look</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/our-new-look/</link><pubDate>Mon, 13 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/our-new-look/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have a new logo:&lt;/p>
&lt;p>&lt;img src="{{site.filesurl}}/swc_blog/2012/02/logo.png" />&lt;/p>
&lt;p>which is also available in stacked form for coffee mugs (thanks, Steve):&lt;/p>
&lt;p>&lt;img src="{{site.filesurl}}/swc_blog/2012/02/stacked-logo.png" />&lt;/p>
&lt;p>We also have some &lt;a href="http://www.cafepress.ca/swcarpentry">merchandise&lt;/a>, and the first batch of laptop stickers is on its way :-)&lt;/p></description></item><item><title>Pre-Workshop Questionnaire</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/pre-workshop-questionnaire/</link><pubDate>Sun, 12 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/pre-workshop-questionnaire/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've been asking people to fill in the short questionnaire below before our workshops in order to give us a better idea of what they want and what they already know. How do you score, and how could we improve the questions?&lt;/p>
&lt;ol>
&lt;li>Roughly what fraction of your working time do you spend creating, modifying, or testing software?&lt;/li>
&lt;li>What operating system will you be using in this class?
&lt;ul>
&lt;li>Linux&lt;/li>
&lt;li>Mac OS X&lt;/li>
&lt;li>Windows&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Do you understand the following Unix shell commands well enough to explain them to someone else?
&lt;ul>
&lt;li>ls data/*.txt&lt;/li>
&lt;li>find ~ -name '*.py' -print&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Do you understand the following Subversion commands well enough to explain them to someone else?
&lt;ul>
&lt;li>svn update&lt;/li>
&lt;li>svn diff -r 1723&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Do you understand the following Python statements well enough to explain them to someone else?
&lt;ul>
&lt;li>{'east' : 5, 'west' : 11}&lt;/li>
&lt;li>__init__(self, *args)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Do you understand the following testing concepts well enough to explain them to someone else?
&lt;ul>
&lt;li>fixture&lt;/li>
&lt;li>mock object&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Do you understand the following Make terms and commands well enough to explain them to someone else?
&lt;ul>
&lt;li>dependency&lt;/li>
&lt;li>cp $&amp;lt; $@&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Do you understand the following SQL terms and commands well enough to explain them to someone else?
&lt;ul>
&lt;li>select * from data where data.left &amp;lt; data.right;&lt;/li>
&lt;li>inner join&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>What do you hope to gain from this workshop? What could we do to make it most useful for you?&lt;/li>
&lt;/ol></description></item><item><title>Comparing Software Carpentry to CS Principles</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/comparing-software-carpentry-to-cs-principles/</link><pubDate>Thu, 09 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/comparing-software-carpentry-to-cs-principles/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>A lot of new educational initiatives in computing have sprung up in the past couple of years, ranging from Mozilla's &lt;a href="http://hackasaurus.org/">Hackasaurus&lt;/a> to the UK &lt;a href="http://royalsociety.org/education/policy/computing-in-schools/report/">rethinking its grade-school curriculum&lt;/a>. One of the biggest is the "&lt;a href="http://www.csprinciples.org/">Computer Science: Principles&lt;/a>" project in the United States, which, with backing from the National Science Foundation, is trying to re-define the high school Advanced Placement course. They have some well-grounded ideas about what should be taught and why; how does Software Carpentry compare?&lt;/p></description></item><item><title>Multiple Pitches</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/multiple-pitches/</link><pubDate>Thu, 09 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/multiple-pitches/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Based on the feedback we've had on my first attempt [no longer online] at "Software Carpentry in 90 Seconds", it seems as though we should actually create three videos:&lt;/p>
&lt;ol>
&lt;li>one aimed at potential participants, i.e., students, workshop organizers, and content creators (since we're hoping these will largely be the same people);&lt;/li>
&lt;li>one for potential sponsors, who are both funding bodies and the senior scientists who set strategic direction for departments and disciplines; and&lt;/li>
&lt;li>some "talking head" testimonials from former participants.&lt;/li>
&lt;/ol>
&lt;p>Does this sound like the right breakdown?&lt;/p></description></item><item><title>Software Carpentry in a Minute and a Half</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/software-carpentry-in-a-minute-and-a-half/</link><pubDate>Thu, 02 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/software-carpentry-in-a-minute-and-a-half/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've recorded a first draft of the quick introduction &lt;a href="{{site.baseurl}}/blog/2012/02/re-doing-the-three-minute-pitch.html">I mentioned yesterday&lt;/a>. Feedback would be very welcome.&lt;/p></description></item><item><title>Re-doing the Three-Minute Pitch</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/re-doing-the-three-minute-pitch/</link><pubDate>Wed, 01 Feb 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/02/re-doing-the-three-minute-pitch/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>It's time to revise Software Carpentry's three-minute pitch. Here's what I think I need to say; as always, comments would be welcome.&lt;/p>
&lt;p>Opening slide: large logo, the title "Computing Skills for Scientists and Engineers", and a small block at the bottom with the date and license.&lt;/p>
&lt;p>Our mission is&lt;/p>
&lt;ul>
&lt;li>to help scientists and engineers be more productive...&lt;/li>
&lt;li>...by teaching them basic computing skills&lt;/li>
&lt;/ul>
&lt;p>The problem is&lt;/p></description></item><item><title>Learners and Their Needs</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/learners-and-their-needs/</link><pubDate>Sun, 29 Jan 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/learners-and-their-needs/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I originally wrote these descriptions as part of a post on &lt;a href="{{site.baseurl}}/blog/2012/01/never-mind-the-content-what-about-the-format.html">formats for learning material&lt;/a>. I'm finding them useful in &lt;a href="{{site.baseurl}}/blog/2012/01/terminology.html">other contexts&lt;/a> as well, so I'm re-posting them separately. Our description of our audience describes four scientific users in more detail.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Zuzel&lt;/em> likes textbooks. More specifically, she likes prose that she can read and re-read at leisure. She'll use a tablet, but would rather listen to music while she learns than to someone lecturing.&lt;/li>
&lt;li>&lt;em>Yeleina&lt;/em> prefers interactive learning. She wants to see things evolve on the whiteboard or on the screen; recordings of live coding sessions with voiceover are OK, but slide after slide of bullet points puts her to sleep. She also wants to be able to share ideas about learning content with her peers.&lt;/li>
&lt;li>&lt;em>Xanthe&lt;/em> is a surfer, not a diver&amp;mdash;she wants to skim the pages that Giggle searches turn up and piece things together herself. Bullet points and brief sentences work well for her, particularly in areas she's already familiar with.&lt;/li>
&lt;li>&lt;em>Wafiya&lt;/em> teaches programming at a city library. She needs to remix content created by other educators to meet her learners' needs, but doesn't have a lot of time to do so. She also needs to be able to find content that fits into her (individualized and group) learning plans.&lt;/li>
&lt;li>&lt;em>Veronique&lt;/em> is a programmer who is passionate about teaching. She spends several hours a week writing short tutorials, answering questions in Stuck Underflow and other online forums, and occasionally recording screencasts. She'd like to do more with less effort (she finds today's tools frustrating), to make the content she's creating more useful, and to get more feedback from its users.&lt;/li>
&lt;li>&lt;em>Ursula&lt;/em>'s preferences are more constrained than Zuzel's, Yeleina's, or Xanthe's because she is visually impaired. Her main assistive aid, a screen reader, can only "see" text (captions in PNG or JPEG images don't count), and becomes confused when pages are modified in place by Javascript.&lt;/li>
&lt;li>&lt;em>Tahura&lt;/em> is an assistant professor at a medium-sized university. She has to teach three undergraduate courses each year, one of which is always "Introduction to Scientific Programming". While she'd like to experiment with new teaching methods, her priority right now is to get tenure, so she (reluctantly) sticks to the university's traditional format: three hour-long lectures a week, one homework exercise every three weeks, a midterm, and a final exam.&lt;/li>
&lt;/ul></description></item><item><title>Terminology</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/terminology/</link><pubDate>Sun, 29 Jan 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/terminology/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Before going further with the &lt;a href="{{site.baseurl}}/blog/2012/01/take-out-agile-and-add-what.html">redesign of the Software Carpentry curriculum&lt;/a>, I need to define a few terms and their relationships. These definitions refer to another post on &lt;a href="{{site.baseurl}}/blog/2012/01/learners-and-their-needs.html">learners and their needs&lt;/a>, which you may want to read first.&lt;/p>
&lt;ul>
&lt;li>A &lt;em>concept&lt;/em> is an atom of learning. It can be a &lt;em>fact&lt;/em> (e.g., what a call stack is), a &lt;em>technique&lt;/em> (e.g., how to pass parameters to a function), or a &lt;em>rule&lt;/em> (e.g., when to copy data).&lt;/li>
&lt;li>An &lt;em>association&lt;/em> is any connection between two concepts. Obviously, all concepts in a topic should be strongly associated.&lt;/li>
&lt;li>A &lt;em>dependency&lt;/em> is a prerequisite association between two concepts. Circular dependencies may exist (you can't understand A unless you understand B, which depends on C, which in turn depends on A), but we'll work hard to avoid such cycles, since every particular learner encounters concepts in some sequential order.&lt;/li>
&lt;li>A &lt;em>topic&lt;/em> is a set of related concepts; for example, the topics "Parameters" includes all of the concepts described above. A concept may be part of several topics, but for learning purposes, we would like its first appearance &lt;em>for an individual learner&lt;/em> to be gentler than subsequent appearances for that same learner.&lt;/li>
&lt;li>A &lt;em>lesson&lt;/em> is an atom of teaching. It will typically comprise a small number (1-4) of closed-related concepts, and be a few minutes long. Where possible, it should be followed immediately by some kind of reinforcement (discussed below). A concept may appear in several lessons (same idea, different contexts).&lt;/li>
&lt;li>A &lt;em>tutorial &lt;/em>is a specific sequence of lessons on related topics; for example, the tutorial "Functions" would include lessons on parameters, returning values, and so on. Tutorials aren't strictly necessary for free-range learners&amp;mdash;they can go through lessons in any order that respects dependencies&amp;mdash;but we must define them:
&lt;ul>
&lt;li>to give learners like Zuzel the larger narrative arcs they need (learners like Xanthe only need lessons); and&lt;/li>
&lt;li>to give instructors like Tahura, who are working in traditional classroom settings, guidance on how to fill an hour-long lecture.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Reinforcement &lt;/em>is something done to help people absorb a concept, such as further examples, class discussion, quizzes, or exercises. All four are problematic:
&lt;ul>
&lt;li>Further examples are based on guesses of what learners might not have understood correctly; such guesses are often wrong.&lt;/li>
&lt;li>Class discussion is hard to implement for asynchronous, self-directed learners.&lt;/li>
&lt;li>Multiple choice quizzes can mislead or frustrate learners (most questions have more than one right answer), or fail to clear up learners' misconceptions ("You're wrong, but I won't tell you why").&lt;/li>
&lt;li>Long-answer quizzes and exercises require a human assessor's attention (which is also hard to implement for asynchronous learners).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Assessment&lt;/em>is anything done to determine how well something else has been done. "How well" is important: assessment will not always (or even usually) be black-and-white. Specific kinds are:
&lt;ul>
&lt;li>&lt;em>formative&lt;/em> assessment, which provides short-term diagnostic feedback to learners and teachers;&lt;/li>
&lt;li>&lt;em>summative&lt;/em> assessment, which demonstrates attainment of some level; and&lt;/li>
&lt;li>&lt;em>evaluative&lt;/em> assessment, which tell us how well the teaching is working.&lt;/li>
&lt;/ul>
Formative assessment is a kind of reinforcement; summative and evaluative are (usually) not.&lt;/li>
&lt;/ul>
&lt;p>The diagram below shows these relationships. I've drawn most relationships as many-to-many, but in practice, we hope that most will actually be one-to-many, i.e., that concepts will fit neatly into topics, and topics into lessons. The one-to-one relationship between summative assessments and topics is also a bit misleading: what it's meant to imply is that any particular learner will eventually demonstrate mastery of some topic (e.g., Yeleina will show that she understands functions). This is the smallest "chunk" for which we'd contemplate awarding a badge, though as &lt;a href="{{site.baseurl}}/blog/2012/01/badging.html">discussed earlier&lt;/a>, we're going to start with something coarser-grained.&lt;/p></description></item><item><title>Never Mind the Content, What About the Format?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/never-mind-the-content-what-about-the-format/</link><pubDate>Thu, 26 Jan 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/never-mind-the-content-what-about-the-format/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I'm still gnawing on the problem of how to construct content for 21st Century learning&amp;mdash;or, more prosaically, what I should use to build the next version of Software Carpentry. My starting point is the need to serve several different kinds of users [&lt;a id="a1" href="#f1">1&lt;/a>], whose descriptions I have moved to a separate post on &lt;a href="{{site.baseurl}}/blog/2012/01/learners-and-their-needs.html">learners and their needs&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>&lt;em>Textbook&lt;/em>: big blocks of prose in some narrative order, with pictures, either printed or electronic, read at the learner's pace, alone.
&lt;ul>
&lt;li>Zuzel likes this.&lt;/li>
&lt;li>Yeleina doesn't.&lt;/li>
&lt;li>Xanthe uses content out of order via the index or search bar.&lt;/li>
&lt;li>Wafiya remixes content from several textbooks to create lessons (by photocopying, merging PDFs, or whatever). Like Zuzel, she has read content in order, but like Xanthe, she mainly uses the index now.&lt;/li>
&lt;li>Veronique has thought about writing one, but (a) doesn't think she has that much to say about any single topic, and (b) is put off by the effort that would be required.&lt;/li>
&lt;li>Note: the comments below about the difficulty of copying, pasting, and altering also apply to electronic textbooks, as do the proposed remedies.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Static slideshow&lt;/em>: a page-by-page dump of a PowerPoint deck, possibly accompanied by a transcript of what the lecturer would say when delivering it.
&lt;ul>
&lt;li>Zuzel uses this as if it were a badly-written textbook, with the transcript as the prose and the slides as diagrams.&lt;/li>
&lt;li>Yeleina finds it distracting to switch attention back and forth from slides to transcript.&lt;/li>
&lt;li>Xanthe searches the transcript to find what she wants, then curses because her search engine can't "see" the text in the slides. She also hates the fact that she can't copy and paste the code in the slides (since they're PNGs embedded in a web page).&lt;/li>
&lt;li>Wafiya remixes this content like any other. She's too polite to curse, but she finds it tedious to re-type the code that's shown in the slides (but isn't duplicated as text in the accompanying transcript). She's also finds it wearying to have to re-do diagrams: since the slides are PNGs, it's difficult for her to copy part of a slide, move its elements around, and add a few of her own.&lt;/li>
&lt;li>Veronique doesn't create material in this format because she thinks it's old-fashioned and not useful.&lt;/li>
&lt;li>Note: source code can be made available as copy-and-pasteable text directly in the page, or for download; diagrams can similarly be made available as SVGs to facilitate remixing. Doing either currently requires considerable extra work on the part of content creators.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Voice-over slideshow screencast&lt;/em>: a video recording of the slides (as they would appear on screen in a lecture) with someone speaking over them, and subtitles.
&lt;ul>
&lt;li>Zuzel ignores the video and reads the transcript as if it were a static slideshow. If a transcript isn't available, she (reluctantly) watches the video.&lt;/li>
&lt;li>Yeleina prefers this to a static slideshow, but prefers the doodling screencast described below even more.&lt;/li>
&lt;li>Xanthe hits the "back" button as soon as she realizes it's a video (unless there's a transcript, in which case she curses because she can't copy and paste code out of a video).&lt;/li>
&lt;li>Wafiya directs students like Yeleina to these, but finds them harder to remix than other formats.&lt;/li>
&lt;li>Veronique thinks this format is also old-fashioned and not useful.&lt;/li>
&lt;li>Note: I'm assuming the subtitles are duplicated as a transcript, or available in some other searchable form. I'm also assuming that code is available for donwload or duplicated in the page for coying and pasting, though all of this requires extra work.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Voice-over doodling screencast&lt;/em>: a Khan Academy-style recording of someone doodling on a tablet or coding live.
&lt;ul>
&lt;li>Zuzel treats this like a slideshow screencast.&lt;/li>
&lt;li>Yeleina likes this format a lot, particularly if she can add comments at specific points and see her peers' comments.&lt;/li>
&lt;li>Xanthe has mixed feelings: she dislikes explanations delivered this way, but frequently watches "how to" videos, since they're more likely to be accurate and complete than written descriptions.&lt;/li>
&lt;li>Wafiya treats these like slideshow screencasts.&lt;/li>
&lt;li>Veronique creates these fairly regularly: they're easy to do, and easy to re-do when systems change or she discovers a mistake.&lt;/li>
&lt;li>Note: I'm making the same assumptions about transcripts, code, and diagrams as above.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Recorded whiteboard lecture&lt;/em>: someone with a camera has recorded someone giving a lecture in a lecture hall, and spliced that with whatever was on the lecturer's screen.
&lt;ul>
&lt;li>Zuzel treats this like any other screencast.&lt;/li>
&lt;li>Yeleina prefers this to doodling screencasts because she can see the speaker's body language.&lt;/li>
&lt;li>Xanthe treats these like any other screencast, i.e., she'll use it if there's a searchable transcript and things to copy and paste, or if it's a recording of a live "how to" coding session.&lt;/li>
&lt;li>Wafiya treats these like slideshow screencasts.&lt;/li>
&lt;li>Veronique doesn't create these, partly because of the setup required, but also because she doesn't think seeing her adds value&amp;mdash;the lesson's supposed to be about the stuff.&lt;/li>
&lt;li>Note: I'm assuming an electronic whiteboard, since video of someone writing on an actual whiteboard is usually illegible.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Radio drama&lt;/em>: a voice-only podcast-style presentation.
&lt;ul>
&lt;li>Zuzel ignores the audio and reads the text transcript.&lt;/li>
&lt;li>Ditto for Yeleina.&lt;/li>
&lt;li>Ditto for Xanthe.&lt;/li>
&lt;li>Ditto for Wafiya.&lt;/li>
&lt;li>Veronique doesn't create these.&lt;/li>
&lt;li>Note: but for Ursula, who is blind, this is the &lt;em>only&lt;/em> format&amp;mdash;all the others fold into it. She doesn't need code samples as text for copying and pasting: she needs them so that her screen reader can tell her what's that code contains.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Star Wars&lt;/em>: high-quality video with custom animations, cut scenes, and other special effects.
&lt;ul>
&lt;li>Zuzel watches these sometimes, but doesn't learn any more from them than she would from a slideshow.&lt;/li>
&lt;li>Yeleina enjoys these, which means she pays more attention to them, which means she learns more (but no more than she'd learn from an engaging lecturer).&lt;/li>
&lt;li>Xanthe doesn't see the point. Unless something blows up.&lt;/li>
&lt;li>Wafiya likes their high production values, and remixes the special effects segments frequently.&lt;/li>
&lt;li>Veronique can't afford to produce this kind of material.&lt;/li>
&lt;li>Note: again, I'm making assumptions about transcripts, copy-and-pasting, etc.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Write your own adventure&lt;/em>exploration: typically a set of connected ideas or challenges with explicit dependency information (i.e., you should/must learn A and B before tackling C).
&lt;ul>
&lt;li>Zuzel finds the lack of narrative difficult.&lt;/li>
&lt;li>Yeleina enjoys these if each node in the graph is in one of her preferred formats. She enjoys them even more if she is exploring with peers.&lt;/li>
&lt;li>Xanthe ignores the ordering and searches for what (she thinks) she needs. If content is locked down&amp;mdash;i.e., if the system won't let her see or search C until she's "completed" A and B&amp;mdash;she writes an angry tweet and moves on.&lt;/li>
&lt;li>Wafiya likes this format for several reasons, but only if everything is always visible. First, it tells her how other teachers think ideas connect (something that is missing or out-of-band for other delivery formats). Second, it's easy to remix: again, providing it's open, she can reorder things as she thinks best for particular learners.&lt;/li>
&lt;li>Veronique would like to do this, but has discovered that creating the metadata about dependencies and recommended paths is as hard as writing a textbook.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Wander around&lt;/em>exploration: lots of little snippets, but no explicit dependency information.
&lt;ul>
&lt;li>Zuzel finds this even more difficult.&lt;/li>
&lt;li>Yeleina likes this less than the "write your own adventure" format: she thinks it's no different than just using Giggle to find things.&lt;/li>
&lt;li>Xanthe likes this &lt;em>because&lt;/em> it's just like using Giggle searches. In fact, she uses every other format as if it were this one.&lt;/li>
&lt;li>Wafiya feels the same way as Yeleina: she likes having stuff to remix, but she has to do that remixing before this material is useful to those of her students who aren't as independent as Xanthe.&lt;/li>
&lt;li>Veronique creates content like this almost without realizing it by answering questions at Stuck Underflow.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Jam session&lt;/em>: a bunch of learners in a room working through material simultaneously.
&lt;ul>
&lt;li>Zuzel doesn't like it: it's too noisy for her to concentrate, and she can't go back at her own pace to review.&lt;/li>
&lt;li>Yeleina thinks this is the best... thing... ever.&lt;/li>
&lt;li>Xanthe is Giggling for information as soon as the presenter tells people what the topic is, but will stop and watch carefully when the presenter is typing live on screen.&lt;/li>
&lt;li>Wafiya can only book space to do this occasionally, and even then, she doesn't enjoy improv teaching.&lt;/li>
&lt;li>Veronique enjoys doing this&amp;mdash;she's volunteers with a local free-range learning group&amp;mdash;but can only find time once every couple of months.&lt;/li>
&lt;li>Note: in theory this can be combined with any of the formats above. In practice, it's almost always short, live lectures interspersed with hands-on practical work.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;em>Personal tutoring&lt;/em>: one-to-one instruction, a.k.a. "pair learning".
&lt;ul>
&lt;li>Zuzel doesn't mind this, but she really does prefer books...&lt;/li>
&lt;li>Yeleina actually prefers jam sessions, since they tend to be more lively.&lt;/li>
&lt;li>Xanthe likes having someone available to answer questions on demand, but is happy Giggling on her own for most of what she needs.&lt;/li>
&lt;li>Wafiya wishes she could do this with every one of her learners, but there simply aren't enough hours in the day. The personalized lesson plans she draws up are the closest approximation she can manage.&lt;/li>
&lt;li>Veronique does this a lot, but is frustrated that it doesn't scale&amp;mdash;she really wants to help more than one person at a time.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>I'm sure some of the above is inconsistent or just plain wrong, but here are my takeaways:&lt;/p></description></item><item><title>Take Out Agile, and Add...What?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/take-out-agile-and-add-what/</link><pubDate>Tue, 24 Jan 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/take-out-agile-and-add-what/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Based on the feedback we've received so far (both as comments and by email), it looks like we should take development methodologies (i.e., agile development) out of the &lt;a href="{{site.baseurl}}/blog/2012/01/revising-the-curriculum.html">core curriculum&lt;/a> and replace it with two hours on:&lt;/p>
&lt;ol>
&lt;li>Nothing: there's already too much in the core.&lt;/li>
&lt;li>Spreadsheets: because many scientists use them badly.&lt;/li>
&lt;li>NumPy and/or Pandas: because many of them are crunching matrices/doing stats.&lt;/li>
&lt;li>Visualization: which in practice would mean the basics of matplotlib.&lt;/li>
&lt;li>Image manipulation: because it's fun as well as useful, and lets us talk about binary vs. text data.&lt;/li>
&lt;/ol>
&lt;p>I am quite arbitrarily limiting options to those five. Please cast your vote (one vote, not three out of five) in comments. We'd be grateful if you could include a brief explanation as well.&lt;/p></description></item><item><title>Revising the Curriculum</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/revising-the-curriculum/</link><pubDate>Mon, 23 Jan 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/revising-the-curriculum/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've been thinking some more about what the foundation and core of Software Carpentry actually are (and not just because Jon Pipitone keeps pestering me to do so). My last attempt had a foundation of seven principles and dozen topics in the core. I think I can slim that down even further; in fact, I think three big principles form the foundation of computational thinking:&lt;/p></description></item><item><title>The What, Why, and How of Bootcamps</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/the-what-why-and-how-of-boot-camps/</link><pubDate>Fri, 13 Jan 2012 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2012/01/the-what-why-and-how-of-boot-camps/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We've just added a &lt;a href="{{site.baseurl}}/workshops/">single-page description&lt;/a> of the two-day bootcamps we're planning to run in the next six months. In brief, their aim is to ensure that people have a few core skills, so that they can tackle our online material productively, and to help them get past startup hurdles such as software installation. If you have questions, comments, or suggestions, please add them to that page; if you'd us to help you organize and run a bootcamp, please &lt;a href="mailto:{{site.contact}}">get in touch&lt;/a>.&lt;/p></description></item><item><title>Updating to HTML 5</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/10/updating-to-html-5/</link><pubDate>Fri, 14 Oct 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/10/updating-to-html-5/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We are looking for a volunteer to update our episodes on HTML to the new HTML 5 standard. The changes are (probably) fairly minor, and as always, we'll help with post-production (editing of audio, etc.). If you're interested, please &lt;a href="mailto:{{site.contact}}">get in touch&lt;/a>.&lt;/p></description></item><item><title>Four New Episodes on Databases Using Microsoft Access</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/10/four-new-episodes-on-databases-using-microsoft-access/</link><pubDate>Fri, 07 Oct 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/10/four-new-episodes-on-databases-using-microsoft-access/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Thanks to the indefatigable &lt;a href="http://whitelab.weecology.org/">Ethan White&lt;/a>, we have just added four more episodes on using databases with Microsoft Access:&lt;/p>
&lt;ul>
&lt;li>aggregating data&lt;/li>
&lt;li>combining data with 'join'&lt;/li>
&lt;li>nested queries&lt;/li>
&lt;li>handling missing data&lt;/a> &lt;/li>
&lt;/ul>
&lt;p>We hope you enjoy them.&lt;/p></description></item><item><title>I'm Not Normally Lost for Words</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/09/im-not-normally-lost-for-words/</link><pubDate>Tue, 20 Sep 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/09/im-not-normally-lost-for-words/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I &lt;a href="{{site.baseurl}}/blog/2011/09/what-happens-when-you-install-something.html">mentioned last week&lt;/a> that I'm trying to put together a lecture on packaging and installation. It's proving harder than I expected: I'm not normally lost for words, but I'm struggling to get these ones to come together. My goal is to help people understand what happens when they install software on a computer, so that they can:&lt;/p>
&lt;ol>
&lt;li>diagnose and fix problems when things go wrong;&lt;/li>
&lt;li>understand why the things that are in packaging tools are there, and how to use them.&lt;/li>
&lt;/ol>
&lt;p>After a few false starts, I think the best way to do this will be challenge/response, i.e., trace the evolution of a typical scientific software package from a single Python file shared by email to a mix of Python and C that plays nicely with distutils2. Steps I've identified are:&lt;/p></description></item><item><title>Progress Of A Sort</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/09/progress-of-a-sort/</link><pubDate>Tue, 13 Sep 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/09/progress-of-a-sort/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>As I &lt;a href="{{site.baseurl}}/blog/2011/05/damn-the-torpedoes.html">mentioned&lt;/a> a few months ago, I'm going to turn Software Carpentry into a book. Here's the present status:&lt;/p>
&lt;p>&lt;img src="{{site.filesurl}}/swc_blog/2011/09/Screenshot.png" />&lt;/p>
&lt;table>
&lt;tbody>
&lt;tr>
&lt;td>Chapter&lt;/td>
&lt;td align="right">Word Count&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Introduction&lt;/td>
&lt;td align="right">768&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Spreadsheets&lt;/td>
&lt;td align="right">3924&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Subversion&lt;/td>
&lt;td align="right">6405&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Python&lt;/td>
&lt;td align="right">6345&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Interlude: What Is Text?&lt;/td>
&lt;td align="right">1071&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Functions and Libraries&lt;/td>
&lt;td align="right">9409&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Interlude: Boolean Logic&lt;/td>
&lt;td align="right">921&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Case Study: Invasion Percolation&lt;/td>
&lt;td align="right">8929&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Interlude: How Are Numbers Stored?&lt;/td>
&lt;td align="right">1828&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Testing&lt;/td>
&lt;td align="right">4549&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Error Handling&lt;/td>
&lt;td align="right">1529&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>The Shell&lt;/td>
&lt;td align="right">12919&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Make&lt;/td>
&lt;td align="right">5668&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Interlude: Provenance&lt;/td>
&lt;td align="right">1810&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sets and Dictionaries&lt;/td>
&lt;td align="right">7627&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Case Study: Phylogenetic Trees&lt;/td>
&lt;td align="right">1689&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Systems Programming&lt;/td>
&lt;td align="right">60&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Interlude: Configuring Programs&lt;/td>
&lt;td align="right">2146&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Numerical Programming&lt;/td>
&lt;td align="right">6193&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Multimedia Programming&lt;/td>
&lt;td align="right">4125&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Steganography&lt;/td>
&lt;td align="right">1657&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Installation&lt;/td>
&lt;td align="right">135&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>HTML and XML&lt;/td>
&lt;td align="right">6404&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Databases&lt;/td>
&lt;td align="right">10676&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Regular Expressions&lt;/td>
&lt;td align="right">8037&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Object-Oriented Programming&lt;/td>
&lt;td align="right">4002&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Building Desktop GUIs&lt;/td>
&lt;td align="right">137&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Interlude: Persistence&lt;/td>
&lt;td align="right">5984&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Web Programming&lt;/td>
&lt;td align="right">9639&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Security&lt;/td>
&lt;td align="right">1285&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Performance&lt;/td>
&lt;td align="right">8043&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Parallel Programming&lt;/td>
&lt;td align="right">931&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Software Engineering&lt;/td>
&lt;td align="right">6391&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Epilog&lt;/td>
&lt;td align="right">873&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Acknowledgments&lt;/td>
&lt;td align="right">202&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Glossary&lt;/td>
&lt;td align="right">12074&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bibliography&lt;/td>
&lt;td align="right">3378&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Total&lt;/strong>&lt;/td>
&lt;td align="right">&lt;strong>167,763&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>167,673 words might seem like a lot, but based on past experience, I think I'm about halfway to a readable book&amp;mdash;editing is always as much work as writing stuff in the first place.&lt;/p></description></item><item><title>What Happens When You Install Something?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/09/what-happens-when-you-install-something/</link><pubDate>Thu, 08 Sep 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/09/what-happens-when-you-install-something/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The most frustrating part of this course is always getting things set up on students' machines. (Yes, we could give them all a Linux VM with everything installed properly, but if they're going back to Windows or Mac OS when the course is over, that's what they want to learn on.) Setting up a development environment is often just as frustrating for professionals (it took many of us half a day to get &lt;a href="https://github.com/p2pu/lernanta">Lernanta&lt;/a> running on our machines a few weeks ago), so I think we'd be doing Software Carpentry students a favor if we taught them what actually happens when you install software. Knowing that would help them debug things when they go wrong (and they &lt;em>always&lt;/em> go wrong), and also help them understand why packaging their own work to share with others is as complicated as it is. My first cut at a syllabus for such a lecture is:&lt;/p></description></item><item><title>Teaching Security to Scientists</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/09/teaching-security-to-scientists/</link><pubDate>Fri, 02 Sep 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/09/teaching-security-to-scientists/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Thanks to everyone for their suggestions regarding what we should teach about computer security if we only have one hour (the usual constraint for topics in this course). The outline below is based in part on the lecture on security from Version 3 of this course, in part on &lt;a href="http://www.rickwash.com/papers/rwash-homesec-soups10-final.pdf">Rick Wash's excellent study of folks models of computer security&lt;/a>, and in part on mistakes I've seen (or made) myself in the past five years. Feedback would be very welcome, but remember: we're teaching scientists and engineers who are programming as a way to do science, not as an end in itself.&lt;/p></description></item><item><title>Introducing Programming a Different Way</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/08/introducing-programming-a-different-way/</link><pubDate>Mon, 08 Aug 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/08/introducing-programming-a-different-way/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Our quick introduction to Python is the module I'm least happy with, so I've been thinking about how to re-design it. I've included a new outline below; comments would be very welcome.&lt;/p>
&lt;hr />
&lt;p>Programming is what you do when you can't find an off-the-shelf tool to do what you want&lt;/p>
&lt;ul>
&lt;li>Scientists' needs are so specialized that there often isn't such a tool&lt;/li>
&lt;li>Even if it exists, the cost of finding it may be too high (can't Google by semantics)&lt;/li>
&lt;/ul>
&lt;p>Why is programming hard to teach/learn?&lt;/p></description></item><item><title>New Episode: MATLAB Structs and Cell Arrays</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/06/new-episode-matlab-structs-and-cell-arrays/</link><pubDate>Wed, 15 Jun 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/06/new-episode-matlab-structs-and-cell-arrays/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The title says it all: thanks to the tireless Tommy Guy, we have a new episode on MATLAB structs and cell arrays.&lt;/p></description></item><item><title>Audio Processing in Python</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/06/audio-processing-in-python/</link><pubDate>Fri, 10 Jun 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/06/audio-processing-in-python/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Thanks to Becky Stewart, we now have a 12-minute episode on audio processing in Python. We hope you find it useful&amp;mdash;as always, feedback is very welcome.&lt;/p></description></item><item><title>Five on Systems Programming</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/06/five-on-systems-programming/</link><pubDate>Thu, 02 Jun 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/06/five-on-systems-programming/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Thanks the &lt;a href="http://software.ac.uk/">Software Sustainability Institute&lt;/a>'s Mike Jackson, we now have five episodes on how to inspect and manipulate files and directories from inside a Python program&amp;mdash;many thanks. If you would like to contribute to this project as well, please get in touch.&lt;/p></description></item><item><title>Damn the Torpedoes (but I could use some help navigating)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/05/damn-the-torpedoes/</link><pubDate>Fri, 13 May 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/05/damn-the-torpedoes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Despite &lt;a href="{{site.baseurl}}/blog/2011/04/by-the-numbers.html">my own calculations&lt;/a> (which were optimistic to begin with, and are more so now that I have a new job), I'm going to try to turn Software Carpentry into a book. Here's what's I'm planning to include, and its presesnt status; I would be &lt;em>very&lt;/em> grateful for feedback, especially from alumni, about what doesn't need to be here, and what's missing. I think I'm still overshooting the knowledge and needs of far too many people; if you think so too, please let me know.&lt;/p></description></item><item><title>Managing Data</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/05/managing-data/</link><pubDate>Mon, 02 May 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/05/managing-data/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have just posted a screencast on managing data written by Orion Buske, a graduate student in bioinformatics at the University of Toronto (and former Software Carpentry TA). We hope you enjoy it.&lt;/p></description></item><item><title>Chapters</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/04/chapters/</link><pubDate>Sat, 23 Apr 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/04/chapters/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've converted three more Software Carpentry lectures to chapter format, bringing the total to four:&lt;/p>
&lt;ol>
&lt;li>the shell&lt;/li>
&lt;li>number crunching with NumPy&lt;/li>
&lt;li>regular expressions&lt;/li>
&lt;li>software engineering&lt;/li>
&lt;/ol>
&lt;p>It's all CC-A licensed, and yeah, the images could be a lot better: they're just screen captures from the original PowerPoint slides, because re-doing them as SVG felt even more like &lt;a href="http://en.wiktionary.org/wiki/yak_shaving">yak shaving&lt;/a> than converting the text. Please let me know if this is useful.&lt;/p></description></item><item><title>Prototyping</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/04/prototyping/</link><pubDate>Mon, 11 Apr 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/04/prototyping/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The &lt;a href="{{site.baseurl}}/blog/2011/04/by-the-numbers.html">numbers might not make sense&lt;/a>, but I'm still curious about whether Software Carpentry would make sense as a book. To find out, I spent five hours converting the existing lecture on regular expressions to chapter format. I'd welcome feedback about how useful this is. In particular, without the highlighting and animation of PowerPoint slides and video, how much harder is it to understand what's going on? What could be done to make it easier? More pictures? (I really want to draw arrows to point at the tabs and spaces in the sample data files...) Fully &lt;a href="http://yoyodyne.cc/h/">hyperlinked audio&lt;/a>? Side-by-side display of code and text (which would be difficult to squeeze in, but not impossible)? Please let me know...&lt;/p></description></item><item><title>Using Bein</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/using-bein/</link><pubDate>Thu, 31 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/using-bein/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Many thanks to Frederick Ross for putting together a short screencast on Bein, a workflow manager and miniature laboratory information management system (LIMS) built in Python that fills the gap for the working scientist between the classical shell and big workflow managers like &lt;a href="http://galaxy.psu.edu/">Galaxy&lt;/a> and major LIMS systems like &lt;a href="http://www.cisd.ethz.ch/software/openBIS">OpenBIS&lt;/a>. Please have a look and see if it could help make your computational life easier.&lt;/p></description></item><item><title>And I'm on a Horse</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/and-im-on-a-horse/</link><pubDate>Sat, 26 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/and-im-on-a-horse/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Patrick Mackenzie (whom I've never met) gave &lt;a href="http://akshat.posterous.com/patio11-says-hello-ladies">a good lightning talk&lt;/a> at the Business of Software that sums up a lot of what we &lt;em>haven't&lt;/em> done for Software Carpentry. Any reworking of the material really (really) has to be built around what you (the researchers) need, rather than what we (the programmers) know.&lt;/p></description></item><item><title>A Better Way to Teach Programming to Scientists</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/a-better-way-to-teach-programming-to-scientists/</link><pubDate>Thu, 24 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/a-better-way-to-teach-programming-to-scientists/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>This year's &lt;a href="http://www.sigcse.org/sigcse2011/">SIGCSE conference&lt;/a> on computer science education featured a very cool paper by Robbins, Senseman, and Pate, of the University of Texas at San Antonio, called "Teaching Biologists to Compute using Data Visualization". In it, they describe &lt;a href="http://www.cs.utsa.edu/~cs1173/">CS 1173: Data Analysis and Visualization using MATLAB&lt;/a>, which introduces students in the life sciences to programming using a problem-first approach. Like the media-first approach that &lt;a href="http://www.cc.gatech.edu/~guzdial/">Mark Guzdial&lt;/a> and his colleagues introduced at Georgia Tech, this rewards students right away&amp;mdash;they don't have to wade through a "CS first" morass of data types and arcane rules about Boolean expressions for three or four weeks in order to get to the useful bits. Given another year, I'd have rewritten our intro to Python this way...&lt;/p></description></item><item><title>Our First Episode on Microsoft Access</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/our-first-episode-on-microsoft-access/</link><pubDate>Wed, 23 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/our-first-episode-on-microsoft-access/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have just posted our first episode on using a database with Microsoft Access &amp;mdash; many thanks to Utah State's &lt;a href="http://whitelab.weecology.org/">Ethan White&lt;/a> for creating it.&lt;/p></description></item><item><title>You'll Need a Large Screen</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/youll-need-a-large-screen/</link><pubDate>Tue, 22 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/youll-need-a-large-screen/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've been working on a graph showing&lt;/p>
&lt;ul>
&lt;li>the connections between the questions this course tries to address,&lt;/li>
&lt;li>our answers to them,&lt;/li>
&lt;li>the knowledge and skills needed to understand and apply those answers, and&lt;/li>
&lt;li>the big concepts behind that knowledge and those skills.&lt;/li>
&lt;/ul>
&lt;p>The latest version is linked from the thumbnail below. I know it's tangled, but I hope it's the first step toward a roadmap for redesigning this course to serve your needs better. Feedback and assistance would both be very welcome.&lt;/p></description></item><item><title>Using a Debugger</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/using-a-debugger/</link><pubDate>Mon, 21 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/using-a-debugger/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We've just uploaded a new video showing how to use a debugger to track down a problem. Using a debugger instead of 'print' statements will save you a lot of time, and the skill transfers directly to pretty much any language. Please let us know what you think.&lt;/p></description></item><item><title>Videos of Autumn School Lectures</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/videos-of-autumn-school-lectures/</link><pubDate>Mon, 21 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/videos-of-autumn-school-lectures/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I'm pleased to announce that video recordings of the Software Carpentry lectures I gave in London last fall are now online at &lt;a href="http://soundsoftware.ac.uk/autumnschool2010video">http://soundsoftware.ac.uk/autumnschool2010video&lt;/a>. Please excuse the mustache&amp;mdash;I don't know &lt;em>what&lt;/em> I was thinking... Many thanks to Chris Cannam, Ivan Damnjanovic, Luis Figueira, and of course Mark Plumbley.&lt;/p></description></item><item><title>Questions and Answers</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/questions-and-answers/</link><pubDate>Thu, 17 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/questions-and-answers/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>A first cut of a &lt;a href="{{site.baseurl}}/blog/2011/03/twenty-questions-minus-two.html">question-and-answer matrix&lt;/a> for this course is now up for viewing. It doesn't include everything, and the answers aren't particularly helpful without a second matrix showing how they connect to specific lecture topics and big principles, but I hope it's a start. Please give feedback as comments on this post; we'll add more Q's and A's in the coming days.&lt;/p></description></item><item><title>Graph Layout, Models vs. Views, and Computational Thinking</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/graph-layout-models-vs-views-and-computational-thinking/</link><pubDate>Wed, 16 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/graph-layout-models-vs-views-and-computational-thinking/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Money for me to keep working full-time on Software Carpentry hasn't materialized, so as I've mentioned in a couple of recent posts, I'm trying to find a way to organize the course material more coherently in the hope that other people will (finally) start to contribute content as well. As part of that, I have spent the last two days trying to draw a graph showing the questions Software Carpentry seeks to answer, and the concepts that underpin the answers. It's been harder than I expected, and I think the reasons might give some insight into how a computational thinker thinks.&lt;/p></description></item><item><title>Twenty Questions (Minus Two)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/twenty-questions-minus-two/</link><pubDate>Tue, 15 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/twenty-questions-minus-two/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Following up on last week's &lt;a href="{{site.baseurl}}/blog/2011/03/musing-about-reorganization.html">musings about reorganizing the course&lt;/a>, we've drawn up eighteen questions that we think cover the reasons people come to this course. That leaves us two short of the traditional twenty: what would &lt;em>you&lt;/em> add to this list?&lt;/p>
&lt;ol>
&lt;li>How can I automate this task?&lt;/li>
&lt;li>How can I read/control hardware?&lt;/li>
&lt;li>How can I control my program?&lt;/li>
&lt;li>How do I count things?&lt;/li>
&lt;li>How can I clean up this data?&lt;/li>
&lt;li>How can I get insight into my data?&lt;/li>
&lt;li>How do I track down bugs in my program?&lt;/li>
&lt;li>How can I parse this legacy data file?&lt;/li>
&lt;li>How can I save data so that I can read it later?&lt;/li>
&lt;li>How can I tell if my program is working correctly?&lt;/li>
&lt;li>How can I make this program easier to use?&lt;/li>
&lt;li>How can I use remote machines?&lt;/li>
&lt;li>How can I reuse this legacy program?&lt;/li>
&lt;li>How can I share my work with others?&lt;/li>
&lt;li>How can I make my program faster?&lt;/li>
&lt;li>How can I make my code easier to reuse?&lt;/li>
&lt;li>How can I keep track of my work?&lt;/li>
&lt;li>How can I plug my code into a framework like Galaxy or Taverna?&lt;/li>
&lt;/ol></description></item><item><title>Musing About Reorganization</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/musing-about-reorganization/</link><pubDate>Fri, 11 Mar 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/03/musing-about-reorganization/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I'm increasingly unhappy with the organization of this course. On the off chance that funding materializes and we're able to undertake a major redesign, I'd like to explain why and ask for your input.&lt;/p>
&lt;p>Right now, our lectures are broken into topics along lines a computer scientist would instantly recognize: basic programming, regular expressions, databases, and so on. That is &lt;em>not&lt;/em> how members of our intended audience see things when they first come to us&amp;mdash;if it was, they probably wouldn't need this course. They start with problems like:&lt;/p></description></item><item><title>An Easy Place to Start: Systems Programming</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/an-easy-place-to-start-systems-programming/</link><pubDate>Thu, 24 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/an-easy-place-to-start-systems-programming/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>As a follow-up to recent posts on &lt;a href="{{site.baseurl}}/blog/2011/02/how-to-contribute.html">how to contribute&lt;/a>, &lt;a href="{{site.baseurl}}/blog/2011/02/what-better-looks-like.html">what better looks like&lt;/a>, and Elango Cheran's &lt;a href="{{site.baseurl}}/blog/2011/02/ask-and-ye-shall-receive.html">secure shell episode&lt;/a>, here's a specific request: we would like three episodes on systems programming, by which we mean writing programs to:&lt;/p>
&lt;ul>
&lt;li>manipulate files and directories (chdir, stat, etc.)&lt;/li>
&lt;li>working with archives (tar, zip, etc.)&lt;/li>
&lt;li>run other programs (the subprocess module in all its fearsome glory)&lt;/li>
&lt;/ul>
&lt;p>A typical use case is writing a Python script to run a compiled legacy application a few hundred times for slightly different parameter values, putting each run's output in a separate directory that's created on the fly, and so on. If you're interested, please get in touch &amp;mdash; it's easier than you think.&lt;/p></description></item><item><title>Ask, And Ye Shall Receive</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/ask-and-ye-shall-receive/</link><pubDate>Wed, 23 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/ask-and-ye-shall-receive/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Thanks to Elango Cheran, we now have an episode on the secure shell&amp;mdash;yay!&lt;/p></description></item><item><title>Three More Episodes on MATLAB</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/three-more-episodes-on-matlab/</link><pubDate>Sat, 19 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/three-more-episodes-on-matlab/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Three more episodes on MATLAB are now available, two on input and output, and one on plotting. Thanks to &lt;a href="http://www.cs.utoronto.ca/~guy/">Tommy Guy&lt;/a> for putting them together; as always, feedback is appreciated.&lt;/p></description></item><item><title>Mirroring Software Carpentry</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/mirroring-software-carpentry/</link><pubDate>Fri, 18 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/mirroring-software-carpentry/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>As another followup to the recent post on &lt;a href="{{site.baseurl}}/blog/2011/02/how-to-contribute.html">how to contribute&lt;/a>, I'd welcome pointers to places that might host or mirror Software Carpentry material. Efforts like MIT's OpenCourseware and CMU's Open Learning Initiative seem to host only the content they produce themselves; the &lt;a href="http://www.khanacademy.org/">Khan Academy&lt;/a> seems open to contributions, though I don't see any, and then there's &lt;a href="http://academicearth.org/">Academic Earth&lt;/a>. Where else could we put our content to get it in front of more people?&lt;/p></description></item><item><title>How to Contribute</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/how-to-contribute/</link><pubDate>Wed, 16 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/how-to-contribute/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Following up on &lt;a href="{{site.baseurl}}/blog/2011/02/top-ten-why-nots.html">yesterday's post&lt;/a>, I have written a short guide explaining how you can help Software Carpentry improve and grow. Reporting bugs, suggesting changes, contributing content, or running the course yourself: they're all a lot easier than you think, and a great way to gain some experience with new kinds of teaching and learning that are becoming more important with every passing year.&lt;/p></description></item><item><title>First Four MATLAB Episodes</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/first-four-matlab-episodes/</link><pubDate>Tue, 15 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/first-four-matlab-episodes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have just posted the first four episodes of our introduction to MATLAB; more should be up this week and next. As always, feedback is very welcome.&lt;/p></description></item><item><title>Audio for Three Software Engineering Episodes</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/audio-for-three-software-engineering-episodes/</link><pubDate>Mon, 14 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/audio-for-three-software-engineering-episodes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We've added audio (and a few images) for three of the episodes on software engineering (the introduction, agile development, and the principles of computational thinking). It's a slightly different format than most of our previous episodes, and we need to choose a better way of embedding MP3 audio in web pages, but we hope it's useful as is.&lt;/p></description></item><item><title>Two More Episodes on Spreadsheets</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/two-more-episodes-on-spreadsheets/</link><pubDate>Mon, 14 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/two-more-episodes-on-spreadsheets/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have added two more short episodes on spreadsheets, covering pivot tables and named cell ranges. Please let us know if you find them useful, and what else we should cover to help researchers who use spreadsheets to work with data.&lt;/p></description></item><item><title>Updates to Spreadsheet Lecture</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/updates-to-spreadsheet-lecture/</link><pubDate>Fri, 11 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/updates-to-spreadsheet-lecture/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have just posted updates to the first seven episodes of the lecture on spreadsheets: the new version uses Excel 2010, and the screencasts are larger to make things easier to see. Please let us know what you think.&lt;/p></description></item><item><title>What Computational Science Means to Me</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/what-computational-science-means-to-me/</link><pubDate>Tue, 08 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/what-computational-science-means-to-me/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>My latest attempt to define what "computational thinking" actually means is now on the web in draft form&amp;mdash;comments would be very welcome. In brief, the eight principles are:&lt;/p>
&lt;ul>
&lt;li>It's all just data.&lt;/li>
&lt;li>Data doesn't mean anything on its own&amp;mdash;it has to be interpreted.&lt;/li>
&lt;li>Programming is about creating and composing abstractions.&lt;/li>
&lt;li>Models are for computers, and views are for people.&lt;/li>
&lt;li>Paranoia makes us productive.&lt;/li>
&lt;li>Better algorithms always trump better hardware.&lt;/li>
&lt;li>Automation is the key to acceleration.&lt;/li>
&lt;li>The tool shapes the hand.&lt;/li>
&lt;/ul></description></item><item><title>Scripts for Two More Software Engineering Episodes</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/scripts-for-two-more-software-engineering-episodes/</link><pubDate>Thu, 03 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/scripts-for-two-more-software-engineering-episodes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We've posted the scripts for two more episodes on software engineering (but not the slides or videos, since they don't exist yet). I'm not happy with the discussion of agile: it feels like too much has been left out, but I'm not sure what to add without breaking our self-imposed 10-minute limit. I also don't know how much our audience &lt;em>needs&lt;/em> to know: these episodes are meant to be end-of-course pointers to other material they could look at next, so we're after a big-picture guide to "should I dig deeper" rather than the details. As always, feedback is welcome...&lt;/p></description></item><item><title>First Episode on Software Engineering</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/first-episode-on-software-engineering/</link><pubDate>Tue, 01 Feb 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/02/first-episode-on-software-engineering/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I know we promised a lecture on high-performance computing, but today wound up going in a different direction: we have just posted an episode on empirical results in software engineering, which we hope will set the stage for discussion of how to manage larger teams and projects. We hope you enjoy hearing about some of the science behind the things this course teaches; as always, feedback is welcome.&lt;/p></description></item><item><title>A Competence Matrix for Software Carpentry</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/a-competence-matrix-for-software-carpentry/</link><pubDate>Mon, 31 Jan 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/a-competence-matrix-for-software-carpentry/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Last summer, we tried to create a concept map showing how the big ideas in Software Carpentry related to each other. We weren't satisfied with it, so we set it aside. With our first anniversary coming up in three months, though, it's time to revisit the idea of a high-level overview of the course. To that end, I have posted a first attempt at a competence matrix that organizes skills into levels. Please leave comments on that page telling me what's wrong or missing.&lt;/p></description></item><item><title>Notes Toward a Lecture on High-Performance Computing</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/notes-toward-a-lecture-on-high-performance-computing/</link><pubDate>Thu, 27 Jan 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/notes-toward-a-lecture-on-high-performance-computing/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>As I've said several times now, we're going to add a lecture on high-performance computing to the course. We have rough outlines of the content in the version control repository, and feedback would be very welcome.&lt;/p>
&lt;ol>
&lt;li>&lt;a href="http://svn.software-carpentry.org/swc/4.0/topics/hpc/intro/script.txt">Introduction&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://svn.software-carpentry.org/swc/4.0/topics/hpc/original/script.txt">The Example Application&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://svn.software-carpentry.org/swc/4.0/topics/hpc/seq/script.txt">Improving Sequential Performance&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://svn.software-carpentry.org/swc/4.0/topics/hpc/profile/script.txt">Profiling&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://svn.software-carpentry.org/swc/4.0/topics/hpc/theory/script.txt">Parallelism Defined&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://svn.software-carpentry.org/swc/4.0/topics/hpc/arch/script.txt">Computer Architecture in Ten Minutes or Less&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://svn.software-carpentry.org/swc/4.0/topics/hpc/taskfarm/script.txt">Task Farming&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://svn.software-carpentry.org/swc/4.0/topics/hpc/mpi/script.txt">Basic MPI&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://svn.software-carpentry.org/swc/4.0/topics/hpc/collective/script.txt">Collective Operations in MPI&lt;/a>&lt;/li>
&lt;/ol></description></item><item><title>Software Carpentry Sprint in July</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/software-carpentry-sprint-in-july/</link><pubDate>Wed, 26 Jan 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/software-carpentry-sprint-in-july/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Well this was a nice birthday present: the Python Software Foundation &lt;a href="http://pythonsprints.com/2011/01/25/sponsoring-software-carpentry-2011/">announced&lt;/a> today that they will provide some support for a Software Carpentry sprint in Toronto in July. Thanks, folks&amp;mdash;we'll post details about what, when, and where as soon as we have them.&lt;/p></description></item><item><title>How to Cite Software Carpentry</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/how-to-cite-software-carpentry/</link><pubDate>Thu, 20 Jan 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/how-to-cite-software-carpentry/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>If you are citing Software Carpentry in papers or technical reports, the web site and the 2006 article in &lt;cite>Computing in Science &amp;amp; Engineering&lt;/cite> are probably best; the other articles below provide other background that might also be useful. I hope to update the 2006 article some time this year, but a lot of other things are ahead of it in queue...&lt;/p></description></item><item><title>Version Control and Newline Conventions</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/newline/</link><pubDate>Wed, 19 Jan 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/newline/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>There are two widely used conventions for representing the end of a line and the start of the next. Unix-like systems have traditionally used one character, \n (ASCII 10, "line feed"), while Microsoft DOS and Windows used a sequence \r\n (ASCII 13, "carriage return", \n). Being invisible, the difference of conventions usually goes unnoticed, specially because most modern software can correctly display text written with either one. However, there can be interoperability issues when using editors that follow different conventions.&lt;/p></description></item><item><title>Slower Than Expected</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/slower-than-expected/</link><pubDate>Mon, 10 Jan 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/slower-than-expected/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We've started work on the high-performance computing lecture, and as part of that, we'd like to set a puzzle for our more advanced readers. We've written several versions of invasion percolation; the two of interest here use a list-based representation for the underlying grid, and a NumPy array. Run either program as:&lt;/p>
&lt;pre>python filename.py -g -n 31 -v 100&lt;/pre>
&lt;p>&lt;code>-g&lt;/code> turns off the end-of-run graphical display; &lt;code>-n 31&lt;/code> tells the program to use a 31&amp;times;31 grid; and &lt;code>-v 100&lt;/code> tells it to initialize cells to random values between 0 and 100. Try varying the size, compare the speeds of the two programs, see if you can figure out why one is faster than the other, and then tell us:&lt;/p></description></item><item><title>First Half of Lecture on Object-Oriented Programming</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/first-half-of-lecture-on-object-oriented-programming/</link><pubDate>Thu, 06 Jan 2011 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2011/01/first-half-of-lecture-on-object-oriented-programming/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The first four episodes of our lecture on object-oriented programming in Python are now available:&lt;/p>
&lt;ol>
&lt;li>Introduction&lt;/li>
&lt;li>Basics&lt;/li>
&lt;li>Interfaces&lt;/li>
&lt;li>Inheritance&lt;/li>
&lt;/ol>
&lt;p>There's (lots) more to come, but early feedback on these would be very welcome.&lt;/p></description></item><item><title>More Detailed Outline for HPC Lecture</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/more-detailed-outline-for-hpc-lecture/</link><pubDate>Thu, 30 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/more-detailed-outline-for-hpc-lecture/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've added a more detailed outline for a lecture on high-performance computing to the site; feedback on the content and order would be very welcome, as would pointers to tools that are easy to teach with (as opposed to being powerful in the hands of experienced users).&lt;/p></description></item><item><title>Elimination</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/elimination/</link><pubDate>Mon, 27 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/elimination/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I'm working up another essay on software design, and would like to ask readers of this blog how &lt;em>they&lt;/em> handle something that comes up when simulating interacting agents. If your program models the behavior of a flock of birds, it probably looks something like this:&lt;/p>
&lt;pre>&lt;span style="color: #800080;"># create birds&lt;/span>
birds = []
&lt;strong>for&lt;/strong> i &lt;strong>in&lt;/strong> range(num_birds):
 new_bird = Bird(...parameters...)
 birds.append(new_bird)

&lt;span style="color: #800080;"># simulate movement&lt;/span>
&lt;strong>for&lt;/strong> t &lt;strong>in&lt;/strong> range(num_timesteps):
 &lt;strong>for&lt;/strong> b &lt;strong>in&lt;/strong> birds:
 b.move(birds) &lt;span style="color: #800080;"># need access to other birds to calculate forces&lt;/span>&lt;/pre>
&lt;p>There's a flaw in this&amp;mdash;or at least, something questionable. By the time you are moving the last bird for time &lt;em>t&lt;/em>, every other bird is effectively at time &lt;em>t+1&lt;/em>. There are many solutions, the simplest of which is to calculate each bird's new position in one loop, then update the bird in another:&lt;/p></description></item><item><title>Local Subversion Repositories</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/local-subversion-repositories/</link><pubDate>Sun, 26 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/local-subversion-repositories/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>A colleague in the UK who is going to teach Software Carpentry asked about setting up repositories. In particular, he doesn't have a server where he can create accounts and repos, so he was thinking of using Git or Mercurial, and having students host their repos on their own machines. That's not actually necessary: if you're going the locally-hosted route, and giving each student a separate repository, you can still use Subversion: just use the "file:" protocol for connecting instead of "http:" or "svn+ssh:". For example:&lt;/p></description></item><item><title>Extended Examples</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/extended-examples/</link><pubDate>Thu, 23 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/extended-examples/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We'd like to add more extended examples to this course, both because they're fun and because they're a good way to show how our topics relate to one another. Right now, we have:&lt;/p>
&lt;ul>
&lt;li>an entire lecture on invasion percolation (which we'll shorten),&lt;/li>
&lt;li>phylogenetic tree reconstruction, and&lt;/li>
&lt;li>how to recommend papers to people.&lt;/li>
&lt;/ul>
&lt;p>We plan to add a simple N-body simulation (easy to do badly, motivates testing, visualization, and a bit of numerical analysis), but after that, we'd like to find some examples from psychology, linguistics, and other areas that are starting to do more computational work. Parsing text files full of patient records, putting the information in a database, doing some analysis using SQL, and visualizing the results is one possibility; what else would you recommend or like to see?&lt;/p></description></item><item><title>Slides for First Five OO Episodes Online</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/slides-for-first-five-oo-episodes-online/</link><pubDate>Mon, 13 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/slides-for-first-five-oo-episodes-online/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Slides for the first five episodes of our lecture on object-oriented programming are now online; we'd welcome feedback on the approach we're taking. If you like what you see, we'll try to have recordings up before the holiday break.&lt;/p></description></item><item><title>Performance and Parallelism</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/performance-and-parallelism/</link><pubDate>Fri, 10 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/performance-and-parallelism/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Some topics for a lecture on parallel programming:&lt;/p>
&lt;ol>
&lt;li>how to measure/compare performance (raw speed, weak scaling, strong scaling, Amdahl's Law, response time vs. throughput)&lt;/li>
&lt;li>the register/cache/RAM/virtual memory/local disk/remote storage hierarchy and the relative performance of each (order of magnitude)&lt;/li>
&lt;li>in-processor pipelining (or, why branches reduce performance, and why vectorized operations are a good thing)&lt;/li>
&lt;li>how that data-parallel model extends to distributed-memory systems, and what the limits of that model are&lt;/li>
&lt;li>the shared-memory (threads and locks) model, its performance&lt;br />
limitations, deadlock, and race conditions&lt;/li>
&lt;li>the pure task farm model, its map/reduce cousin, and their limitations&lt;/li>
&lt;li>the actors model (processes with their own state communicating only through messages, as in MPI)&lt;/li>
&lt;/ol>
&lt;p>It's too much (each point should be an hour-long lecture in its own right, rather than 10-12 minutes of a larger lecture); what do we cut, and what's in there that doesn't need to be?&lt;/p></description></item><item><title>Where Are My Keys?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/where-are-my-keys/</link><pubDate>Thu, 09 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/where-are-my-keys/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I was looking through some Python code a few days ago, and noticed that its author was using this:&lt;/p>
&lt;pre>if something in dict.keys():
 dict[something] += 1&lt;/pre>
&lt;p>instead of:&lt;/p>
&lt;pre>if something in dict:
 dict[something] += 1&lt;/pre>
&lt;p>It seems like a small difference, but it's actually a very important one. The second form checks to see whether &lt;code>something&lt;/code> is a key in the dictionary &lt;code>dict&lt;/code>. The first form, on the other hand, creates a list of all the keys in the dictionary, then searches that list from start to finish to see if &lt;code>something&lt;/code> is there. They both produce the right answer, but the fast form does it in constant time, while the slow form (the one with the call to &lt;code>dict.keys()&lt;/code>) takes time proportional to the size of the dictionary. The really bad news is, the "error" is silent.&lt;/p></description></item><item><title>How Do You Manage a Terabyte?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/how-do-you-manage-a-terabyte/</link><pubDate>Wed, 08 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/how-do-you-manage-a-terabyte/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>This question has come up a couple of times, and I'd welcome feedback from readers. Suppose you have a large, but not enormous, amount of scientific data to manage: too much to easily keep a copy on every researcher's laptop, but not enough to justify buying special-purpose storage hardware or hiring a full-time sys admin. What do you do? Break it into pieces, compress them with gzip or its moral equivalent, put the chunks on a central server, and create an index so that people can download and uncompress what they need, when they need it? Or...or what? What do &lt;em>you&lt;/em> do, and why?&lt;/p></description></item><item><title>Approaching Objects from a New Direction</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/approaching-objects-from-a-new-direction/</link><pubDate>Tue, 07 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/approaching-objects-from-a-new-direction/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have just posted early drafts of slides for the first two episodes of our lecture on object-oriented programming. These take a "nuts and bolts" approach, showing more about how objects work than is usual in an introductory course in the hopes of dispelling some of the mystery and confusion that often surrounds them. Feedback would be very welcome...&lt;/p></description></item><item><title>Pins, Balls, and Arbitrary Decisions</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/pins-balls-and-arbitrary-decisions/</link><pubDate>Mon, 06 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/pins-balls-and-arbitrary-decisions/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We'd like to include more extended examples like invasion percolation in this course, but they're surprisingly hard to write. One that seems simple at first is a &lt;a href="http://en.wikipedia.org/wiki/Bean_machine">Galton box&lt;/a> simulator. As the diagram below shows, this is simply a a vertical board with interleaved rows of pins. Small balls are dropped in at the top, and bounce left and right as they hit pins until they land in the boxes at the bottom. Since each bounce randomly goes left or right, the distribution of balls is binomial, which, in the limit, approximates a normal distribution.&lt;/p></description></item><item><title>Cast Your Votes</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/cast-your-votes/</link><pubDate>Thu, 02 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/cast-your-votes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The &lt;a href="http://en.wiktionary.org/wiki/solstitial">solstitial&lt;/a> holiday is approaching fast, but with a bit of luck, we should be able to get one more lecture up on the web before it arrives. Topics we could tackle are:&lt;/p>
&lt;ol>
&lt;li>a survey of empirical results in software engineering,&lt;/li>
&lt;li>building desktop GUIs,&lt;/li>
&lt;li>handling XML, or&lt;/li>
&lt;li>object-oriented programming.&lt;/li>
&lt;/ol>
&lt;p>(Web programming isn't on the list because it will take more time than we have.) If you have a preference, please cast your vote in a comment on this post...&lt;/p></description></item><item><title>Prerequisites (or, When to Say No)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/prerequisites-or-when-to-say-no/</link><pubDate>Thu, 02 Dec 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/12/prerequisites-or-when-to-say-no/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>How much should Software Carpentry assume students know before they start? Or to put a sharper point on it, how much should this course &lt;em>require&lt;/em> students to know? To date, we have said that students should have at least one prior programming course, and have to understand loops, conditionals, functions, arrays, and simple file I/O: the kinds of things that are usually (but not always) covered in a CS-1 course, and hopefully remembered thereafter. To make this more concrete, we've said that students should be able to solve this problem in the language of their choice:&lt;/p></description></item><item><title>First Four Episodes on Multimedia</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/first-four-episodes-on-multimedia/</link><pubDate>Tue, 30 Nov 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/first-four-episodes-on-multimedia/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Our first four episodes on multimedia programming, which cover basic image processing, are now online&amp;mdash;comments are welcome.&lt;/p></description></item><item><title>Next Part of Persistence Essay Online</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/next-part-of-persistence-essay-online/</link><pubDate>Fri, 26 Nov 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/next-part-of-persistence-essay-online/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The second part of the discussion of persistence is now online. We're almost up to how Python's 'pickle' module works; should get there over the weekend or on Monday.&lt;/p></description></item><item><title>Hours So Far</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/hours-so-far/</link><pubDate>Thu, 25 Nov 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/hours-so-far/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The chart below shows cumulative hours on Software Carpentry since we started working on Version 4 in May. We're not as far along as I'd like, but progress has been pretty steady...&lt;/p>
&lt;p>&lt;img src="{{site.filesurl}}/swc_blog/2010/11/hours.png" alt="Software Carpentry hours May-November 2011" />&lt;/p></description></item><item><title>Four Episodes on Matrix Programming</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/four-episodes-on-matrix-programming/</link><pubDate>Tue, 23 Nov 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/four-episodes-on-matrix-programming/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>&lt;a href="http://www.cs.utoronto.ca/~guy/">Tommy Guy&lt;/a> has recorded four introductory episodes on matrix programming with NumPy covering:&lt;/p>
&lt;ol>
&lt;li>Introduction&lt;/li>
&lt;li>Basic operations&lt;/li>
&lt;li>Indexing&lt;/li>
&lt;li>Linear algebra&lt;/li>
&lt;/ol>
&lt;p>Please have a look and let us know what you think.&lt;/p></description></item><item><title>Phylogenetic Trees</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/phylogenetic-trees/</link><pubDate>Tue, 23 Nov 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/phylogenetic-trees/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>&lt;a href="http://www.elangocheran.com/blog/">Elango Cheran&lt;/a> has recorded an episodes for the sets &amp;amp; dictionaries lecture on reconstructing phylogenetic trees. It's a neat application of dictionaries to a problem that's usually explained as a matrix. Please check it out and let us know what you think.&lt;/p></description></item><item><title>Now Annotated</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/now-annotated/</link><pubDate>Fri, 19 Nov 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/now-annotated/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have added brief notes on the books in the course's &lt;a href="{{site.filesurl}}/bib/software-carpentry.bib">bibliography&lt;/a>&amp;mdash;we hope you find them useful.&lt;/p></description></item><item><title>New Section for Essays</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/new-section-for-essays/</link><pubDate>Wed, 17 Nov 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/new-section-for-essays/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>By popular request, we have moved the longer essay-style posts to a new section of this web site. We have also added a new essay on saving and loading data that also talks about metadata, registries, and the open/closed principle.&lt;/p></description></item><item><title>Ratios and Rework</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/ratios-and-rework/</link><pubDate>Tue, 16 Nov 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/ratios-and-rework/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>It's been six months and a bit since we started working on Version 4 of this course, so I'd like to share two things we've learned about creating online tutorial videos:&lt;/p>
&lt;ol>
&lt;li>It takes a long time.&lt;/li>
&lt;li>A lot of that time feels like it should be unnecessary.&lt;/li>
&lt;/ol>
&lt;p>Let's start with "a long time". It takes me 3-5 hours to prepare a good slide deck for an hour-long lecture that I'm going to deliver in person. A slide deck for a screencast takes 8-10, because I need to prepare more slides: since there isn't a lecturer making eye contact and pointing at things to keep viewers engaged, a slide deck for online use has to have many more small transitions.&lt;/p></description></item><item><title>Counting Things (Part 2)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/counting-things-part-2/</link><pubDate>Sun, 07 Nov 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/11/counting-things-part-2/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>This post has been moved.&lt;/p></description></item><item><title>Counting Things (Part 1)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/counting-things-part-1/</link><pubDate>Sun, 31 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/counting-things-part-1/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>This post has been moved.&lt;/p></description></item><item><title>Dubois on Maintaining Correctness</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/dubois-on-maintaining-correctness/</link><pubDate>Sat, 30 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/dubois-on-maintaining-correctness/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Something else I didn't get to at the Met Office last week:&lt;/p>
&lt;blockquote>&lt;p>Paul F. Dubois: "Maintaining Correctness in Scientific Programs". &lt;em>Computing in Science &amp;amp; Engineering&lt;/em>, May-June 2005, &lt;a href="http://doi.ieeecomputersociety.org/10.1109/MCSE.2005.54">http://doi.ieeecomputersociety.org/10.1109/MCSE.2005.54&lt;/a>.&lt;/p>&lt;/blockquote>
&lt;p>Please, please, please, if you're building scientific software of any kind, find a copy and read it, because it's the best explanation I've ever found of why the right way to do it is, well, the right way to do it. Paul ties together a banker's dozen good ideas under the banner &lt;em>defense in depth&lt;/em>: no matter how scrupulous we are, any of these might fail, so we have others in place to catch the mistakes that creep through. To quote the list that opens the paper, they are:&lt;/p></description></item><item><title>Need Something to Debug</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/need-something-to-debug/</link><pubDate>Sat, 30 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/need-something-to-debug/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Following up on the &lt;a href="{{site.baseurl}}/blog/2010/10/dubois-on-maintaining-correctness.html">previous post&lt;/a> about the way Paul Dubois organizes good practices as "defense in depth", we would really like to include a lecture on debugging that does more than present a few general rules like "make sure you know what the right output is supposed to be" or "divide and conquer". More specifically, we need an example that contains a handful of qualitatively different bugs that can be found in qualitatively different ways: one by a code analyzer, another using coverage ("Wait, why isn't the 'else' ever being executed?"), a third by unit testing, a fourth by differential comparison of pre-change and post-change output, a fifth using breakpoints and single-stepping, and so on. If you have such an example, or are willing to help us construct one, please &lt;a href="mailto:{{site.contact}}">let us know&lt;/a>.&lt;/p></description></item><item><title>Would You Prefer...</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/would-you-prefer/</link><pubDate>Sat, 30 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/would-you-prefer/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Here are three instructional videos that I enjoyed watching:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://vimeo.com/3261363">The Crisis of Credit Visualized&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://prezi.com/aww2hjfyil0u/math-is-not-linear/">Math is Not Linear&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://comment.rsablogs.org.uk/2010/10/14/rsa-animate-changing-education-paradigms/">Changing Education Paradigms&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>What they have in common:&lt;/p>
&lt;ol>
&lt;li>They're informative.&lt;/li>
&lt;li>They're fun to watch.&lt;/li>
&lt;li>It must have taken a ton of work to create them.&lt;/li>
&lt;/ol>
&lt;p>So my questions are:&lt;/p>
&lt;ol>
&lt;li>Do you like them more than what we're doing?&lt;/li>
&lt;li>Are they "better enough" than what we're doing to justify the extra effort? We'd produce half as much material if we did this&amp;mdash;would that be a good tradeoff?&lt;/li>
&lt;/ol>
&lt;ol>&lt;/ol></description></item><item><title>Provenance (Or, What We Didn't Quite Get to at the Met Office)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/provenance-or-what-we-didnt-quite-get-to-at-the-met-office/</link><pubDate>Fri, 29 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/provenance-or-what-we-didnt-quite-get-to-at-the-met-office/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>This post has been moved.&lt;/p></description></item><item><title>Configuration Files</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/configuration-files/</link><pubDate>Sun, 24 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/configuration-files/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>This post has been moved.&lt;/p></description></item><item><title>Slides Available as PDF and PPT</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/slides-available-as-pdf-and-ppt/</link><pubDate>Thu, 21 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/slides-available-as-pdf-and-ppt/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The home pages of the following lectures now have links to PDF and PowerPoint versions of the slides used in each episode:&lt;/p>
&lt;ul>
&lt;li>Python&lt;/li>
&lt;li>Sets and Dictionaries&lt;/li>
&lt;li>Testing&lt;/li>
&lt;li>The Unix Shell&lt;/li>
&lt;li>Regular Expressions&lt;/li>
&lt;li>Version Control&lt;/li>
&lt;li>Make&lt;/li>
&lt;li>Program Design&lt;/li>
&lt;/ul>
&lt;p>We haven't provided slides for the spreadsheets and databases lectures because they aren't slide-based. Please let us know if you find these useful, or if you notice any typos that we should fix.&lt;/p></description></item><item><title>Final Four Episodes of Python Lecture</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/final-four-episodes-of-python-lecture/</link><pubDate>Mon, 18 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/final-four-episodes-of-python-lecture/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The last four episodes of our lecture on Python are now available, covering:&lt;/p>
&lt;ul>
&lt;li>libraries,&lt;/li>
&lt;li>tuples,&lt;/li>
&lt;li>slicing, and&lt;/li>
&lt;li>what &lt;em>is&lt;/em> text, anyway?&lt;/li>
&lt;/ul>
&lt;p>The last isn't really about Python, but it's something people trip over pretty quickly when they start using it. Hope you find them useful...&lt;/p></description></item><item><title>Ratings Revised</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/ratings-revised/</link><pubDate>Sun, 17 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/ratings-revised/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We asked, you answered: here are the latest results from our survey of what topics you'd most like us to cover, with links to the ones that have been posted. A few notes:&lt;/p>
&lt;ol>
&lt;li>N = 188 responses.&lt;/li>
&lt;li>This is the first time data visualization has dropped out of the top 5.&lt;/li>
&lt;li>It's also the first time that nerdish subjects like computational complexity and functional languages have placed anywhere near the top.&lt;/li>
&lt;li>There's a noticeable mismatch between things we think people should know (like version control) and things people think they want (building desktop GUIs).&lt;/li>
&lt;/ol>
&lt;p>Conclusion: more data &amp;ne; more insight.&lt;/p></description></item><item><title>Six More Python Episodes</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/six-more-python-episodes/</link><pubDate>Fri, 15 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/six-more-python-episodes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We've added six more Python screencasts to the site:&lt;/p>
&lt;ul>
&lt;li>basics&lt;/li>
&lt;li>control flow&lt;/li>
&lt;li>I/O&lt;/li>
&lt;li>aliasing&lt;/li>
&lt;li>functions&lt;/li>
&lt;li>first-class functions&lt;/li>
&lt;/ul>
&lt;p>We hope you like them&amp;mdash;please let us know.&lt;/p></description></item><item><title>Dexy</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/dexy/</link><pubDate>Thu, 14 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/dexy/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>From Ana Nelson, a neat new reproducible research tool called &lt;a href="http://blog.dexy.it/">Dexy&lt;/a> that takes the pipe-and-filter model to new heights (or extremes, depending on your point of view :-) ). There's a quick intro &lt;a href="http://blog.dexy.it/13">here&lt;/a>, and a video of her recent talk about Dexy &lt;a href="http://blog.dexy.it/247">here&lt;/a>. I'm already thinking about ways of combining this with consistency-checking tools so that if the descriptions of results get out of step with the results themselves, alarms will go off. Check it out, and let us know what you think&amp;mdash;is it useful and approachable enough to include in this course?&lt;/p></description></item><item><title>Three Python Screencasts Up</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/three-python-screencasts-up/</link><pubDate>Thu, 14 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/three-python-screencasts-up/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Three Python screencasts narrated by Dominique Vuvan, an alumnus of the Summer 2009 run of the course, are now online: introduction (episode 1), lists (4), and strings (6). We'll be recording and filling in the other episodes just as soon as construction in the office slows down...&lt;/p></description></item><item><title>Three More Episodes on Spreadsheets</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/three-more-episodes-on-spreadsheets/</link><pubDate>Wed, 13 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/three-more-episodes-on-spreadsheets/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have uploaded episodes 5, 6, and 7 of Jason Montojo's lecture on spreadsheets, which cover conditionals, pivot tables, and the basics of charting. Comments would be very welcome&amp;mdash;and if you'd like to contribute material as well, please get in touch (we're particularly looking for help with data visualization).&lt;/p></description></item><item><title>Python Lecture Coming Online</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/python-lecture-coming-online/</link><pubDate>Tue, 12 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/python-lecture-coming-online/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Slides for the first few episodes of our lecture on Python are now online; recordings should follow tomorrow and Thursday, and slides for the rest of the lecture should be up by the weekend. I think the content is OK, but it feels like there's too much shoveling: we're throwing a lot of features at people without showing them how they'll make life better. I think there's inevitably some of that in an intro like this&amp;mdash;people need to know a few things before any of them can be put to work&amp;mdash;but I'd welcome suggestions on reorganizing the material.&lt;/p></description></item><item><title>Using Subversion from the Command Line</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/using-subversion-from-the-command-line/</link><pubDate>Tue, 05 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/using-subversion-from-the-command-line/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Ainsley Lawson, one of the TAs for the Fall 2010 online course, has recorded an 8-minute episode showing how to use Subversion from the command line. We hope you find it useful.&lt;/p></description></item><item><title>What Questions Do You (Frequently) Ask?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/what-questions-do-you-frequently-ask/</link><pubDate>Sun, 03 Oct 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/10/what-questions-do-you-frequently-ask/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>As part of redesigning this site, we're finally putting together an FAQ. It's pretty brief right now: what questions have you had about Software Carpentry that we could add (and answer)?&lt;/p></description></item><item><title>Ten Short Papers Every Computational Scientist Should Read</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/ten-short-papers-every-computational-scientist-should-read/</link><pubDate>Thu, 30 Sep 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/ten-short-papers-every-computational-scientist-should-read/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>No, we don't have a list&amp;mdash;not yet&amp;mdash;but we'd like to. What short, readable papers or articles do you think every scientist doing computational work should read at some point in their career (preferably &lt;em>early&lt;/em> in their career)? Paul Dubois' 2005 article in &lt;em>Computing in Science and Engineering&lt;/em> on &lt;a href="http://portal.acm.org/citation.cfm?id=1069590.1069683">maintaining correctness in scientific programs&lt;/a> is a favorite of mine; so is Evan Robinson's summary of research on &lt;a href="http://www.igda.org/why-crunch-modes-doesnt-work-six-lessons">the effects of overwork on productivity&lt;/a>. (Actually, I think &lt;em>everyone&lt;/em> should read Robinson's article, not just computational scientists...) What else should be on the list? To qualify, entries must be short (up to a few pages long), well written, of broad general interest, and have something important to say that's relevant to our target audience. Suggestions in the comments, please...&lt;/p></description></item><item><title>I'm No Graphic Artist...</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/im-no-graphic-artist/</link><pubDate>Tue, 21 Sep 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/im-no-graphic-artist/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I'm not much of a graphic artist (in both my startups, I was told after a few weeks that I was &lt;em>never&lt;/em> to work on the user interface again), so I'd appreciate your help designing a flyer/noticeboard poster for Software Carpentry. This PDF is what I have so far; anything more constructive than, "My eyes! My eyes! Aargh!" would be very welcome.&lt;/p></description></item><item><title>Your Favorite Running Examples?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/your-favorite-running-examples/</link><pubDate>Mon, 20 Sep 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/your-favorite-running-examples/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've been fond of invasion percolation since I first encountered it: the problem is simple to state, but its implementation brings up quite a variety of useful ideas, from testing in the face of randomness, to associative data structures, to the limits of parallelism. It's a good size, too: I can develop a first version in front of students in about 30 minutes, then branch off in various directions for almost as long as they'll listen to me.&lt;/p></description></item><item><title>Five Episodes on Make</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/five-episodes-on-make/</link><pubDate>Wed, 15 Sep 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/five-episodes-on-make/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The first five episodes of the lecture on Make have been recorded, edited, and posted. I still need to do one on using Make to track data provenance, but as I discovered when I started to write it, there are a few other topics I need to fill in first. I will do an episode on managing C/C++ compilation with Make first (probably after I return from teaching in Colorado next week). As always, comments are welcome.&lt;/p></description></item><item><title>And For My Next Trick...</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/and-for-my-next-trick/</link><pubDate>Thu, 09 Sep 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/and-for-my-next-trick/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One of the things people have voted right up to the top of &lt;a href="{{site.baseurl}}/blog/2010/08/another-update-on-what-you-want.html">our poll&lt;/a> is reproducible research. The phrase means different things to different people, but part of it &lt;em>must&lt;/em> be accurately tracking the provenance of every bit of data a scientist touches: where it came from, what was done to it, what was done to the results, and so on. Once I've done the next episode of the Make lecture (on macros), I'd like to spend 10 minutes showing people how to do some of this by:&lt;/p></description></item><item><title>Slides for the First Four Episodes on Make</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/slides-for-the-first-four-episodes-on-make/</link><pubDate>Wed, 08 Sep 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/slides-for-the-first-four-episodes-on-make/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I don't like Make, but I'm resigned to teaching it: other tools have different, rather than lesser, flaws. I've posted slides for the first four episodes of the lecture about it, and hope to have scripts and screencasts up soon. I'd welcome feedback&amp;mdash;in particular, if anyone knows a clean solution to the problem at the end of the fourth episode (getting summary data to depend on stats.py), please let me know.&lt;/p></description></item><item><title>Eight Episodes on the Unix Shell</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/eight-episodes-on-the-unix-shell/</link><pubDate>Fri, 03 Sep 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/eight-episodes-on-the-unix-shell/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I had planned to leave it out, but &lt;a href="{{site.baseurl}}/blog/2010/08/another-update-on-what-you-want.html">your votes&lt;/a> count: the first eight screencasts of our lecture on the Unix shell are now online. Topics covered are:&lt;/p>
&lt;ol>
&lt;li>Introduction (4:09)&lt;/li>
&lt;li>Files and Directories (9:55)&lt;/li>
&lt;li>Creating and Deleting (6:23)&lt;/li>
&lt;li>Pipes and Filters (9:11)&lt;/li>
&lt;li>Permissions (10:54)&lt;/li>
&lt;li>Finding Things (9:22)&lt;/li>
&lt;li>Job Control (5:37)&lt;/li>
&lt;li>Variables (6:49)&lt;/li>
&lt;/ol>
&lt;p>I've already got a list of changes to make (thanks to feedback from IsaacG2&amp;mdash;my apologies, but I didn't see your comments until after I'd recorded), but I hope this will be a good start. And for those who are interested, the eight episodes together took 36.5 hours to write, revise, record, and edit, for 62:20 of screen time. That's better than the 50:1 ratio I was clocking in June, but I need to squeeze it further if I'm going to finish everything on time.&lt;/p></description></item><item><title>Three More Sets of Slides</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/three-more-sets-of-slides/</link><pubDate>Wed, 01 Sep 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/09/three-more-sets-of-slides/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>As promised in &lt;a href="{{site.baseurl}}/blog/2010/08/five-episodes-on-the-shell-and-three-to-come.html">yesterday's post&lt;/a>, the slides for three more episodes on the Unix shell are now online, covering how to find things, job control, and shell variables. Next up: public/private keys and SSH.&lt;/p></description></item><item><title>Five Episodes on the Shell (and Three to Come)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/five-episodes-on-the-shell-and-three-to-come/</link><pubDate>Tue, 31 Aug 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/five-episodes-on-the-shell-and-three-to-come/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've just posted the slides for the first five episodes of the lecture on the Unix shell, covering:&lt;/p>
&lt;ol>
&lt;li>Introduction (or, why would anyone do this to themselves, really?)&lt;/li>
&lt;li>Files and directories&lt;/li>
&lt;li>Creating and deleting things&lt;/li>
&lt;li>Pipes and filters&lt;/li>
&lt;li>Permissions&lt;/li>
&lt;/ol>
&lt;p>Minor things I have yet to cover:&lt;/p>
&lt;ul>
&lt;li>Drive letters on Windows, and how Cygwin hacks around them&lt;/li>
&lt;li>The 'echo' command&lt;/li>
&lt;li>(Briefly) Windows access control lists&lt;/li>
&lt;li>Wildcards in filenames ('*' has been covered)&lt;/li>
&lt;/ul>
&lt;p>Major things (the remaining three episodes):&lt;/p></description></item><item><title>Four More Screencasts on Testing</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/four-more-screencasts-on-testing/</link><pubDate>Fri, 27 Aug 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/four-more-screencasts-on-testing/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>After far too many delays, the next four screencasts on testing are finally available, covering systematic unit testing with Nose, why you should test interfaces rather than implementations, why testing floating point is hard, and how to create and manage fixtures systematically. I hope you enjoy them&amp;mdash;have a good weekend.&lt;/p></description></item><item><title>Another Update on What You Want</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/another-update-on-what-you-want/</link><pubDate>Thu, 26 Aug 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/another-update-on-what-you-want/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Responses have slowed, so here are the final scores for the topics we're including (or thinking about including) in this course. It looks like the Unix shell just might go back in...&lt;/p>
&lt;table>
&lt;tbody>
&lt;tr>
&lt;td>2.51&lt;/td>
&lt;td>Automating Repetitive Tasks&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.50&lt;/td>
&lt;td>Reproducible Research&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.50&lt;/td>
&lt;td>Data Visualization&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.47&lt;/td>
&lt;td>Version Control&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.44&lt;/td>
&lt;td>Performance Optimization&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.41&lt;/td>
&lt;td>Data Structures&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.39&lt;/td>
&lt;td>Testing and Quality Assurance&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.39&lt;/td>
&lt;td>Coding Style&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.38&lt;/td>
&lt;td>Basic Programming&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.35&lt;/td>
&lt;td>Using the Unix Shell&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.35&lt;/td>
&lt;td>Parallel Programming&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.35&lt;/td>
&lt;td>Debugging with a Debugger&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.29&lt;/td>
&lt;td>Computational Complexity&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.22&lt;/td>
&lt;td>Object-Oriented Programming&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.20&lt;/td>
&lt;td>Working in Teams/on Large Projects&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.19&lt;/td>
&lt;td>Designing a Data Model&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.15&lt;/td>
&lt;td>Refactoring&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.10&lt;/td>
&lt;td>Matrix Algebra&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.09&lt;/td>
&lt;td>Static and Dynamic Code Analysis Tools&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.07&lt;/td>
&lt;td>Systems Programming&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.04&lt;/td>
&lt;td>Integrating with C and Fortran&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.03&lt;/td>
&lt;td>Design Patterns&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.01&lt;/td>
&lt;td>Packaging Code for Release&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1.95&lt;/td>
&lt;td>Functional Languages&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1.94&lt;/td>
&lt;td>Handling Binary Data&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1.82&lt;/td>
&lt;td>Image Processing&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1.74&lt;/td>
&lt;td>Build a Desktop User Interface&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1.73&lt;/td>
&lt;td>XML&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1.65&lt;/td>
&lt;td>Create a Web Service&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1.39&lt;/td>
&lt;td>Geographic Information Systems&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>What Don't You Understand That You'd Like To?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/what-dont-you-understand-that-youd-like-to/</link><pubDate>Mon, 23 Aug 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/what-dont-you-understand-that-youd-like-to/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>What don't you understand about computers and computing that you'd like to? I'm not talking about big stuff, like "How does it all work, anyway?" or, "How do I write a game that's as addictive as &lt;a href="http://www.deadwhale.com/play.php?game=774">BubbleSpinner&lt;/a>?" What don't you understand about smaller-scale stuff, like handwriting recognition or how Excel knows which cells to update when you change a number or how your machine decides that it's time to update Java and what it does next. Please let me know, or if you're feeling shy, point your friends at this page and have them ask for you&amp;mdash;we have to use &lt;em>something&lt;/em> as motivating examples for this course, and if we can explain something interesting while teaching you fundamental computing concepts, so much the better.&lt;/p></description></item><item><title>Slides and Scripts for the Next Two Episodes</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/slides-and-scripts-for-the-next-two-episodes/</link><pubDate>Thu, 19 Aug 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/slides-and-scripts-for-the-next-two-episodes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I have posted slides and transcripts for the next two lectures on testing, which cover unit testing with Nose, and testing interfaces instead of implementations. I was hoping to record the screencasts today, but setting up a new 64-bit desktop machine took longer than expected&amp;mdash;hopefully they'll be up early next week, along with episodes on floating point and setting up fixtures. Comments, as always, would be greatly appreciated.&lt;/p></description></item><item><title>A Question About Nose</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/a-question-about-nose/</link><pubDate>Tue, 03 Aug 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/08/a-question-about-nose/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I'm putting together an episode of the testing lecture to introduce unit testing frameworks. In the past, I've used unittest, but colleagues have had good experiences with Nose, which doesn't require students to understand classes and methods in order to write tests. As an example, they're going to test a function that finds the overlap between fields in aerial photographs of Saskatchewan (where it's safe to assume that everything is a rectangle :-) ).&lt;/p></description></item><item><title>Two More Episodes on Version Control</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/two-more-episodes-on-version-control/</link><pubDate>Thu, 29 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/two-more-episodes-on-version-control/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The third and fourth episodes of our lecture on version control are now online. These explain how to handle conflicts from concurrent edits, and how to roll back changes. As with the second episode on basic workflow, they use a mix of slides, screen recording, and sound effects.&lt;/p>
&lt;p>The next episode is supposed to explain how to create a repository, but I'm still trying to figure out what to show people. A repo on the same machine that's being used for development is better than nothing, but that doesn't help people share work with colleagues. On the other hand, creating a repo on a server somewhere requires at least basic knowledge of the shell: even if someone is willing to type in a password for each interaction (so that they don't need to know about public/private keypairs), they'll need to know enough to SSH in to the server and run "svnadmin create reponame". There are web-based control panels for creating and managing repositories, and we could just require them to ask their friendly neighborhood sys admin to set that up, but it's just enough of a stumbling block to, well, be a stumbling block. Suggestions would be welcome...&lt;/p></description></item><item><title>Second Lecture on Version Control</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/second-lecture-on-version-control/</link><pubDate>Mon, 26 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/second-lecture-on-version-control/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Our second lecture on version control is now on the web. It combines screen recording with static slides; please let us know whether the format works for you; in particular, can you follow what's happening on the desktop?&lt;/p></description></item><item><title>Introduction to Version Control</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/introduction-to-version-control/</link><pubDate>Sat, 24 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/introduction-to-version-control/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>It took a lot longer to put together than I expected, but I'm pleased with the result&amp;mdash;the newest screencast explains what version control is, and why you'd want to use it, in four minutes and four seconds, including a wolf howl and a maniacal laugh. I hope you like it...&lt;/p>
&lt;p>And in case you haven't been reading &lt;a href="{{site.baseurl}}/blog/2010/07/five-five-five-scripts-in-one.html#comments">comments&lt;/a>, I'd be &lt;em>very&lt;/em> happy to include a parallel version control lecture based on a distributed version control system like &lt;a href="http://mercurial.selenic.com/">Mercurial&lt;/a> or &lt;a href="http://git-scm.com/">Git&lt;/a> if someone would like to create it. Software Carpentry is an open source project&amp;mdash;if that's the itch you want to scratch, then please &lt;a href="mailto:{{site.contact}}">email me&lt;/a> and we'll figure out how to make it happen.&lt;/p></description></item><item><title>Strictly Speaking, This Isn't Part of Testing</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/strictly-speaking-this-isnt-part-of-testing/</link><pubDate>Fri, 23 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/strictly-speaking-this-isnt-part-of-testing/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The second episode of the lecture on testing is now up. It covers exceptions, which strictly speaking aren't part of testing, but it seemed like a natural place to introduce them. As always, feedback is welcome...&lt;/p></description></item><item><title>First Episode of Testing Lecture</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/first-episode-of-testing-lecture/</link><pubDate>Thu, 22 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/first-episode-of-testing-lecture/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The first episode of the lecture on testing is now online. We're going to be showing people how to use &lt;a href="http://code.google.com/p/python-nose/">Nose&lt;/a>, so I've tried to motivate the idea of a unit testing framework&amp;mdash;I'd appreciate feedback on whether it works or not.&lt;/p>
&lt;p>And yes, I am working on the version control lecture, but I've been stumbling over minor technical glitches, and I'm afraid that if I try recording today, I'll start using uncivilized language. Hopefully I'll get to it tomorrow...&lt;/p></description></item><item><title>Popular, Fast, or Usable: Pick One</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/popular-fast-or-usable-pick-one/</link><pubDate>Wed, 21 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/popular-fast-or-usable-pick-one/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One of the core skills in any software developer's toolbox is automating repetitive tasks. We've been teaching this in Software Carpentry with &lt;a href="http://www.gnu.org/software/make/">Make&lt;/a> for 13 years, and for 13 years, we've been looking for something better: something that has a less user-hostile syntax, requires less arcane knowledge of the shell, and at least &lt;em>pretends&lt;/em> to do the same thing on different platforms. We briefly considered &lt;a href="http://ant.apache.org/">Ant&lt;/a> (where "briefly" means "as long as it took to find &lt;a href="http://pyre.third-bit.com/blog/archives/61.html">the post by Ant's creator&lt;/a> saying he would do it all differently next time"), but it's clear that tools like &lt;a href="http://rake.rubyforge.org/">Rake&lt;/a> and &lt;a href="http://www.scons.org/">SCons&lt;/a>, that embed build commands in a full-blown scripting language, are the future of build systems. Rake is based on Ruby, but SCons is based on Python (and actually has its roots in the original Software Carpentry project), so it should be a no-brainer, right?&lt;/p></description></item><item><title>Five... Five... Five Scripts in One!</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/five-five-five-scripts-in-one/</link><pubDate>Tue, 20 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/five-five-five-scripts-in-one/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've updated the script for the introductory episode on version control that I &lt;a href="{{site.baseurl}}/blog/2010/07/script-for-introduction-to-version-control.html">posted yesterday&lt;/a>, and added four more covering basic operations, handling conflicts, rolling back changes (with a very brief mention of branching and merging), and setting up repositories for personal use (creating a shared repo requires more skills than students are likely to have, and should be left in the hands of sys admins). The five scripts are down below the break; comments before I start making up slides and recording would be very welcome.&lt;br />
&lt;span id="more-3488">&lt;/span>&lt;/p></description></item><item><title>Script for Introduction to Version Control</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/script-for-introduction-to-version-control/</link><pubDate>Mon, 19 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/script-for-introduction-to-version-control/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>While I'm waiting for artwork, I'd be grateful for feedback on the script for the introductory episode on version control.&lt;/p>
&lt;ol>
&lt;li>Hello, and welcome to the first episode of the Software Carpentry lecture on version control. In this episode, we will explain what version control is, how it works, and why you should use it.&lt;/li>
&lt;li>Suppose you and a friend are working together on a paper.&lt;/li>
&lt;li>You both want to edit the file at the same time&amp;mdash;what should you do?&lt;/li>
&lt;li>You &lt;em>could&lt;/em> take turns, but then each of you would spend have the time waiting for the other.&lt;/li>
&lt;li>Another option would be to go ahead and work simultaneously, then patch things up afterward.&lt;/li>
&lt;li>But somehow, stuff always winds up getting lost, overwitten, or duplicated.&lt;/li>
&lt;li>The right solution is to use a &lt;em>version control system&lt;/em>.&lt;/li>
&lt;li>This keeps the master copy of the file in a central &lt;em>repository&lt;/em>, usually located on a &lt;em>server&lt;/em>&amp;mdash;a computer that is never used directly by people, but only by the applications serving them.&lt;/li>
&lt;li>No-one ever edits the master copy directly.&lt;/li>
&lt;li>Instead, you and your friend each have a &lt;em>working copy&lt;/em> on your own computers.&lt;/li>
&lt;li>You work independently, making whatever changes you want to your local copies.&lt;/li>
&lt;li>As soon you are ready to share your changes, you &lt;em>commit&lt;/em> your changes to the repository.&lt;/li>
&lt;li>Your friend can then &lt;em>update&lt;/em> her working copy to get those changes.&lt;/li>
&lt;li>And of course, if your friend finishes her part first, she can commit, and then you can update.&lt;/li>
&lt;li>But what if you and your friend want to make changes to the same part of the paper?&lt;/li>
&lt;li>Old-fashioned version control systems prevented this from happening by &lt;em>locking&lt;/em> the master copy. Everyone's working copy would normally be read-only. When someone wanted to start work on a file, the version control system would make her copy of that file writeable. When she was finished work, the version control system would copy her changes to the repository, then mark her copy as read-only once again.&lt;/li>
&lt;li>Only one person at a time could have a writeable copy. This guaranteed that two or more people could never accidentally make changes to the same file at the same time...&lt;/li>
&lt;li>...but it also meant that only person at a time could work on any given file.&lt;/li>
&lt;li>This is essentially the "one at a time" strategy from the start of this episode, but with the version control system acting as the referee to prevent accidents.&lt;/li>
&lt;li>In practice, locking like this isn't as restrictive as it sounds. If you and your friend repeatedly find that you're trying to edit the same file, the solution is to break your paper (or your program) into several smaller files, so that you can work simultaneously.&lt;/li>
&lt;li>However, most of today's version control systems use a different strategy, one based on the old saying that it's easier to get forgiveness than permission. In these systems, nothing is ever locked&amp;mdash;everyone is always allowed to edit the files in their working copy.&lt;/li>
&lt;li>Sometimes, of course, you and your friend will make changes to the same part of the paper.&lt;/li>
&lt;li>If your friend updates first first, her changes go into the repository as usual.&lt;/li>
&lt;li>If you try to commit something that would overwrite her changes, the version control system will stop you...&lt;/li>
&lt;li>...and highlight the &lt;em>conflict&lt;/em> by marking the overlapping regions in your working copy.&lt;/li>
&lt;li>It's up to you to edit the file to &lt;em>resolve&lt;/em> the conflict. You can keep your changes, accept your friend's, or write something new that combines the two&amp;mdash;it's up to you.&lt;/li>
&lt;li>Once you have fixed things, you can go ahead and commit.&lt;/li>
&lt;li>Experience shows that version control is better than mailing files back and forth for at least three reasons. First, it's hard (but not impossible) to accidentally overlook or overwrite someone's changes&amp;mdash;the version control system highlights them for you automatically.&lt;/li>
&lt;li>Second, there are no arguments about whose copy is the most up to date&amp;mdash;the master copy is.&lt;/li>
&lt;li>These features mean that version control is worth using even when you're the only person working on a particular set of files.&lt;/li>
&lt;li>Because it's a more reliable way to move files around between the computers you use than copying things onto a USB or sending email to yourself.&lt;/li>
&lt;li>More importantly, whether you're working on your own or in a group, version control allows you to look at or undo changes what you did weeks, months, or years ago.&lt;/li>
&lt;li>This works because the version control system never actually overwrites the master copy in the repository.&lt;/li>
&lt;li>Instead, everyone time someone commits a new version, the system saves it on top of the previous master copy, along with some information about when the change was made and who made it.&lt;/li>
&lt;li>This means that you can always see what the file looked like last week before someone rewrote the analysis section while you were on holiday.&lt;/li>
&lt;li>It also means that you can always fetch old versions of things, like the exact version of the program you used to produce the graph on page 5 of that paper that someone is now challenging.&lt;/li>
&lt;li>Version control systems do have one important shortcoming, though. If you are working with plain text files, it's easy for the version control system to find and display differences, and to help you merge them.&lt;/li>
&lt;li>Unfortunately, today's version control systems won't do this for images, MP3s, PDFs, and Microsoft Word or Excel files. These aren't stored as text&amp;mdash;they use specialized binary data formats, and there usually aren't tools for finding, displaying, or merging the differences between them. In most cases, all the version system can do is say, "These files are different." That's better than nothing, but not by much.&lt;/li>
&lt;li>Even with this limitation, version control is probably the most important concept in this entire course. It's not just because it facilitates sharing; version control also allows you to look at or undo changes what you did weeks, months, or years ago.&lt;/li>
&lt;li>We'll talk more about using version control to make your research &lt;em>reproducible&lt;/em> in a later lecture. In the next episode of this one, we'll look at the most popular open source version control system in use today, called Subversion.&lt;/li>
&lt;/ol>
&lt;p>The four episodes after this introduction will cover:&lt;/p></description></item><item><title>A Gentle Introduction</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/a-gentle-introduction/</link><pubDate>Sun, 18 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/a-gentle-introduction/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Via several routes, I've been pointed at MIT Open CourseWare's "&lt;a href="http://topicfire.com/share/MIT-OpenCourseWare-A-Gentle-Introduction-to-Programming-Using-Python-14881254.html">A Gentle Introduction to Programming Using Python&lt;/a>", as taught by Sarina Canelake in January 2010. An hour of lecture a day for 10 days (two weeks), plus two hours of lab per day, it is... "a gentle introduction to programming using Python for highly motivated students with little or no prior experience in programming computers". The pace is brisk:&lt;/p></description></item><item><title>Survey Results</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/survey-results/</link><pubDate>Thu, 15 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/survey-results/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Here are the results of the &lt;a href="http://www.surveymonkey.com/s/FM9YV9C">survey&lt;/a> that we &lt;a href="{{site.baseurl}}/blog/2010/07/which-topics-are-most-important-to-you.html">announced&lt;/a> 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" &amp;mdash; 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.&lt;/p></description></item><item><title>Two New Episodes on Dictionaries</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/two-new-episodes-on-dictionaries/</link><pubDate>Wed, 14 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/two-new-episodes-on-dictionaries/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have just posted the last two episodes of the lecture on sets and dictionaries, which introduce dictionaries and give examples of their use. Please let us know what you think about the pace and level of detail.&lt;/p></description></item><item><title>A Shorter Version of the Sets and Tuples Episode</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/a-shorter-version-of-the-sets-and-tuples-episode/</link><pubDate>Tue, 13 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/a-shorter-version-of-the-sets-and-tuples-episode/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One of the many advantages of online delivery of course material is that it allows us to present content in several ways, tailored to different audiences. For example, some people want to understand how sets are stored in hashtables; others just want to know that you cannot put a list in a set, and should use a tuple instead. We now have episodes catering to both: the longer and more detailed one posted last week, and a shorter and less detailed one posted today. We'd welcome feedback: is this confusing, helpful, or (as is so often the case) a bit of both?&lt;/p></description></item><item><title>Traffic</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/traffic/</link><pubDate>Tue, 13 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/traffic/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>In case you're interested, we seem to average slightly around 280 views per blog post right now. I'll post stats on page views (i.e., how many people are looking at the lectures themselves) at the end of this month.&lt;/p>
&lt;p>&lt;img title="visits" src="{{site.filesurl}}/swc_blog/2010/07/visits.png" />&lt;/p></description></item><item><title>Which Topics Are Most Important to You?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/which-topics-are-most-important-to-you/</link><pubDate>Sat, 10 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/which-topics-are-most-important-to-you/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have created &lt;a href="http://www.surveymonkey.com/s/FM9YV9C">a survey&lt;/a> to find out which of the topics we're planning to cover are most important to you. Please take three and a half minutes to fill it in; we'd be grateful as well if you could re-post the link, forward it to relevant mailing lists, etc.&lt;/p>
&lt;p style="text-align: center;">&lt;a href="http://www.surveymonkey.com/s/FM9YV9C">http://www.surveymonkey.com/s/FM9YV9C&lt;/a>&lt;/p>
&lt;p>Thanks for your help!&lt;/p></description></item><item><title>Two Episodes on Sets</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/two-episodes-on-sets/</link><pubDate>Thu, 08 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/two-episodes-on-sets/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've just posted an introduction to sets in Python, and a brief look at how they're implemented (which you need to know in order to understand why you can't put a list in a set). The second of these has more theory in it than most of our episodes; I'd be grateful for feedback from non-computer scientists about how much sense it makes.&lt;/p></description></item><item><title>That's, Uh, Pretty Ambitious</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/thats-uh-pretty-ambitious/</link><pubDate>Tue, 06 Jul 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/07/thats-uh-pretty-ambitious/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The title of this post is taken from the reaction of the first person I showed this course schedule to. If we're really going to teach Software Carpentry in one university term (12-13 weeks), this is the pace we'll have to move at. What do you think? Is it crazy, or just nuts? And what, if anything, can be done about it?&lt;/p></description></item><item><title>The Violas of Programming</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/the-violas-of-programming/</link><pubDate>Tue, 29 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/the-violas-of-programming/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Orchestral musicians make &lt;a href="http://www.mit.edu/~jcb/jokes/viola.html">jokes about violas and viola players&lt;/a>. "What's a string quartet? A great violin player, a mediocre violin player, a bad violin player, and a cellist." Or, "What's the difference between a viola and a trampoline? You take off your shoes to jump on a trampoline." But violas are as essential as they are unglamorous: hardly anyone plays them as a lead or solo instrument, but string quartets just don't sound right without that third voice.&lt;/p></description></item><item><title>Last Episode on Sets and Dictionaries Posted First</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/last-episode-on-sets-dictionaries-posted-first/</link><pubDate>Mon, 28 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/last-episode-on-sets-dictionaries-posted-first/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>For our lecture on sets &amp;amp; dictionaries, I decided to start at the end with the wrap-up example on nanotechnology. I'll double back tomorrow and start filling in the pieces that this example relies on.&lt;/p></description></item><item><title>Four Down-What Next?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/four-down-what-next/</link><pubDate>Sun, 27 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/four-down-what-next/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The regular expressions lecture has been promoted from the development area to the main site, where it joins the lectures on program design, databases, and spreadsheets. We have a lot of other topics still to cover: please let us know which you'd like to see first.&lt;/p></description></item><item><title>Final Episode of Regular Expressions Lecture Now Online</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/final-episode-of-regular-expressions-lecture-now-online/</link><pubDate>Fri, 25 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/final-episode-of-regular-expressions-lecture-now-online/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The fifth and final episode of our lecture on regular expressions is now online. In this episode, we work through a new problem&amp;mdash;extracting bibliographic citations from papers&amp;mdash;and introduce a few new tools along the way. Please let us know what you think.&lt;/p></description></item><item><title>Another Example of small-p Patterns</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/another-example-of-small-p-patterns/</link><pubDate>Thu, 24 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/another-example-of-small-p-patterns/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>A couple of weeks ago, I asked whether people would find an exploration of &lt;a href="{{site.baseurl}}/blog/2010/06/counting-things.html">ways to count things&lt;/a> useful. The consensus was "yes", so I've started drawing up notes. While working on them, it occurred to me that "ways to persist things" might be just as interesting. Some of the approaches that could be discussed are:&lt;/p>
&lt;ol>
&lt;li>Save a list of numbers (one per line).&lt;/li>
&lt;li>Save a matrix using a header line to record dimensions (introducing the idea of metadata) and M values per line.&lt;/li>
&lt;li>Save a matrix without metadata (which requires the length of the second and subsequent lines to be checked).&lt;/li>
&lt;li>Save mixed atomic values (which gets hard when strings are allowed).&lt;/li>
&lt;li>Saving records whose structure is known in advance (the hardest of the bunch, since this is the point where aliasing appears).&lt;/li>
&lt;li>Saving in binary rather than ASCII.&lt;/li>
&lt;li>Creating self-describing data (save the format at the top, then the data).&lt;/li>
&lt;/ol>
&lt;p>What other persistence patterns do you think would be worth explaining, and why?&lt;/p></description></item><item><title>Software Carpentry in Three and a Half Minutes</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/software-carpentry-in-three-and-a-half-minutes/</link><pubDate>Wed, 23 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/software-carpentry-in-three-and-a-half-minutes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I had a chance to give a quick pitch for Software Carpentry yesterday, which I've since recorded and posted to our web site. I hope it's a useful overview of what we're trying to do and why; I'd be very grateful for ideas about improving it.&lt;/p>
&lt;p>&lt;em>Note: a newer version of the pitch, titled "Software Carpentry in Ninety Seconds", is now available.&lt;/em>&lt;/p></description></item><item><title>Episode 4 on Regular Expressions</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/episode-4-on-regular-expressions/</link><pubDate>Tue, 22 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/episode-4-on-regular-expressions/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The fourth episode of our lecture on regular expressions is now online. This one explores shortcuts and escape sequences; we'd be grateful for feedback on whether it works a single episode, or ought to be split in two.&lt;/p></description></item><item><title>A Little Bit of Theory</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/a-little-bit-of-theory/</link><pubDate>Mon, 21 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/a-little-bit-of-theory/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The third episode of our lecture on regular expressions is now on the web. This one describes how regular expressions are implemented using finite state machines: it's more theoretical (with a very small 't') than previous episodes, and we'd welcome feedback.&lt;/p></description></item><item><title>Second Lecture on Regular Expressions</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/second-lecture-on-regular-expressions/</link><pubDate>Sat, 19 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/second-lecture-on-regular-expressions/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The second lecture on regular expressions has been posted to the development area. This one covers operators like '*' and '+', and introduces character sets. Please let us know what you think.&lt;/p></description></item><item><title>First Half of Spreadsheets Lecture Now Online</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/first-half-of-spreadsheets-lecture-now-online/</link><pubDate>Fri, 18 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/first-half-of-spreadsheets-lecture-now-online/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The first four episodes of Jason Montojo's lecture on spreadsheets are now online: topics covered include basic calculations, aggregation, controlling the display, sorting, and debugging. Please have a look and let us know what you think.&lt;/p></description></item><item><title>Our First Few Exercises</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/our-first-few-exercises/</link><pubDate>Fri, 18 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/our-first-few-exercises/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Jon Pipitone has posted a few self-assessment exercises for the lecture episode on selecting data from a database. Please have a look and let us know what you think: would having little self-tests like this at the end of each episode help solidify your understanding of the material?&lt;/p></description></item><item><title>Let's Try That Again</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/lets-try-that-again/</link><pubDate>Thu, 17 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/lets-try-that-again/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Thanks to everyone for their feedback on our &lt;a href="{{site.baseurl}}/blog/2010/06/is-live-coding-worth-it.html">first attempt&lt;/a> at a lecture on regular expressions. Our second attempt [no longer online] is now up for your viewing pleasure: it's about ten minutes long, and uses data scrubbing to motivate the use of REs. As always, we'd be grateful for suggestions.&lt;/p></description></item><item><title>A Voice from the Back of the Room</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/a-voice-from-the-back-of-the-room/</link><pubDate>Wed, 16 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/a-voice-from-the-back-of-the-room/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Mark Guzdial recently posted &lt;a href="http://computinged.wordpress.com/2010/06/05/evaluation-as-a-voice-for-the-kids-in-the-back-of-the-room/">another thought-provoking piece&lt;/a>, this one about how teachers are biased toward assessing a class's progress by their interactions with its brightest students, and how important it is to assess understanding systematically to find out what's actually going on. We're still wrestling with this in Software Carpentry: what can we put on the web to help students determine whether they have understood a particular topic and are ready to move on?&lt;/p></description></item><item><title>Is Live Coding Worth It?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/is-live-coding-worth-it/</link><pubDate>Wed, 16 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/is-live-coding-worth-it/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I put together an introductory lecture on regular expressions yesterday, but I'm not happy with the results, and I'd like your feedback to help me make it better.&lt;/p>
&lt;p>One of the reasons we're moving from static HTML to videos is to show people &lt;em>how&lt;/em> to program, rather than just the results of programming. As part of that, I want (or wanted&amp;mdash;I may be changing my mind) to do all the programming examples live instead of showing snippets of code and snippets of output slide-style. Jon has already done that with the database lectures, but his "programs" were single-line SQL statements; this episode is the first time we've had longer examples. It was a pain to do: each time I made a typo inside a function definition, for example, I'd wind up with a dozen or more junk lines on screen (since the error wouldn't show up until the first time I called the function). I don't want to waste viewers' time on trivial errors, but there's no way in IDLE (or other IDEs) to erase the last few lines of interaction with the interpreter. I "solved" the problem by hitting return until the offending text had scrolled off the top of the screen, but it leaves a couple of ugly breaks in the video. If IDLE had a "clear screen" button, I might use that periodically, but (a) it doesn't, and (b) one of the reasons to code live is to keep recent context in view, which "clear screen" would erase.&lt;/p></description></item><item><title>Glossary and License Online</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/glossary-and-license-online/</link><pubDate>Tue, 15 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/glossary-and-license-online/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>A glossary of terms used in this course is now online; corrections and suggestions for both additions and deletions would be very welcome. The &lt;a href="{{site.baseurl}}/license/">licenses&lt;/a> used for course content and code have also been posted&amp;mdash;both are as open as we can make them.&lt;/p></description></item><item><title>Counting Things</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/counting-things/</link><pubDate>Fri, 11 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/counting-things/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I re-read Robins et al's "Learning and Teaching Programming: A Review and Discussion" [1] and Eccles and Stacey's "Understanding the Parallel Programming" [2] this morning. One of the key takeaways in both is that novice programmers tend to classify problems according to problem domain or language features, while experienced programmers tend to classify them according to solution strategies. Where a beginner sees a problem in molecular biology or statistics, for example, an expert sees an opportunity to apply divide-and-conquer or accumulate-and-adjust.&lt;/p></description></item><item><title>Our Lecture on Databases is Now Online</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/our-lecture-on-databases-is-now-online/</link><pubDate>Thu, 10 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/our-lecture-on-databases-is-now-online/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Our introduction to the basics of SQL is now online: the episodes in this series include:&lt;/p>
&lt;ol>
&lt;li>Introduction&lt;/li>
&lt;li>Selecting Data&lt;/li>
&lt;li>Filtering&lt;/li>
&lt;li>Sorting&lt;/li>
&lt;li>Aggregation&lt;/li>
&lt;li>Joining Tables&lt;/li>
&lt;li>Missing Data&lt;/li>
&lt;li>Nested Queries&lt;/li>
&lt;/ol>
&lt;p>Please let us know what you think. And please also let us know &lt;a href="{{site.baseurl}}/lessons/previous/">what topic from the course outline&lt;/a> you'd like us to tackle next.&lt;/p></description></item><item><title>The Big Picture (version 3)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/the-big-picture-version-3/</link><pubDate>Thu, 10 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/the-big-picture-version-3/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Version 3 of the concept map describing what we mean by "computational thinking" incorporates feedback from several people&amp;mdash;thanks for sending it. Please let us know what you think...&lt;/p>
&lt;p>&lt;img src="{{site.filesurl}}/swc_blog/2010/06/concept-map-21-150x150.png" />&lt;/p></description></item><item><title>Reorganizing Content</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/reorganizing-content/</link><pubDate>Wed, 09 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/reorganizing-content/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>In anticipation of posting more lecture content, we have reorganized the pages on this site. If you look at the side menu, you'll see that "About/" and "Program Design/" now have sub-pages; we'll organize each lecture the same way to make it easier to follow along.&lt;/p>
&lt;p>And if you're having trouble posting or viewing comments, please send us email&amp;mdash; we &lt;em>think&lt;/em> we've sorted it out, but hey, it's software...&lt;/p></description></item><item><title>Episode 11: Making It Fast</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/episode-11-making-it-fast/</link><pubDate>Tue, 08 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/episode-11-making-it-fast/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Today's episode is the last in the series on program design using invasion percolation as an example. In it, we look at how to make the program we've developed so far run zillions of times faster. It's the longest episode so far, and probably the most difficult, but it makes two very important points:&lt;/p>
&lt;ol>
&lt;li>The biggest performance gains come from improvements to algorithms and data structures, not from tweaking loops and rearranging conditionals.&lt;/li>
&lt;li>If you want to write a fast program, you should start by writing a simple one, test it, and then rewrite it piece by piece, re-testing as you go along.&lt;/li>
&lt;/ol>
&lt;p>Here's the complete list of episodes:&lt;/p></description></item><item><title>Testing Invasion Percolation</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/testing-invasion-percolation/</link><pubDate>Mon, 07 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/testing-invasion-percolation/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Finally, after all that refactoring, we get to test our invasion percolation program&amp;mdash;although in fact, we spend more time discussing how to structure testing code than we do actually testing.&lt;/p>
&lt;ol>
&lt;li>Introduction&lt;/li>
&lt;li>The Grid&lt;/li>
&lt;li>Aliasing&lt;/li>
&lt;li>Randomness&lt;/li>
&lt;li>Finding Neighbors&lt;/li>
&lt;li>Resolving Ties&lt;/li>
&lt;li>Assembling the Program&lt;/li>
&lt;li>Bugs&lt;/li>
&lt;li>Refactoring&lt;/li>
&lt;li>&lt;strong>&lt;em>Testing&lt;/em>&lt;/strong>&lt;/li>
&lt;/ol></description></item><item><title>The Big Picture (version 2)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/the-big-picture-version-2/</link><pubDate>Mon, 07 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/the-big-picture-version-2/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Thanks to everyone who gave us feedback on &lt;a href="{{site.baseurl}}/blog/2010/06/concept-map.html">the first version of a concept map&lt;/a> for Software Carpentry. The second version is shown below, along with a list of terms that &lt;em>ought&lt;/em> to be on it, but aren't. Where would you place them, and how would they connect to each other and to the concepts that are already linked?&lt;/p>
&lt;p>&lt;img src="{{site.filesurl}}/swc_blog/2010/06/concept-map-2-150x150.png" />&lt;/p></description></item><item><title>Concept Map</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/concept-map/</link><pubDate>Fri, 04 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/concept-map/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>While re-designing the Software Carpentry course, I have realized that we rely over and over again on some underyling concepts that are hard to capture as lecture topics. I think these concepts are the heart of any useful definition of "computational thinking". The diagram below is a first attempt to capture what these concepts are and how they're related. (The list below the diagram summarizes the relationships in textual form for easier reading.) Suggestions for improvements would be very welcome...&lt;/p></description></item><item><title>Refactoring Invasion Percolation</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/refactoring-invasion-percolation/</link><pubDate>Fri, 04 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/refactoring-invasion-percolation/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Today's episode (the ninth in the lecture about designing an invasion percolation program) was supposed to be about testing, but wound up being about refactoring instead&amp;mdash;which probably won't surprise anyone who's done any significant amount of programming. We'd be grateful for feedback on how easy or hard it is to follow along as the program is rearranged.&lt;/p>
&lt;ol>
&lt;li>Introduction&lt;/li>
&lt;li>The Grid&lt;/li>
&lt;li>Aliasing&lt;/li>
&lt;li>Randomness&lt;/li>
&lt;li>Finding Neighbors&lt;/li>
&lt;li>Resolving Ties&lt;/li>
&lt;li>Assembling the Program&lt;/li>
&lt;li>Bugs&lt;/li>
&lt;li>&lt;strong>&lt;em>Refactoring&lt;/em>&lt;/strong>&lt;/li>
&lt;/ol></description></item><item><title>Assembling a Program</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/assembling-a-program/</link><pubDate>Thu, 03 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/assembling-a-program/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The seventh episode of our lecture on program design is now online. In this one, we actually assemble a complete version of the program step by step using the pieces designed earlier. The final program still has one nasty bug, though, and I'll award a Software Carpentry mug to the first person who can find it (source code attached to this post). For reference, the first six episodes are listed below, along with another link to this one.&lt;/p></description></item><item><title>If You Want to Look Ahead...</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/if-you-want-to-look-ahead/</link><pubDate>Thu, 03 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/if-you-want-to-look-ahead/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Our &lt;a href="{{site.baseurl}}/blog/2010/06/assembling-a-program.html">previous post&lt;/a> said that there was a bug in the first complete version of our invasion percolation program, and offered a Software Carpentry mug to the first person to find it. If you're the sort who prefers to look up the answers in the back, we've just posted the solution as episode 8 in the series on program design. For reference, here's the lecture so far:&lt;/p></description></item><item><title>Program Design: the Second Instalment</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/program-design-the-second-instalment/</link><pubDate>Tue, 01 Jun 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/06/program-design-the-second-instalment/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Having recorded and posted &lt;a href="{{site.baseurl}}/blog/2010/05/program-design-the-first-third.html">four episodes&lt;/a> of a lecture on program design yesterday, I've managed another two today (highlighted below):&lt;/p>
&lt;ol>
&lt;li>Introduction&lt;/li>
&lt;li>The Grid&lt;/li>
&lt;li>Aliasing&lt;/li>
&lt;li>Randomness&lt;/li>
&lt;li>&lt;em>&lt;strong>Finding Neighbors&lt;/strong>&lt;/em>&lt;/li>
&lt;li>&lt;em>&lt;strong>Resolving Ties&lt;/strong>&lt;/em>&lt;/li>
&lt;/ol>
&lt;p>The remaining episodes are much longer, and will show how to assemble the program from the pieces seen so far, how to refactor the result to make it more testable, how to test it, how to speed it up, and how to build a GUI for it. Slides for the first two of these episodes are done; I hope to have everything up by the end of this week or early next. As always, feedback is greatly appreciated.&lt;/p></description></item><item><title>Program Design: the First Third</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/program-design-the-first-third/</link><pubDate>Mon, 31 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/program-design-the-first-third/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I spent last week making and re-making slides for a lecture on program design, and managed to record the first third of them today&amp;mdash;the rest should follow tomorrow and Wednesday. We've taken on board your comments about pace and layout, and would be grateful for more feedback&amp;mdash;please go ahead and post comments on this post to tell us what you think.&lt;/p>
&lt;ol>
&lt;li>Introduction&lt;/li>
&lt;li>The Grid&lt;/li>
&lt;li>Aliasing&lt;/li>
&lt;li>Randomness&lt;/li>
&lt;/ol></description></item><item><title>Teaching databases by example</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/teaching-by-example/</link><pubDate>Fri, 28 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/teaching-by-example/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;div>
&lt;p>Over the last two weeks I've been spending most of my Software Carpentry time working on the database unit. They began as a fairly straight-forward translation of the Software Carpentry 3.0 lecture notes with only a few changes to the sequencing of the topics. The plan for the unit is fairly simple: each screencast introducing only one or two new topics, and builds on the previous screencasts with as few as possible forward references to later topics. The topics themselves are really just the different language features (SELECT, WHERE, JOIN, etc..) presented as tasks you might want to perform, and illustrated by working with toy data.&lt;/p></description></item><item><title>Day 11: Slides</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-11-slides/</link><pubDate>Mon, 17 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-11-slides/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Today's screencast experiment [link no longer active] is narration over PowerPoint slides: it isn't animation per se, but we'd like your feedback on whether something like this is a good way to explain "big picture" concepts.&lt;/p></description></item><item><title>Day 10: Closed Captioning</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-10-closed-captioning/</link><pubDate>Fri, 14 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-10-closed-captioning/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Our latest screencast, on NULL values in SQL, is now online. [Original link no longer active; more recent screencast on NULL values.] Unlike its predecessors, this one has closed captions (as well as a transcript in the enclosing page). Please let us know what you think: are the captions helpful, or do you find them distracting?&lt;/p></description></item><item><title>Day 8: Exercises (with a screencast)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-8-exercises-with-a-screencast/</link><pubDate>Thu, 13 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-8-exercises-with-a-screencast/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Today I experimented with creating a few simple exercises for the material covered in the first screencast on databases. The very last exercise includes a screencast that walks through the solution, and a potential pitfall along the way. My apologies for the crappy audio and choppiness in a few places &amp;mdash; I was using my laptop microphone, and I tried to edit out a few clicks and pops.&lt;/p></description></item><item><title>Day 9: Programming</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-9-programming/</link><pubDate>Thu, 13 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-9-programming/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Our first screencast showing &lt;del>a bit of Python programming&lt;/del> is now up for comments. [Link no longer active, more recent link to screencast on dictionaries.] It's deliberately low-tech: we used Emacs as an editor, and simply showed the program's textual output instead of stepping through it with a debugger. (Our next programming lectures will be IDE-based for comparison.) Please tell us what you think about the pace, watchability, etc.&lt;/p></description></item><item><title>Day 7: Mini-screencasts</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-7-mini-screencasts/</link><pubDate>Wed, 12 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-7-mini-screencasts/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Yesterday Jason and Greg experimented with breaking apart a 10 minute screencast on database grouping and aggregation into even more bite-sized pieces. We have two flavours today: &lt;del>point form notes with links to the screencasts&lt;/del>, or &lt;del>point form notes with screencasts embedded&lt;/del>. [Links no longer active, latest screencast on database aggregation as of January 2012.]&lt;/p>
&lt;p>Feedback on this format would be really helpful. Are these chunks &lt;em>too&lt;/em> small? Do you prefer embedding over linking, or vice versa? Also, we'd welcome any comments on the material itself, of course.&lt;/p></description></item><item><title>Day 6: Screencast With Point-Form Notes</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-6-screencast-with-point-form-notes/</link><pubDate>Mon, 10 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-6-screencast-with-point-form-notes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Jason Montojo and I put together an introductory screencast about spreadsheets today. Unlike our &lt;a href="{{site.baseurl}}/blog/2010/05/first-preliminary-alpha-test-etc-screencast.html">previous&lt;/a> &lt;a href="{{site.baseurl}}/blog/2010/05/day-5-a-different-kind-of-screencast.html">screencasts&lt;/a>, this one is accompanied by point-form slide-style notes instead of prose paragraphs. We'd be grateful for your feedback: are notes of this kind useful? Are they comprehensible without watching the screencast itself? If the notes were available in slide format (Keynote, PowerPoint, Impress, or plain old PDF) would they be enough for you to lecture with?&lt;/p></description></item><item><title>Day 5: A Different Kind of Screencast</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-5-a-different-kind-of-screencast/</link><pubDate>Fri, 07 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-5-a-different-kind-of-screencast/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I spent most of today creating another screencast, this one explaining what "and", "or", and "not" mean to programmers and how they work. There are no live examples this time: instead, I illustrated the talk with some simple images. Setting aside the question of whether Venn diagrams are the best way to explain Boolean logic, do you prefer this to live desktop of the previous screencast? Do the jumps back and forth between sets and tables make sense, or are they confusing? Do the colors add value, or should we stick to black &amp;amp; white? And how about the pace&amp;mdash;is it too fast, too slow, too repetitive, et cetera?&lt;/p></description></item><item><title>Day 4: First Preliminary Alpha Test Etc. Screencast</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/first-preliminary-alpha-test-etc-screencast/</link><pubDate>Thu, 06 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/first-preliminary-alpha-test-etc-screencast/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Jon Pipitone and I have created a screencast showing the basics (and I really mean "the basics") of pulling data out of a database using SQL. It took about 4.5 hours in total to produce 7 minutes of video:&lt;/p>
&lt;table>
&lt;tbody>
&lt;tr>
&lt;td>Writing script:&lt;/td>
&lt;td>1.5 hours&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Doing 3 takes:&lt;/td>
&lt;td>1.0 hours&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Editing:&lt;/td>
&lt;td>1.0 hours&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Transcribing:&lt;/td>
&lt;td>0.5 hours&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Screenshots:&lt;/td>
&lt;td>0.5 hours&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>This was the first time either of us had used &lt;a href="http://www.techsmith.com/camtasiamac/">Camtasia&lt;/a>; I expect that we'll be able to cut the recording, editing, and screenshotting time in half with practice. Transcribing time is dictated by typing and editing speed, so it's unlikely to come down, and scripting time will probably be the same or greater for future topics (since some of them will require diagrams and other time-consuming prep). We're therefore looking at 3 hours of production for 5-7 minutes of screen time; if you figure a lecture is 50 minutes, and there are 25 of them in the course, that works out to... um... carry the six... 750 hours to get all of the existing material online. Pad by half to account for real-world effects, and that's 35-40 weeks &amp;mdash; tight, but doable.&lt;/p></description></item><item><title>Day 1: Shuffling Sticky Notes Around</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-1-shuffling-sticky-notes-around/</link><pubDate>Tue, 04 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-1-shuffling-sticky-notes-around/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Day 1 of Software Carpentry Version 4: Jason, Jon, and I spent the afternoon shuffling sticky notes around on a whiteboard, trying to map out key concepts for our databases lecture(s) and their dependencies. The result isn't all that different from what's in Version 3, but there was one important insight. J&amp;amp;J commented that many of the students in the winter run of the course had understood the material, but been unable to apply it to their own problems. Our tentative explanation is that in order to apply what they have learned about SQL to their own data, students have to (a) pre-process that data (e.g., read a CSV file, then parse the cells in certain columns to extract timing values embedded in other data) and (b) figure out how to store those values in a database (i.e., do some data modeling and schema design). Our lesson plan for Version 4 already has a slot for a lecture on modeling: maybe this should be given more emphasis?&lt;/p></description></item><item><title>Day 2: More Sticky Notes</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-2-more-sticky-notes/</link><pubDate>Tue, 04 May 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/05/day-2-more-sticky-notes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Day 2. I feel I should say something like, "We traversed the lower ridge, and are camped in a small valley overlooked by the main peak&amp;mdash;I can hear wallabies hooting in the distance," but (a) it hasn't been quite that dramatic and (b) I don't think wallabies hoot. In &lt;em>this&lt;/em> reality, Jason, Jon, and I spent another afternoon mapping content: in particular, disentangling the mouse-clicking and data-analyzing aspects of the spreadsheet lecture. Tomorrow we hope to do our first pair of five-minute trial screencasts, just to see how well (or how poorly) our chosen tools work.&lt;/p></description></item><item><title>File Sharing for Scientists</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/04/file-sharing-for-scientists/</link><pubDate>Fri, 16 Apr 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/04/file-sharing-for-scientists/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>A scientist I recently met in Toronto had a problem: how to share large files with colleagues. Each file is a couple of hundred megabytes; dozens are produced each week, but each is only interesting for a couple of months; and there are confidentiality issues, so some kind of password protection is needed. Conventional file-sharing services like &lt;a href="http://www.dropbox.com">Dropbox&lt;/a> aren't designed for data that size, so in the end she bought a domain and set up secure FTP.&lt;/p></description></item><item><title>What's Not on the Reading List</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/03/whats-not-on-the-reading-list/</link><pubDate>Mon, 29 Mar 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/03/whats-not-on-the-reading-list/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I mentioned &lt;a href="{{site.baseurl}}/blog/2010/03/recommended-reading.html">yesterday&lt;/a> that I maintain a list of &lt;a href="http://www.third-bit.com/articles/not-on-the-shelves-2009.pdf">books that haven't been written yet&lt;/a>. Partly it's an exercise in sympathetic magic&amp;mdash;if the reviews exist, maybe the books will follow&amp;mdash;but it's also useful for organizing my thoughts about what a programmer's education &lt;em>should&lt;/em> look like. Looking at the &lt;a href="{{site.filesurl}}/bib/software-carpentry.bib">books&lt;/a> I've matched to various topics in the Software Carpentry &lt;a href="{{site.baseurl}}/lessons/previous/">course outline&lt;/a>, there are some distressing gaps:&lt;/p>
&lt;ol>
&lt;li>Given that programmers spend upwards of 40% of their time debugging, there are very few books about it, and only one collection of exercises (Barr's &lt;cite>Find the Bug&lt;/cite>).&lt;/li>
&lt;li>There's a lot on higher-level programming techniques, but it's scattered across dozens of books as disparate as &lt;a href="http://www.amazon.com/Seasoned-Schemer-Daniel-P-Friedman/dp/026256100X">&lt;em>The Seasoned Schemer&lt;/em>&lt;/a>, &lt;a href="http://www.amazon.com/Effective-Specific-Improve-Programs-Designs/dp/0321334876">&lt;em>Effective C++&lt;/em>&lt;/a>, and &lt;a href="http://www.amazon.com/Practice-Programming-Brian-W-Kernighan/dp/020161586X">&lt;em>The Practice of Programming&lt;/em>&lt;/a>. I haven't read Perrotta's &lt;a href="http://www.amazon.com/Metaprogramming-Ruby-Facets-Paolo-Perrotta/dp/1934356476">&lt;em>Metaprogramming Ruby&lt;/em>&lt;/a> yet, but it looks like it will be another rich source of ideas.&lt;/li>
&lt;li>Material on systems programming&amp;mdash;manipulating files and directories, running sub-processes, etc.&amp;mdash;is equally scattered. &lt;a href="http://www.amazon.com/Art-UNIX-Programming-Eric-Raymond/dp/0131429019">&lt;em>The Art of Unix Programming&lt;/em>&lt;/a> includes all the right topics, but covers too much, in too much detail, at too low a level. Gift &amp;amp; Jones' &lt;cite>Python for Unix and Linux System Administration&lt;/cite> has the same two faults (from Software Carpentry's point of view&amp;mdash;I think both are excellent books in general), but uses a scripting language for examples, so it made the list.&lt;/li>
&lt;li>&lt;a href="http://computinged.wordpress.com/">Mark Guzdial&lt;/a> and others have done excellent research showing the benefits of teaching programming using multimedia, i.e., showing students how to manipulate images, sound, and video as a way of explaining loops and conditionals. That's half of why the revised course outline includes image processing early on (the other halves being "it's fun" and "it's useful"). Once again, most of what I'm familiar with is either documentation for specific libraries, or textbooks on the theory of computer vision, but there are &lt;a href="http://www.amazon.com/Digital-Image-Processing-Using-MATLAB/dp/0982085400">some promising titles&lt;/a> in the MATLAB world that I need to explore further.&lt;/li>
&lt;li>Performance. It's been 15 years since I first grumbled about this, and the situation hasn't improved. Most books on computer systems performance are really textbooks on queueing theory; of that family, Jain's &lt;a href="http://www.amazon.com/Art-Computer-Systems-Performance-Analysis/dp/0471503363">&lt;em>Art of Computer Systems Performance Analysis&lt;/em>&lt;/a> is still head and shoulders above the crowd. Souders' &lt;cite>High Performance Web Sites&lt;/cite> is the closest modern equivalent I've found to Bentley's classic &lt;cite>Writing Efficient Programs&lt;/cite>, but neither is really appropriate for scientists, who need to think about disk I/O (biologists and their databases), pipelining and caching (climatologists with their differential equations), and garbage collection (everybody using a VM-based language). I had hoped that &lt;a href="http://www.amazon.com/High-Performance-Python-Anthony-Lewis/dp/0596522088">&lt;em>High Performance Python&lt;/em>&lt;/a> would fill this gap, but it seems to have been delayed indefinitely. (And yes, I've looked at &lt;a href="http://my.safaribooksonline.com/9780321540034">&lt;em>Writing Efficient Ruby Code&lt;/em>&lt;/a>; it has some of what our students want, but not nearly enough.)&lt;/li>
&lt;li>There are lots of books about data modeling, but all the ones I know focus exclusively on either the relational approach or object-oriented design, with a smattering that talk about XML, RDF, and so on. I haven't yet found something that compares and contrasts the three approaches; pointers would be welcome.&lt;/li>
&lt;li>Web programming. There are (literally) thousands of books on the subject, but that's the problem: almost all treatments are book-length, and this course only has room for one or two lectures. It is possible to build a simple web service in that time, but only by (a) using a cookbook approach, rather than teaching students how things actually work, and (b) ignoring security issues completely. I'm not comfortable with the first, and flat-out refuse to do the second: if this course shows people how to write a simple CGI script that's vulnerable to SQL injection and cross-site scripting, then it's our fault when the students' machines are hacked. This gap is as much in the available libraries as in the books, but that doesn't make it any less pressing.&lt;/li>
&lt;/ol>
&lt;p>Given these gaps, I may drop one or two topics (such as performance and web programming) and either swap in one of the discarded topics or spend more time on some of the core material. I'm hoping neither will be necessary; as I said above, pointers to books in any language that are at the right level, and cover the right areas, would be very welcome.&lt;/p></description></item><item><title>Recommended Reading</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/03/recommended-reading/</link><pubDate>Sun, 28 Mar 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/03/recommended-reading/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I'm slightly obsessed with reading lists. (I even maintain a list of &lt;a href="http://www.third-bit.com/articles/not-on-the-shelves-2009.pdf">books that haven't been written yet&lt;/a>, in the hope that it will inspire people to turn some of the entries from fantasy into reality.) Partly to give credit to all the people whose work inspired Software Carpentry, and partly to guide students who want to learn more than we can fit into a double dozen lectures, I have started a &lt;a href="{{site.filesurl}}/bib/software-carpentry.bib">bibliography&lt;/a>, and added links to relevant books to the lecture descriptions in the &lt;a href="{{site.baseurl}}/lessons/previous/">course outline&lt;/a>. Pointers to other material would be very welcome; I will blog soon about areas that I feel are particularly lacking.&lt;/p></description></item><item><title>How Much Of This Should Scientists Understand?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/03/how-much-of-this-should-scientists-understand/</link><pubDate>Thu, 11 Mar 2010 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2010/03/how-much-of-this-should-scientists-understand/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Let's start with the problem description:&lt;/p>
&lt;blockquote>&lt;p>All of the Software Carpentry course material (including lecture notes, code samples, data files, and images) is stored in a Subversion repository. That's currently hosted at the University of Toronto, but I'd like to move it to the software-carpentry.org domain (along with this blog). However, software-carpentry.org is hosted with site5.com, who only provide one shell account per domain for cheap accounts like the one I bought.&lt;/p></description></item><item><title>Dudley and Butte on Software Skills</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/12/dudley-and-butte-on-software-skills/</link><pubDate>Sun, 27 Dec 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/12/dudley-and-butte-on-software-skills/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Via &lt;a href="http://ivory.idyll.org/blog">Titus Brown&lt;/a>, a new PLoS paper titled "&lt;a href="http://dx.plos.org/10.1371/journal.pcbi.1000589">A Quick Guide for Developing Effective Bioinformatics Programming Skills&lt;/a>" by Joel Dudley and Atul Butte. Their recommendations are:&lt;/p>
&lt;ol>
&lt;li>Programming languages&lt;/li>
&lt;li>Embracing open source&lt;/li>
&lt;li>Unix command-line skills&lt;/li>
&lt;li>Keeping projects documented and manageable&lt;/li>
&lt;li>Preserving source code with version control&lt;/li>
&lt;li>Embracing parallel computing paradigms&lt;/li>
&lt;li>Structuring data for speed and scalability&lt;/li>
&lt;li>Understanding the capabilities of hardware&lt;/li>
&lt;li>Embracing standards and interoperability&lt;/li>
&lt;li>Put a high value on your time&lt;/li>
&lt;/ol>
&lt;p>I think all these things matter, but:&lt;/p></description></item><item><title>Cloud Computing for Beginners</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/11/cloud-computing-for-beginners/</link><pubDate>Sun, 15 Nov 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/11/cloud-computing-for-beginners/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Ana Nelson has posted &lt;a href="http://ananelson.com/blog/2009/11/simulations-in-the-cloud/">step-by-step instructions&lt;/a> showing how to use Amazon's EC2 cloud computing platform to run simulations. There are still a lot of fiddly details, but the barriers to entry are getting lower all the time...&lt;/p></description></item><item><title>Packaging</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/11/packaging/</link><pubDate>Fri, 13 Nov 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/11/packaging/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Martijn Faassen has posted a nice &lt;a href="http://faassen.n--tree.net/blog/view/weblog/2009/11/09/0">history of packaging and distribution tools for Python.&lt;/a> Yes, it's a topic only a geek could love, but anyone who wants to distribute software to other people needs to grapple with these issues. The question is, should these tools, the problems that motivate them, and the technology underlying them be part of this course? Or should something equivalent (and if so, what)?&lt;/p></description></item><item><title>By Popular Request...</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/by-popular-request/</link><pubDate>Fri, 30 Oct 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/by-popular-request/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>...I have added a lecture on high performance computing to the revised outline for the course. Several people suggested it, and what's the point of asking for feedback if I don't listen?&lt;/p></description></item><item><title>Cryptography Isn't Security</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/cryptography-isnt-security/</link><pubDate>Fri, 23 Oct 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/cryptography-isnt-security/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One topic that I've tried to include in this course a couple of times, without success, is security. I feel irresponsible &lt;em>not&lt;/em> saying something about how to share safely, but I've never found something that (a) would fit into one hour, (b) wasn't platitudes, and (c) gave listeners something they could act on.&lt;/p>
&lt;p>One reviewer suggested talking about public/private key pairs (to help people set up SSH), signing things digitally, and the like. I'm leery of going down that road, though, since it could easily leave people with a misplaced faith in technical solutions to security problems. As always, suggestions would be welcome...&lt;/p></description></item><item><title>Should Modeling Be Part of This Course?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/should-modeling-be-part-of-this-course/</link><pubDate>Wed, 21 Oct 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/should-modeling-be-part-of-this-course/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Jon Pipitone has a &lt;a href="http://skoolr.blogspot.com/2009/10/modeling-solutions-to-climate-change_20.html">good description&lt;/a> on his blog of work the grad students in our department are doing to translate work in climate change into software engineering terms. Their first step is to represent the ideas in MacKay's excellent &lt;a href="http://withouthotair.com/">&lt;em>Sustainable Energy Without the Hot Air&lt;/em>&lt;/a> in two of the graphical notations that computer scientists use for system design. I was initially very skeptical, but looking at their work so far, I'm quite impressed. My question is, would it be useful for scientists to know how to do this themselves? More specifically, is the lecture on data modeling that I've planned to include in Version 4.0 worthwhile or not?&lt;/p></description></item><item><title>Revised Plan</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/revised-plan/</link><pubDate>Fri, 16 Oct 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/revised-plan/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've posted updates to the revised course outline. In particular, I have:&lt;/p>
&lt;ol>
&lt;li>Moved testing earlier.&lt;/li>
&lt;li>Clarified intent in a couple of places.&lt;/li>
&lt;li>Made an list of things we're leaving out.&lt;/li>
&lt;/ol>
&lt;p>As always, feedback would be welcome. I'd also be grateful for pointers to places that might fund this work: as I've found in the past, many people think the course is a good idea, but it doesn't quite fit into their funding mandates :-(&lt;/p></description></item><item><title>Videos from Symposium Are Now Online</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/videos-from-symposium-are-now-online/</link><pubDate>Thu, 08 Oct 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/videos-from-symposium-are-now-online/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I have put video recordings of the guest talks given at our July 29 symposium on Science 2.0 &amp;mdash; please click the titles of the talks on the index page. Thanks again to all of our speakers, to the MaRS Centre technicians for the raw recordings, and to Tanya Murdoch for editing.&lt;/p></description></item><item><title>Comments on Course Reorganization</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/comments-on-course-reorganization/</link><pubDate>Tue, 06 Oct 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/10/comments-on-course-reorganization/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I'm grateful to &lt;a href="http://www.east.isi.edu/~lorin/">Lorin Hochstein&lt;/a> for sending detailed feedback on my proposal to reorganize the course. His comments are below, with my replies and his counter-replies interspersed; more comments would be very welcome.&lt;/p>
&lt;p>Content I think you could drop if you wanted to save time:&lt;/p>
&lt;p>Read Data Directly From Hardware. I suspect that this would be relevant to only a small minority of your audience. Especially if you're teaching the course mostly in Python, because this is the sort of thing you should really do in C.&lt;/p></description></item><item><title>Updated Outline for Revised Course</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/09/updated-outline-for-revised-course/</link><pubDate>Fri, 18 Sep 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/09/updated-outline-for-revised-course/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I have updated the description [no longer online] of how I plan/hope to reorganize the course. My thanks to everyone who commented on the earlier draft; I'd be very grateful for feedback on this one as well&amp;mdash;I realize that some of the lectures are still hopelessly ambitious, but I hope it's at least a target to shoot at.&lt;/p></description></item><item><title>Partial Outline of New Version of Course</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/09/partial-outline-of-new-version-of-course/</link><pubDate>Tue, 15 Sep 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/09/partial-outline-of-new-version-of-course/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I have put a mostly-complete draft of my ideas for a rewrite of the course online. This version would start with specific problems, then backfill the tools and skills needed to solve them, but there are some big outstanding issues:&lt;/p>
&lt;ol>
&lt;li>There still isn't anything on the computational thinking skills that &lt;a href="{{site.baseurl}}/blog/2009/08/the-big-picture.html">Jon Udell&lt;/a> identified. I don't know how to tackle these without relying more than I want to on closed-source offerings like Yahoo! Pipes that could disappear at a moment's notice.&lt;/li>
&lt;li>I just can't see how to fit some topics&amp;mdash;particularly object-oriented programming and web programming&amp;mdash;into the available space (a maximum of two hours of lecture and four hours of lab for each). What are the minimum useful problem/lecture for each?&lt;/li>
&lt;/ol>
&lt;p>There are a few others as well (just search for 'TODO'), but those are the big ones. Any help you can give would be very welcome.&lt;/p></description></item><item><title>R for Programmers?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/09/r-for-programmers/</link><pubDate>Sat, 05 Sep 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/09/r-for-programmers/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>What's the best introduction to the statistical language R for experienced programmers who are more interested in its support for objects, systems programming, and the like than they are in statistics?&lt;/p></description></item><item><title>Is The Future Waving At You?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/is-the-future-waving-at-you/</link><pubDate>Sun, 30 Aug 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/is-the-future-waving-at-you/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Cameron Neylon has been playing with Google Wave, and he likes it. His &lt;a href="http://blog.openwetware.org/scienceintheopen/2009/08/23/reflecting-on-a-wave-the-demo-at-science-online-london-2009/">presentation&lt;/a> at Science Online in London in August explains why (you can also watch &lt;a href="http://www.viddler.com/explore/CameronNeylon/videos/8/">video&lt;/a>, though sadly there's no soundtrack). He's even &lt;a href="http://blog.openwetware.org/scienceintheopen/2009/08/27/writing-a-wave-robot-some-thoughts-on-good-practice-for-research-robots/">writing robots&lt;/a> to automate some scientifically interesting tasks. &lt;em>Nature News&lt;/em> &lt;a href="http://www.nature.com/news/2009/090824/full/news.2009.857.html">liked Wave too&lt;/a>, which (a) reminds me yet again of how prescient Jon Udell's "&lt;a href="http://207.22.26.166/GroupwareReport.html">Internet Groupware for Scientific Collaboration&lt;/a>" was ten years ago, and (b) makes me wonder (also again) how much this course should be re-thought.&lt;/p></description></item><item><title>How Important is Geospatial Data to You?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/how-important-is-geospatial-data-to-you/</link><pubDate>Wed, 26 Aug 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/how-important-is-geospatial-data-to-you/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Software Carpentry currently teaches students how to manipulate text (using regular expressions), XML (using DOM), relational data (with SQL), and binary data. A decade ago, when we first put the course together, that covered everything I'd ever seen more than one or two scientists use. Today, though, an increasing number are using geospatial (map) data as well. How important is this to your work? If the answer is "very", what data do you work with, what do you do with it, and what would you &lt;em>like&lt;/em> to be able to do?&lt;/p></description></item><item><title>The Delight Is In The Details, Too</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/the-delight-is-in-the-details-too/</link><pubDate>Sun, 23 Aug 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/the-delight-is-in-the-details-too/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>They say the devil is in the details, but so's the delight, because it's the details that determine whether something works or doesn't. So let's take a look at how to translate the last post's "&lt;a href="{{site.baseurl}}/blog/2009/08/the-big-picture.html">big picture&lt;/a>" into actual course content.&lt;/p>
&lt;p>Every competent developer uses some kind of tool to automate tasks that involve dependencies. The best known is still &lt;a href="http://www.gnu.org/software/make/">Make&lt;/a>, which compares the last-modified-times on files to see which ones are stale, and runs shell commands to bring them up to date. &lt;a href="http://ant.apache.org/">Ant&lt;/a>, &lt;a href="http://rake.rubyforge.org/">Rake&lt;/a>, and whatever's built into your IDE all work basically the same way, and can all be used (with greater or less ease) to recompile software, re-run tests, prepare distributions, update web sites, and what have you.&lt;/p></description></item><item><title>The Big Picture</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/the-big-picture/</link><pubDate>Fri, 21 Aug 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/the-big-picture/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One of the lessons we learned at &lt;a href="http://www.lanl.gov">Los Alamos National Laboratory&lt;/a> in the 1990s and early 2000s is that most scientists don't actually want to learn how to program&amp;mdash;they want solve scientific problems.To many,programming is a tax they have to pay in order to do their research.To the rest,it's something they really would find interesting,but they have a grant deadline coming up and a paper to finish.&lt;/p></description></item><item><title>Guest Speakers' Slides Now Available</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/guest-speakers-slides-now-available/</link><pubDate>Mon, 03 Aug 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/guest-speakers-slides-now-available/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Our guest speakers' slides are now on the web; video will follow soon.&lt;/p></description></item><item><title>Next Steps</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/next-steps/</link><pubDate>Sun, 02 Aug 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/next-steps/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>It's clear from Friday's &lt;a href="{{site.baseurl}}/blog/2009/08/post-mortem.html">end-of-course review&lt;/a> that the course needs shaking up. Before that starts, though, there's a higher-level question to answer: should the course notes be converted to a wiki to encourage contributions from others? It was always my hope that other people would contribute material, but in four years, only five ever have; perhaps wikification would change that.&lt;/p>
&lt;p>Right now, the notes are stored as HTML pages in a Subversion repository and compiled by a little Python script to resolve cross-references, insert code samples, and so on. The advantages of this approach are:&lt;/p></description></item><item><title>Post-Mortem</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/post-mortem/</link><pubDate>Sat, 01 Aug 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/08/post-mortem/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Today was the last day of the course, so we spent the morning talking about what had gone well and what had not. The high and low points were:&lt;/p>
&lt;h2>Good&lt;/h2>
&lt;ul>
&lt;li>The course was fun.&lt;/li>
&lt;li>The TAs were fantastic.&lt;/li>
&lt;li>The format (one hour of lecture plus two hours of lab, twice a day) worked well.&lt;/li>
&lt;li>Enjoyed the parts where the instructors programmed live.&lt;/li>
&lt;li>Liked the emphasis on working practices that complement coding.&lt;/li>
&lt;li>Liked the spread of topics, and the variability of things that are useful in all the different fields.&lt;/li>
&lt;li>Liked the pair programming.&lt;/li>
&lt;li>Welcomed exposure to standard libraries that weren't necessarily covered in the course.&lt;/li>
&lt;li>Liked the pre-arrival questions about what people knew, were doing, and wanted from the course.&lt;/li>
&lt;li>The examples were good.&lt;/li>
&lt;li>So were the donuts.&lt;/li>
&lt;/ul>
&lt;h2>Bad&lt;/h2>
&lt;ul>
&lt;li>Three weeks is too long.&lt;/li>
&lt;li>Some of the later topics were not as useful.&lt;/li>
&lt;li>Would have preferred to use standard libraries for the image processing lecture and exercises instead of simplified libraries.&lt;/li>
&lt;li>Too little coverage of too many subjects.&lt;/li>
&lt;li>The formatting of the slides leaves much to be desired.&lt;/li>
&lt;li>Too many lectures ran over time (which was particularly hard in afternoon sessions).&lt;/li>
&lt;li>Divided attention in FriendFeed is a problem.&lt;/li>
&lt;li>The less applied stuff (e.g., computational complexity) wasn't as useful or as interesting.&lt;/li>
&lt;li>Students weren't given enough time to work on their own projects.&lt;/li>
&lt;li>Didn't feel encouraged to make suggestions or provide feedback.&lt;/li>
&lt;li>Not enough on shell programming.&lt;/li>
&lt;li>Too much shell programming.&lt;/li>
&lt;li>A/V between Toronto and Edmonton was crude by modern standards.&lt;/li>
&lt;/ul>
&lt;h2>Changes&lt;/h2>
&lt;ul>
&lt;li>More on object-oriented programming.&lt;/li>
&lt;li>More feedback on the students' solutions to the exercises&amp;mdash;they didn't get the equivalent of grading.&lt;/li>
&lt;li>Put the exercises up before the class, so that students know what the lecture's going to be leading them to.&lt;/li>
&lt;/ul>
&lt;p>It's been a good three weeks&amp;mdash;I enjoyed getting to know the students, and look forward to seeing what they do with what they've learned.&lt;/p></description></item><item><title>A Good Afternoon</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/07/a-good-afternoon/</link><pubDate>Fri, 31 Jul 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/07/a-good-afternoon/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Yesterday afternoon, the students and ninety other guests were treated to six engaging talks about Science 2.0 from &lt;a href="http://ivory.idyll.org/blog">Titus Brown&lt;/a>, &lt;a href="http://blog.openwetware.org/scienceintheopen">Cameron Neylon&lt;/a>, &lt;a href="http://www.stodden.net">Victoria Stodden&lt;/a>, David Rich, &lt;a href="http://michaelnielsen.org/blog">Michael Nielsen&lt;/a>, and &lt;a href="http://www.jonudell.net">Jon Udell&lt;/a>. We'll post slides and video here as soon as we get them; until then, you can catch up on what happened in the &lt;a href="http://friendfeed.com/toronto-science-2-0">FriendFeed room&lt;/a> or by reading Steve Easterbrook's &lt;a href="http://www.easterbrook.ca/steve/?p=776">real-time blog&lt;/a> of the event.&lt;/p>
&lt;p>Our thanks once again to everyone who made the day possible:&lt;/p></description></item><item><title>Where This Course Came From</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/07/where-this-course-came-from/</link><pubDate>Mon, 27 Jul 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/07/where-this-course-came-from/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I have created an Amazon.com Listmania list [no longer online] for the books that most directly influenced this course. Some topics aren't directly represented&amp;mdash;there's nothing devoted to handling XML or binary data, for example, or on big-Oh complexity or web programming&amp;mdash;but I hope what's there will be of use.&lt;/p></description></item><item><title>Quality Control and Traceability</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/quality-control-and-traceability/</link><pubDate>Mon, 29 Jun 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/quality-control-and-traceability/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>&lt;em>Nature News&lt;/em> recently &lt;a href="http://www.nature.com/news/2009/090624/full/4591038b.html">reported&lt;/a> work by Gurt Vriend at other to clean up records in the widely-used Protein Data Bank (PDB). This is great news, but what's missing is a way to track forward from entries to see what already-published papers have relied on data that's now known to be incorrect. One of the many goals of this course is to give scientists the understanding they need to tackle this problem.&lt;/p></description></item><item><title>Ready for Proofreading</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/ready-for-proofreading/</link><pubDate>Mon, 29 Jun 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/ready-for-proofreading/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We're ready for feedback &amp;mdash; if you check out the new slides, you'll see a little feedback bubble at the bottom of each topic. Clicking that will give you a chance to send us email to tell us about formatting glitches, factual errors, or anything else you'd like fixed. Please let us know what you think...&lt;/p></description></item><item><title>Updating the License</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/updating-the-license/</link><pubDate>Thu, 25 Jun 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/updating-the-license/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>In response to several requests, we have updated the &lt;a href="{{site.baseurl}}/license/">license&lt;/a> on the course material: the course content is now covered by the &lt;a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution&lt;/a> license, while the example code is (still) covered by an open source &lt;a href="http://opensource.org/licenses/mit-license.html">MIT license&lt;/a>. In plain English, this means that you can re-use course content however you want, as long as you give us credit.&lt;/p></description></item><item><title>Another New Version of the Slides</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/another-new-version-of-the-slides/</link><pubDate>Tue, 23 Jun 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/another-new-version-of-the-slides/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>A new(er) version of the slides has been posted at http://software-carpentry.org that includes styling changes courtesy of &lt;a href="http://www.ryanfeeley.com">Ryan Feeley&lt;/a>. There are still many minor formatting glitches; we'll fix them in the coming week, and post a schedule showing which lectures are going to be given when.&lt;/p>
&lt;p>We've also updated the Guest Speakers page with bios and abstracts for the people who'll be talking at the &lt;a href="http://www.marsdd.com">MaRS Centre&lt;/a> in Toronto on July 29. Talks will run 1-6 pm, and will be followed by a wine and cheese. The event is free, but will require advance registration&amp;mdash;we'll post details here as soon as we have them.&lt;/p></description></item><item><title>And Speaking of Sightings...</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/and-speaking-of-sightings/</link><pubDate>Mon, 15 Jun 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/and-speaking-of-sightings/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>A new (but very rough) version of the slides for the course is now up at &lt;a href="http://software-carpentry.org">http://software-carpentry.org&lt;/a>. This uses &lt;a href="http://meyerweb.com/eric/tools/s5/">Eric Meyer's S5 package&lt;/a> for formatting and pagination (along with a short Python script to insert cross-references). We were planning to use LaTeX, but after messing around with packages, dependencies, and the like, HTML started to look at lot simpler. We still have a lot of reformatting to do (particularly with tables and code inclusions); if you'd like to help, or if you are a CSS expert and can help make the slides look good with Internet Explorer (right now they're styled for Firefox), please let us know.&lt;/p></description></item><item><title>SECSE Workshop</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/secse-workshop/</link><pubDate>Mon, 01 Jun 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/06/secse-workshop/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The latest in a series of workshops on "&lt;a href="http://www.cs.ua.edu/~SECSE09/">Software Engineering for Computational Science and Engineering&lt;/a>" was held in Vancouver on May 23, just after &lt;a href="http://www.cs.uoregon.edu/events/icse2009/home/">ICSE'09&lt;/a>. Steve Easterbrook has written a &lt;a href="http://www.easterbrook.ca/steve/?p=497">good summary&lt;/a> of what was discussed, and &lt;a href="http://www.cs.ua.edu/~carver/">Jeffrey Carver&lt;/a>'s longer summary will appear in a future issue of &lt;a href="http://cise.aip.org/">&lt;em>Computing in Science and Engineering&lt;/em>&lt;/a>.&lt;/p></description></item><item><title>Error Handling</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/05/error-handling/</link><pubDate>Tue, 12 May 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/05/error-handling/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One topic that &lt;em>isn't&lt;/em> currently in the curriculum that I'd really like to add is detecting, handling, reporting, and recovering from errors. This makes up is 10-30% of the code in real applications, but dealing with errors is almost omitted from textbook examples and tutorials for the sake of clarity (Tanenbaum's &lt;a href="http://www.amazon.com/Operating-Systems-Implementation-Prentice-Software/dp/0131429388">Minix book&lt;/a> being a laudable exception). I have asked &lt;a href="http://third-bit.com/articles/not-on-the-shelves-2009.pdf">elsewhere&lt;/a> for someone to write an entire book on the subject; if anyone wants to take a crack at an hour-long lecture, please &lt;a href="mailto:{{site.contact}}">get in touch&lt;/a>.&lt;/p></description></item><item><title>Links for Summer Interns</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/05/links-for-summer-interns/</link><pubDate>Mon, 11 May 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/05/links-for-summer-interns/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Our summer interns started today; our first job is to define exactly what they'll be working on this summer, so it seems like a good time to round up a few links on interesting topics. My apologies for those hidden behind paywalls...&lt;/p>
&lt;p>&lt;strong>Steve's Project Ideas&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>&lt;a href="http://www.easterbrook.ca/steve/?p=430">Social network analysis for scientists&lt;/a>&lt;/li>
&lt;li>Electronic lab notebooks&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Reproducible Research&lt;/strong>&lt;/p>
&lt;p>If I said, "I just got a really interesting result in the lab, but I didn't record the steps I took or the settings on the machine," no reputable journal would publish my paper. If I said, "I just got a really interesting &lt;em>computational&lt;/em> result," most reviewers and editors wouldn't even ask if I'd archived my code and the parameters I used, or whether that code would run on someone else's machine. Reproducible research (RR) is the idea of making computational science as trustworthy as experimental science by creating tools and working practices that will allow scientists to re-create past results.&lt;/p></description></item><item><title>How Scientists Use Computers: Survey Part 2</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/05/how-scientists-use-computers-survey-part-2/</link><pubDate>Sat, 09 May 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/05/how-scientists-use-computers-survey-part-2/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Thank you once again for taking part in our Fall 2008 survey of how scientists use computers in their research. We will present a paper describing our findings at &lt;a href="http://www.cs.ua.edu/~SECSE09/">ICSE'09&lt;/a> in Vancouver on May 23, and will make the results public as soon after that as possible. There will also be an article in &lt;a href="http://www.amsci.org">American Scientist&lt;/a> magazine discussing what you've told us some time this summer.&lt;/p></description></item><item><title>Topics and Schedule Posted</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/05/topics-and-schedule-posted/</link><pubDate>Wed, 06 May 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/05/topics-and-schedule-posted/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We've put up a list of the topics we intend to cover, and the order in which we intend to cover them. It's very provisional; we'll update it regularly, and your comments would be very welcome.&lt;/p>
&lt;p>&lt;em>Note: the topics page has been retired. Please see the course outline instead.&lt;/em>&lt;/p></description></item><item><title>Empirical Software Engineering and Scientific Computing</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/04/empirical-software-engineering-and-scientific-computing/</link><pubDate>Tue, 28 Apr 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/04/empirical-software-engineering-and-scientific-computing/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The slides for my talk at the National Research Council on &lt;a href="http://www.slideshare.net/gvwilson/we-know-less-than-you-think-but-we-do-know-something">empirical software engineering and how scientists actually use computers&lt;/a> are now up on SlideShare. The colors in some of the embedded images were messed up during upload, but the result should still be readable.&lt;/p></description></item><item><title>Firming Up Course Goals</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/04/firming-up-course-goals/</link><pubDate>Mon, 27 Apr 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/04/firming-up-course-goals/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The best way to design a course is to describe the things students will be able to do when it's over; the best way to do that is to specify graduation exercises. Ours are listed in the Goals page on this blog. We would be grateful for feedback: are these the things you want to be able to do? What did we forget? What could we take out to make room for things you care about more? Please leave your comments on the page itself; we'll update it regularly based on what you say.&lt;/p></description></item><item><title>What Supervisors Need To Know</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/04/what-supervisors-need-to-know/</link><pubDate>Thu, 23 Apr 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/04/what-supervisors-need-to-know/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I received an interesting email yesterday from a grad student who took this course the last time it was offered at the University of Toronto. It said in part:&lt;/p>
&lt;p>&lt;em>My supervisor could better advise students doing computational work if they had more background knowledge. They are routinely faced with questions like:&lt;br />
&lt;/em>&lt;/p>
&lt;ul>
&lt;li>&lt;em> Is a project possible, given the background of the student and the difficulty of the tasks?&lt;/em>&lt;/li>
&lt;li>&lt;em>How long should a project take, and what can be considered good progress?&lt;/em>&lt;/li>
&lt;li>&lt;em>What training should a student have?&lt;/em>&lt;/li>
&lt;li>&lt;em>How to manage collaboration between students, data archives, etc?&lt;/em>&lt;/li>
&lt;li>&lt;em>How to make sense of and build upon work done by previous students?&lt;/em>&lt;/li>
&lt;/ul>
&lt;p>&lt;em> On a more personal note&amp;mdash;I would enjoy my supervisor having a clearer idea of what I do.&lt;/em>&lt;/p></description></item><item><title>We've Started a FAQ</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/04/weve-started-a-faq/</link><pubDate>Wed, 08 Apr 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/04/weve-started-a-faq/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>We have started a FAQ [no longer online] for the July 2009 offerings of the course in Edmonton and Toronto. Please let us know if you have any questions that it doesn't answer yet.&lt;/p></description></item><item><title>User Stories</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/03/user-stories/</link><pubDate>Mon, 30 Mar 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/03/user-stories/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One of the tricks I teach my undergraduates is to create fictional personas to describe the intended users of a system&amp;mdash;or in this case, a course. Here are three of the "people" I've had in mind while developing Software Carpentry to date; my goal is to update these stories to better reflect how scientists work today.&lt;/p>
&lt;p>&lt;strong>Bhargan Basepair&lt;/strong>&lt;/p>
&lt;p>Bhargan Basepair received a B.Sc. in biochemistry five years ago. He has been working since then for Genes'R'Us, a biotech firm with labs in four countries. He did a Java programming course as a freshman, and a bioinformatics course using Perl as a senior.&lt;/p></description></item><item><title>Legal Frameworks for Reproducible Research</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/03/legal-frameworks-for-reproducible-research/</link><pubDate>Tue, 17 Mar 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/03/legal-frameworks-for-reproducible-research/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>My grad students and I met &lt;a href="http://www.stanford.edu/~vcs/">Victoria Stodden&lt;/a> for the first time yesterday, and had a great time talking about reproducible research, science 2.0, and most particularly the kind of legal/copyright frameworks needed to move science forward. She has two papers up that anyone interested in the subject should read: a short one that appeared in &lt;em>&lt;a href="http://cise.aip.org/">Computing in Science and Engineerin&lt;/a>g&lt;/em> titled &lt;a href="http://www.stanford.edu/~vcs/papers/LFRSR12012008.pdf">The Legal Framework for Reproducible Research in the Sciences: Licensing and Copyright&lt;/a>, anda longer one due out soon called &lt;a href="http://www.stanford.edu/~vcs/papers/ERROLSI03092009.pdf">Enabling Reproducible Research: Open Licensing For Scientific Innovation&lt;/a>. If you have thoughts on the subject, I'm sure she'd enjoy hearing from you.&lt;/p></description></item><item><title>Computer Supported Collaborative Science</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/02/computer-supported-collaborative-science/</link><pubDate>Wed, 18 Feb 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/02/computer-supported-collaborative-science/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I've used the term "CSCS" a &lt;a href="http://pyre.third-bit.com/blog/archives/2035.html">few&lt;/a> &lt;a href="http://pyre.third-bit.com/blog/archives/2083.html">times&lt;/a> now; time to start groping toward a definition. "Computer supported collaborative science" (CSCS) is a specialization of computer supported collaborative work, which is the study of "how collaborative activities and their coordination can be supported by means of computer systems". Insert the word "scientific", and you have CSCS. More specifically, CSCS includes science 2.0, open notebook science, reproducible research, workflow &amp;amp; provenance, and other things modern computing technology can do to help scientists find and share information.&lt;/p></description></item><item><title>Enough Players to Hand Out Medals</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/02/enough-players-to-hand-out-medals/</link><pubDate>Mon, 16 Feb 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/02/enough-players-to-hand-out-medals/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I blogged last August about the first and second &lt;a href="http://pyre.third-bit.com/blog/archives/1716.html">Provenance Challenge&lt;/a>, in which the creators of systems for tracking scientific data and workflows were given sample problems, then asked to have their tools answer a variety of questions. (Results from the first were reported in &lt;a href="http://portal.acm.org/citation.cfm?id=1350745.1350753">&lt;em>Concurrency and Computation&lt;/em>&lt;/a>, but ironically, those articles are not openly available; the third challenge will kick off soon.) Chasing down one of those references again, I came across the&lt;a href="http://onschallenge.wikispaces.com/"> Open Notebook Science Challenge&lt;/a>, which "...calls upon people with access to materials and equipment to measure the solubility of compounds (aldehydes, amines and carboxylic acids are a priority) in organic solvents and report their findings using &lt;a href="http://en.wikipedia.org/wiki/Open_Notebook_Science">Open Notebook Science&lt;/a>". This isn't quite the same thing as automatically tracking data provenance; instead, it is "...the practice of making the entire primary record of a research project publicly available online as it is recorded". There are lots of interesting research questions for computer scientists here, ranging from privacy and security issues to notification, peripheral awareness, ontological engineering, and more &amp;mdash; for example, see Cameron Neylon's latest post synthesizing discussion about &lt;a href="http://blog.openwetware.org/scienceintheopen/2009/02/15/contributor-ids-an-attempt-to-aggregate-and-integrate/">using OpenID to identify scientific researchers and their contributions&lt;/a>.&lt;/p></description></item><item><title>MTEST</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/02/mtest/</link><pubDate>Wed, 11 Feb 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/02/mtest/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Steve Eddins has posted &lt;a href="http://blogs.mathworks.com/steve/2009/02/03/mtest-a-unit-test-harness-for-matlab-code/">an xUnit-style testing harness for MATLAB called MTEST&lt;/a> on the MATLAB Central File Exchange. It's a nice piece of work, and I hope numerical programmers will make heavy use of it.&lt;/p></description></item><item><title>Python Textbooks for Biotech</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/02/python-textbooks-for-biotech/</link><pubDate>Wed, 11 Feb 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/02/python-textbooks-for-biotech/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Jan Erik Mostr&amp;ouml;m recently posted a request for textbook recommendations for teaching programming (using Python) to biotechnology students. He has now posted the responses [no longer online] he received &amp;mdash; might be interesting to some readers of this blog.&lt;/p></description></item><item><title>Sharing Data Isn't That Easy</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/02/sharing-data-isnt-that-easy/</link><pubDate>Fri, 06 Feb 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/02/sharing-data-isnt-that-easy/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Interesting post from Systeme D called "&lt;a href="http://www.systemed.net/blog/legacy/entry060311122655.html">ShareAlike considered harmful&lt;/a>" (for geo data, anyway). I should give this to my students and ask them to think it through...&lt;/p></description></item><item><title>Web Native Lab Notebooks</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/01/web-native-lab-notebooks/</link><pubDate>Tue, 27 Jan 2009 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2009/01/web-native-lab-notebooks/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>&lt;a href="http://blog.openwetware.org/scienceintheopen/2009/01/27/the-integrated-lab-record-or-the-web-native-lab-notebook/">Good post&lt;/a> from Cameron Neylon about the lab notebooks of the future: "The traditional paper notebook is to the fully integrated web based lab record as a card index is to Google."&lt;/p></description></item><item><title>Time to Freshen It Up</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/12/time-to-freshen-it-up/</link><pubDate>Wed, 31 Dec 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/12/time-to-freshen-it-up/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I tell the students in my software engineering classes that the absolute value of code coverage in testing isn't as important as the trend: if you're testing a smaller percentage of your software as time goes by, you're headed for trouble. The same is true of site stats: I don't care much about the absolute number of visitors, but if the curve is down and to the right, it's time to give the site a polish, or retire it.&lt;/p></description></item><item><title>Igor, Connect the Electrodes!</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/11/igor-connect-the-electrodes/</link><pubDate>Sun, 30 Nov 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/11/igor-connect-the-electrodes/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The Software Carpentry course site is still getting a fair bit of traffic, although readership is definitely tailing off:&lt;/p>
&lt;p>&lt;img src="{{site.filesurl}}/swc_blog/2008/11/usage.png" alt="SWC site stats" />&lt;/p>
&lt;p>I'm hoping to run an intensive three-week version of the course in June 2009 in Toronto (details to follow); hope I can find time between now and then to finish wikifying the course notes, get the MATLAB material online, and generally freshen the site up.&lt;/p></description></item><item><title>One Good Survey Deserves Another</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/11/one-good-survey-deserves-another/</link><pubDate>Tue, 04 Nov 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/11/one-good-survey-deserves-another/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>While we're running our survey of &lt;del href="http://softwareresearch.ca/seg/SCS/scientific-computing-survey.html">how scientists use computers&lt;/del> [link no longer active], the folks at MATLAB are &lt;a href="http://www.customersat3.com/TakeSurvey.asp?si=c3Y%2BMBjNHcc%3D">asking their users a few questions&lt;/a> too. If you use any MathWorks products, and have a few minutes, they'd be grateful for your help.&lt;/p></description></item><item><title>1731 People</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/11/1731-people/</link><pubDate>Sun, 02 Nov 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/11/1731-people/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>1731 people have completed our survey of how scientists use computers since it went online three weeks ago. That's pretty cool, but I'd like to double the number (at least). If you consider yourself a working scientist, and haven't taken the survey yet, please take a moment and do so. If you aren't a scientist, but know some, please pass on the link:&lt;br />
&lt;del href="http://softwareresearch.ca/seg/SCS/scientific-computing-survey.html">http://softwareresearch.ca/seg/SCS/scientific-computing-survey.html&lt;/del>&lt;br />
[link no longer active]&lt;/p></description></item><item><title>Surveying Scientists' Use of Computers</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/10/surveying-scientists-use-of-computers/</link><pubDate>Wed, 15 Oct 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/10/surveying-scientists-use-of-computers/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Computers are as important to modern scientists as test tubes, but we know surprisingly little about how scientists develop and use software in their research. To find out, the &lt;a href="http://www.utoronto.ca">University of Toronto&lt;/a>, &lt;a href="http://www.simula.no">Simula Research Laboratory&lt;/a>, and the &lt;a href="http://www.nrc-cnrc.gc.ca/">National Research Council of Canada&lt;/a> have launched an online survey in conjunction with &lt;a href="http://www.americanscientist.org">&lt;cite>American Scientist&lt;/cite>&lt;/a> magazine. If you have 20 minutes to take part, please go to:&lt;/p>
&lt;p>&lt;del href="http://softwareresearch.ca/seg/SCS/scientific-computing-survey.html">http://softwareresearch.ca/seg/SCS/scientific-computing-survey.html&lt;/del> [link no longer active]&lt;/p></description></item><item><title>Data Provenance Challenge</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/08/data-provenance-challenge/</link><pubDate>Wed, 13 Aug 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/08/data-provenance-challenge/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>John's summary of our discussion about &lt;a href="http://www.reproducibleresearch.net/blog/2008/08/13/how-to-teach-rr-in-one-hour/">what to teach scientists about reproducible research&lt;/a> if they already believe it's a good thing, and want to start doing it reminded me that I never posted about the &lt;a href="http://openprovenance.org/">Provenance Challenge&lt;/a>. It has been run twice so far; each time, authors of tools to track the provenance (or lineage) of scientific data have to implemented some workflows, then answers questions about where data came from, what was done to it, and so on. The results of the first challenge are described system-by-system in &lt;a href="http://portal.acm.org/citation.cfm?id=1350745.1350753">these papers&lt;/a> (sorry, but it's behind a wall &amp;mdash; if you google for combinations of the authors' names, you can find PDF preprints). This is a very cool research area, and I hope one of my incoming grad students will want to do something with it.&lt;/p></description></item><item><title>Next Lecture?</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/07/next-lecture/</link><pubDate>Mon, 28 Jul 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/07/next-lecture/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The Software Carpentry course currently contains the following lectures:&lt;/p>
&lt;ol>
&lt;li>Introduction&lt;/li>
&lt;li>The Unix Shell (2 lectures)&lt;/li>
&lt;li>Version Control&lt;/li>
&lt;li>Automated Builds&lt;/li>
&lt;li>Basic Scripting (bool/int/float, for/while/if)&lt;/li>
&lt;li>Strings, Lists, and Files&lt;/li>
&lt;li>Functions and Libraries&lt;/li>
&lt;li>Programming Style&lt;/li>
&lt;li>Quality Assurance (basic testing)&lt;/li>
&lt;li>Sets, Dictionaries, and Complexity&lt;/li>
&lt;li>Debugging&lt;/li>
&lt;li>Object-Oriented Programming (2 lectures)&lt;/li>
&lt;li>Unit Testing (unittest &amp;mdash; should switch this to nose)&lt;/li>
&lt;li>Regular Expressions&lt;/li>
&lt;li>Binary Data&lt;/li>
&lt;li>XML&lt;/li>
&lt;li>Relational Databases&lt;/li>
&lt;li>Spreadsheets&lt;/li>
&lt;li>Numerical Programming (the basics of NumPy)&lt;/li>
&lt;li>Integration (subprocess+pipes and wrapping C functions)&lt;/li>
&lt;li>Web Client Programming (HTTP request/response, URL encoding)&lt;/li>
&lt;li>Web Server Programming (basic CGI processing)&lt;/li>
&lt;li>Security (the weakest lecture of the bunch)&lt;/li>
&lt;li>The Development Process (a mish-mash of sturdy and agile)&lt;/li>
&lt;li>Teamware (introduces portals like &lt;a href="http://www.drproject.org">DrProject&lt;/a>)&lt;/li>
&lt;li>Conclusion (various "where to look next" suggestions)&lt;/li>
&lt;/ol>
&lt;p>Between now and Christmas, I want to tidy them up, duplicate the examples in MATLAB, and add some of the content I wrote for "CSC301: Introduction to Software Engineering". Since I won't have time to do everything, I'd like your help prioritizing. Which of the following topics do you think is most important to add? And what have I forgotten entirely?&lt;/p></description></item><item><title>Quick Quiz to Measure What Scientists Know</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/07/quick-quiz-to-measure-what-scientists-know/</link><pubDate>Wed, 23 Jul 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/07/quick-quiz-to-measure-what-scientists-know/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Suppose you have a room full of scientists&amp;mdash;hundreds of 'em&amp;mdash;and want to find out how they actually use computers in their work. There isn't time to interview them individually, or to record their desktops during a typical working week, so you've decided to ask them to self-assess their understanding of some key terms on a scale of:&lt;/p>
&lt;ol>
&lt;li>No idea what it is.&lt;/li>
&lt;li>Use it/have used it infrequently.&lt;/li>
&lt;li>Use it regularly.&lt;/li>
&lt;li>Couldn't get through the day without it.&lt;/li>
&lt;/ol>
&lt;p>My list is below; what have I forgotten, and (more importantly) how would you criticize this assessment method?&lt;/p></description></item><item><title>Reviving the Software Carpentry Mailing List</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/07/reviving-the-software-carpentry-mailing-list/</link><pubDate>Tue, 22 Jul 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/07/reviving-the-software-carpentry-mailing-list/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Luke Petrolekas and I are &lt;em>thiiiiis&lt;/em> close to having the Software Carpentry notes converted to a wiki. Once they are, I'm going to be working with Tina Yee to update them, do the examples in MATLAB as well as Python, and fix some longstanding bugs. I'm also going to resurrect the project's two mailing lists (one for occasional announcements, the other for people interested in developing new material and/or teaching the course). If you'd like to be on either or both, please &lt;a href="mailto:{{site.contact}}">let us know&lt;/a>.&lt;/p></description></item><item><title>Faking Results</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/06/faking-results/</link><pubDate>Fri, 06 Jun 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/06/faking-results/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Via &lt;a href="http://www.boingboing.net/2008/05/29/bioscientists-photos.html">BoingBoing&lt;/a>, a story about scientists Photoshopping experimental results. Sometimes it's outright fakery; sometimes they're just "cleaning up" or "correcting". Either way, it raises an interesting question: how often are people doing this with computational results? Without scientists' code, or any other way to &lt;a href="http://www.reproducibleresearch.org/">reproduce their work&lt;/a>, we'll probably never know.&lt;/p></description></item><item><title>Programming and Scientific Education on Slashdot</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/05/programming-and-scientific-education-on-slashdot/</link><pubDate>Fri, 30 May 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/05/programming-and-scientific-education-on-slashdot/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Via &lt;a href="http://adam.goucher.ca">Adam Goucher&lt;/a>, a &lt;a href="http://ask.slashdot.org/article.pl?sid=08/05/29/2242205">Slashdot thread&lt;/a> about whether programming should be part of science education. 300+ comments and counting, almost all relating personal experiences.&lt;/p></description></item><item><title>Reminded of the Difference Once Again</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/05/reminded-of-the-difference-once-again/</link><pubDate>Tue, 27 May 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/05/reminded-of-the-difference-once-again/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Via &lt;a href="http://www.controlledflight.ca/2008/05/26/how-can-we-tell-when-were-done/">Irving Reid&lt;/a>, a great quote from &lt;a href="http://www.infoq.com/articles/agile-version-control">Henrik Kniberg&lt;/a> about how to tell when you're done:&lt;/p>
&lt;blockquote>&lt;p>So when a team member says that a story is Done and moves the story card into the Done column, a customer could run into the room at that moment and say "Great Lets go live now", and nobody in the team will say "no, but wait".&lt;/p>&lt;/blockquote>
&lt;p>Ironically, Kniberg's post is called "Version Control for Multiple Agile Teams". Why ironic? Because I was talking yesterday to a professor in my department &amp;mdash; young guy, smart, already has a better research and publication record than I'll ever have. I brought up version control (as in, "Why do less than 10% of faculty and grad students use it?"); his reply was, "Well, we're just going to back everything up once a day."&lt;/p></description></item><item><title>SE-CSE Workshop</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/05/se-cse-workshop/</link><pubDate>Thu, 15 May 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/05/se-cse-workshop/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>One of the downsides of being in Texas is that I couldn't attend the &lt;a href="http://www.cse.msstate.edu/~SECSE08/index.htm">First International Workshop on Software Engineering for Computational Science and Engineering&lt;/a>, which was held at &lt;a href="http://icse08.upb.de/">ICSE'08&lt;/a> in Leipzig this week. Papers are &lt;a href="http://www.cse.msstate.edu/~SECSE08/schedule.htm">here&lt;/a> (I'll be reading them on the flight home); they look interesting, but the biggest thing for me is the change in the workshop's name&amp;mdash;it used to be "Software Engineering for High-Performance Computing Applications" (&lt;del href="http://csdl.ics.hawaii.edu/se-hpcs2004/">2004&lt;/del>, &lt;del href="http://csdl.ics.hawaii.edu/se-hpcs/Welcome.html">2005&lt;/del>, &lt;a href="http://www.ctwatch.org/quarterly/archives/november-2006-a/">2006&lt;/a>, &lt;a href="http://www.cse.msstate.edu/~SEHPC07/">2007&lt;/a>), and I'm hoping the change of name reflects a genuine broadening of focus.&lt;/p></description></item><item><title>Summer Plans for Software Carpentry</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/04/summer-plans-for-software-carpentry/</link><pubDate>Wed, 02 Apr 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/04/summer-plans-for-software-carpentry/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The Software Carpentry site is still getting a lot of traffic, despite my neglect:&lt;/p>
&lt;p>&lt;img src="{{site.filesurl}}/swc_blog/2008/04/usage.png" alt="Site Usage" />&lt;/p>
&lt;p>This summer, I'd like to:&lt;/p>
&lt;ol>
&lt;li>Convert the site from static HTML pages to a wiki to make it easier for people to contribute content and fix bugs.&lt;/li>
&lt;li>Translate the examples into &lt;a href="http://www.mathworks.com">MATLAB&lt;/a> to make them accessible to a larger audience. (Yes, &lt;a href="http://www.python.org">Python&lt;/a> is still my favorite language, and yes, the &lt;a href="http://www.python.org">Python&lt;/a> versions will remain&amp;mdash;I just want it to be possible for the average mechanical engineer to follow the discussion of testing without first having to learn a new programming language).&lt;/li>
&lt;li>Add some of the material that I developed for CSC301: Introduction to Software Engineering, and some of what &lt;a href="http://ivory.idyll.org/blog">Titus Brown&lt;/a> wrote for &lt;a href="http://ivory.idyll.org/articles/advanced-swc/">Intermediate and Advanced Software Carpentry&lt;/a>.&lt;/li>
&lt;/ol>
&lt;p>The odds of all three happening are close to zero: my grad students are going to be in the middle of real research, we're hoping to have half a dozen or ten undergraduate interns as well, we have a "&lt;a href="http://pragprog.com/book/gwpy/practical-programming">CS-1 in Python&lt;/a>" book to finish for Pragmatic, and oh yeah, I'm getting married twice. If you want to help out, now would be a good time to raise your hand... :-)&lt;/p></description></item><item><title>The Retractions Just Keep Coming In</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/04/the-retractions-just-keep-coming-in/</link><pubDate>Wed, 02 Apr 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/04/the-retractions-just-keep-coming-in/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Via &lt;a href="http://ivory.idyll.org/blog">Titus Brown&lt;/a>, yet another published result &lt;a href="http://www.ploscompbiol.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.0030158">retracted&lt;/a> because of a bug in code.&lt;/p></description></item><item><title>Nice Quote</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/03/nice-quote/</link><pubDate>Wed, 26 Mar 2008 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2008/03/nice-quote/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>An article about computational science in a scientific publication is &lt;em>not&lt;/em> the scholarship itself, it is merely &lt;em>advertising&lt;/em> of the scholarship. The actual scholarship is the complete software development environment and the complete set of instructions which generated the figures.&lt;/p>
&lt;p>&amp;mdash;&lt;a href="http://www-stat.stanford.edu/%7Ewavelab/">David L. Donoho&lt;/a>, &lt;cite>&lt;a href="http://www-stat.stanford.edu/%7Edonoho/Reports/1995/wavelab.pdf">WaveLab and Reproducible Research&lt;/a>&lt;/cite>, 1995, p. 5.&lt;/p>
&lt;p>(via &lt;a href="http://osl.iu.edu/~lums/">Andrew Lumsdaine&lt;/a>)&lt;/p></description></item><item><title>Python Supercomputing Statistics</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/12/python-supercomputing-statistics/</link><pubDate>Sun, 09 Dec 2007 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/12/python-supercomputing-statistics/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I have a major grant application and (hopefully final) revisions to my next children's book due on Friday, so of course I'm reading white papers about Python-friendly supercomputing from Interactive Supercomputing, a Boston-area firm that's about three years old. IS offers several kinds of parallelism for MATLAB, Python, R, SAS, and other high-level languages; I don't know if their tools are any easier to use than anyone else's, but they have an impressive team (including Russ Barbour, ex-Apollo, and Steve Reinhardt, ex-Cray).&lt;/p></description></item><item><title>Openness and (the promise of) XML</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/09/openness-and-the-promise-of-xml/</link><pubDate>Wed, 05 Sep 2007 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/09/openness-and-the-promise-of-xml/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Over at O'Reilly, people are &lt;a href="http://radar.oreilly.com/archives/2007/09/ooxml_stalls_at_1.html">gloating&lt;/a> about ISO's decision not to ratify Microsoft's OOXML document "standard". At the same time, Jon Udell is saying &lt;a href="http://blog.jonudell.net/2007/09/05/xml-documents-flavors-versus-essence/">much more interesting things&lt;/a> about what smart document formats could do for the sciences. To quote him quoting Clifford Lynch, "Scientific literature that is computed upon, not merely read by humans."&lt;/p></description></item><item><title>Two Studies of ASCI (and no, that's not a typo)</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/06/two-studies-of-asci-and-no-thats-not-a-typo/</link><pubDate>Wed, 27 Jun 2007 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/06/two-studies-of-asci-and-no-thats-not-a-typo/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>After spending ten years helping scientists write programs for massively-parallel computers, I realized that what scientists really needed was to learn how to program, full stop. It took me another eight years to (a) get up to speed with the theory and practice of modern software engineering, (b) realize how big the gap between the two was, and (c) accept that the only people who are entitled to have an opinion about how we ought to be building software are the ones who are studying how well their favorite tools and practices actually work in the field. I no longer care what you're pushing&amp;mdash;formal methods and cleanroom development or agile adhocracy and pair programming&amp;mdash;unless you've gone the extra mile and collected data to show what effect it's actually having.&lt;/p></description></item><item><title>Software Carpentry Screencasts by Chris Lasher</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/06/software-carpentry-screencasts-by-chris-lasher/</link><pubDate>Wed, 20 Jun 2007 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/06/software-carpentry-screencasts-by-chris-lasher/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>&lt;a href="http://showmedo.com/videotutorials/?author=1364">Chris Lasher&lt;/a>, a grad student at &lt;span style="text-decoration:line-through;">the University of Virginia&lt;/span> Virginia Tech (sorry, sorry), has posted some &lt;a href="http://showmedo.com/videos/series?name=bfNi2X3Xg">screencasts about version control&lt;/a> based on the Software Carpentry notes at &lt;a href="http://www.showmedo.com">ShowMeDo.com&lt;/a>; a second series about using the shell should be up shortly. It's just plain cool to see the material picked up and carried forward in ways I wouldn't even have thought of a couple of years ago.&lt;/p></description></item><item><title>Praising the Good</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/06/praising-the-good/</link><pubDate>Mon, 11 Jun 2007 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/06/praising-the-good/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>I frequently gripe about how backward scientific software development is, so it's only fair that I give praise where praise is due. &lt;a href="http://www.cs.toronto.edu/~sme">Steve Easterbrook&lt;/a> pointed me at the UK Met Office's &lt;a href="http://www.metoffice.gov.uk/research/collaboration/fcm"> Flexible Configuration Management&lt;/a> system, which combines code management using &lt;a href="http://subversion.tigris.org">Subversion&lt;/a> and &lt;a href="http://trac.edgewall.org">Trac&lt;/a> with a &lt;a href="http://www.gnu.org/software/make/">GNU Make&lt;/a>-based build and an extraction system that pulls data out of the repository and builds it for particular platforms. This &lt;a href="http://collab.metoffice.gov.uk/twiki/pub/Support/FCM/doc/user_guide/fcm_overview.png">image&lt;/a> shows how the three parts fit together; it ain't rocket science, but it's very professional, and a good model for others to follow.&lt;/p></description></item><item><title>Reproducibility of Computational Results</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/03/reproducibility-of-computational/</link><pubDate>Sat, 10 Mar 2007 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2007/03/reproducibility-of-computational/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>Via &lt;a href="http://ivory.idyll.org/blog/">Titus Brown&lt;/a>, a link to the &lt;em>&lt;a href="http://www.insight-journal.org">Insight Journal&lt;/a>&lt;/em>, an open access online publication covering medical image processing. They have a very interesting process requirement: your source code must compile &amp;amp; be verifiable by an automatic system. I've been expecting something like this for a long time; glad to see it happening.&lt;/p>
&lt;p>Later: and, via &lt;a href="http://baderlab.org/">Gary Bader&lt;/a>, &lt;em>&lt;a href="http://www.scfbm.org/">Source Code for Biology and Medicine&lt;/a>&lt;/em>. Anyone know of a journal or journals like this for physics, chemistry, geology, and other non-life-science areas? Or (wistfully) computer science?&lt;/p></description></item><item><title>Lecture on Binary Data</title><link>https://deploy-preview-705--carpentries-website.netlify.app/blog/2006/02/lecture-on-binary-data/</link><pubDate>Tue, 14 Feb 2006 00:00:00 +0000</pubDate><guid>https://deploy-preview-705--carpentries-website.netlify.app/blog/2006/02/lecture-on-binary-data/</guid><description>&lt;p>&lt;b>This post originally appeared on the &lt;a href="https://software-carpentry.org/">Software Carpentry website.&lt;/a>&lt;/b>&lt;/p>
&lt;p>The Software Carpentry lecture on binary data is now up on the web. The content of this one has been fairly stable for a while, but that just means that all the bugs will be in the details&amp;mdash;comments and corrections are greatly appreciated.&lt;/p></description></item></channel></rss>