Greg Wilson

Greg Wilson

Years ago, I lost my temper while arguing with my brother, and said, "Jeff, I could teach you everything I know and you'd still be an idiot." Please keep that in mind as you read this site.


Co-founder of Software Carpentry
Editor and author of books on computing and teaching
(and for children)
Ph.D. in Computer Science
Parent, spouse, and proud Canadian


Non-Standard Evaluation in R

Nov 16, 2018

This post is my attempt to explain how non-standard evaluation works in R. I'm writing from the standpoint of a C and Python programmer who was once conversant in Scheme, and who has spent a lot of the last fifteen years teaching people how to program. I'm going to cut a few corners, but if you want a reliable mental model that explains how to write functions that play nicely with the tidyverse, I don't think any of what's included below can be skipped.


The Real Open Challenges

Nov 15, 2018

Two days, two articles I can’t access (and gosh, isn’t the use of “open” in the title of the first one ironic). And please don’t tell me that I can probably find a copy if I google hard enough: that’s like saying I’m invited to the party, but only if I come in through the side door.


Building Powerful Community Organizations

Nov 9, 2018

I’ve written about the book Building Powerful Community Organizations before, but I’m very happy to have a reason to do so again: I finally got to meet its author in person. Michael Jacoby Brown has been a community organizer for decades; he has recruited and trained hundreds of volunteers that have fought for fire fighters, school teachers, and people who just want a fair deal. Now in his seventies, he’s still going strong, and still full of practical, actionable advice on how to make change happen. If you haven’t already read BPCO, you should; if you have, and you found it useful, please share it with anyone you know who wants a better world but isn’t sure where to start.


Abstraction and Comprehension Continued

Nov 3, 2018


Abstraction and Comprehension

Nov 3, 2018

I’ve been thinking a lot about the notations we use for programming as I’ve been teaching myself R, and I have a theory. When we use a low-level language, we incur the cognitive load of assembling micro-steps into something more meaningful; when we use a high-level language, we incur a similar load translating functions of functions of functions (or meta-classes templated on object factories) into actual operations on actual data.


Twelve Questions

Nov 1, 2018

Way back in the year 2000, Joel Spolsky wrote down twelve questions for assessing the quality of a software team. This became known as the Joel test, and it has been quoted, used, and abused more widely than any formal maturity assessment model I know of.


Credit and Respect

Oct 31, 2018

You can tell what people respect by what they’re willing to give others credit for doing. Which brings me to the most recent version of the ACM’s criteria for authorship:


Ten Rules

Oct 31, 2018

I’ve added a new page summing up everything I know in bite-sized chunks. I hope it’s useful.


Formatting Functions

Oct 26, 2018

I’ve written and edited a little over two million words of computer-related material in the last 35 years. For much of that time I wrote time() to mean “the function whose name is time”. The empty parentheses aren’t part of the name: they’re there to remind readers that this is a function.


Amazon Makes Me Sad

Oct 25, 2018

I have bought hundreds of books from Amazon in the past eighteen years, and while its recommendations were sometimes bizarre, I often enjoyed logging in and browsing through what they thought I might like to read next. For the last three weeks, though, I’ve been unable to do that. Suddenly, without warning or explanation, they started recommending electronics, board games, Hallowe’en costumes: everything but books. And after two long, intensely frustrating online chats with their tech support team, I still have no idea why those recommendations have disappeared or how to get them back.