What Would You Do For Five Dollars?

2010-03-11 – 10:33

From fiverr.com’s front page:

screen-shot-2010-03-11-at-102721-am

Looking at the “Programming” section:

screen-shot-2010-03-11-at-102938-am

This is actually really useful career advice. If people are willing to do something for $5, it has been so thoroughly commoditized that there’s only marginal value left. Putting it another way, if you’re looking to earn a decent living, you’d better be doing something else…

Don’t Ask, Don’t Tell — Really

2010-03-11 – 10:26

Good post from Stuart Shieber from last summer:

A strange social contract has arisen in the scholarly publishing field, a kind of “don’t ask, don’t tell” approach to online distribution of articles by authors.  Publishers officially forbid online distribution, authors do it anyway without telling the publishers, and publishers don’t ask them to stop even though it violates contractual obligations. What happens when you refuse to play that game?

March 24 is Ada Lovelace Day

2010-03-11 – 10:23

March 24 is Ada Lovelace Day—please take a moment to blog or tweet about women in technology or science whom you admire.

Code Review Walkthrough

2010-03-11 – 07:53

Mike Conley and I had lunch yesterday with SmartBear’s Gregg Sporar to talk about code review. (We ate at E Pan on Spadina Avenue, which isn’t particularly relevant, but the crispy chicken with orange peel and the baby bok choi in garlic sauce were both delicious.) One of the things that came up was the dearth of accessible examples of code review that instructors (like me) can put in front of undergrad students. The key word here is “accessible”: hundreds of thousands of reviews of patches to various open source projects are freely available on the web, but most require too much background knowledge to be usable in a classroom setting.

A couple of years ago, I posted a transcript of my review of a Markdown wiki text processor written in Python. Mike has just pointed me at Brandon Savage’s multi-part review of some Twitter processing code in PHP. If you know of other examples like this, we’d welcome pointers. If you don’t, but would be willing to create some, please let me know.

Thacker FTW!

2010-03-09 – 11:25

Charles Thacker has won the 2009 Turing Award for his work on the Alto, the first modern personal computer. Congratulations!

Offer, Then Ask

2010-03-08 – 22:03

Ever since I started teaching at U of T, I’ve tried to help students I know find interesting jobs with local companies. I enjoy doing it, but there’s a downside: several times each term, I get mail out of the blue from someone I’ve never heard of saying something like, “Hi, I hear you have really good contacts in industry, here’s my resume, can you find me something too?” If they’re still young, I send something like this back:

Hi, and thanks for your mail. I’m glad you are keen to get some real-world experience, but I can’t recommend you to a company in good faith until I actually know something about the quality of your work. One way to show me what you’re capable of is to do well in one of my courses, but a better way is to join to one of the open source projects I’m involved in. You might not feel you know enough right now to do that, but there are always lots of entry-level tasks that newcomers can tackle, and lots of more experienced developers to help you learn the ropes. If you’d like to give it a try, please let me know.

If they’re older, though, I just point them at the Career Centre and wish them luck. I think that by the time someone is in grad school, it’s fair to expect them to understand that a personal recommendation is supposed to be exactly that—personal—and that asking me to provide one that isn’t is unfair.

Just wanted to get that off my chest…

Later: in response to an emailed question, yes, I treat companies differently too. The first time a young/small company contacts me looking for students to hire, I’m usually happy to hook ‘em up. If a larger or more established company contacts me, I’ll hook them up, but will also mention that we’re always looking for support for undergrad projects. If they’re willing to step up, great; if all they want is a recruiting channel where they don’t have to pay headhunter fees, sorry, that’s not my job. And if the company that contacts me actually is a headhunter, the answer is always, “I’d be happy to help your client: please have them contact me directly.”

This Is How I Want My Daughter To Think

2010-03-04 – 08:53

Ned Gulley’s latest post, “What We Mean When We Say Magic“, starts with this quote:

“The larger the island of knowledge, the longer of the shoreline of the wonder.” -Ralph W. Sockman.

and says some wonderful things about magic, surprise, and the joy of knowing.

The Tool I Want

2010-03-04 – 07:05

I want to make the next version of the Software Carpentry material more dynamic. I’m planning to use screencasts to show people how to use a debugger and other power tools, but I don’t like screencasts for showing programming examples: the text is often hard to read (even when anti-aliased), and they’re almost never accessible to the visually impaired.

What I’d like instead is a Javascript widget I can embed in a web page that will step forward and backward through a fixed piece of code and its output. This isn’t the same thing as Try Haskell and other “sandbox in a browser” tools that let people write and run arbitrary snippets of program. Instead, I want to say, “Here’s a piece of Python (or whatever), here are the pop-up comments I want to appear at various points in its execution, and here’s the output I want displayed at other points.” In the browser, it would look like this:

browser-ide

(You can see why I’m not allowed to design user interfaces…) “Step Forward” and “Step Backward” don’t actually execute code; instead, they replay a previously-recorded execution sequence and its textual output. Whoever created that sequence can add explanatory notes (like the bubble shown) that appear and disappear as execution proceeds.

Three things are needed to make this happen:

  1. A desktop tool for recording and annotating the execution of small programs.
  2. A data format for storing those recordings and annotation.
  3. A Javascript widget for playing them back in the browser.

Ideally, this combination would also handle interactive interpreter sessions, in which the program appears as you go along, and output is interleaved with input. If you know of something that already does this, I’d welcome a pointer; if you don’t, and are looking for a really cool course project, please give me a shout.

More on Computational Thinking

2010-03-03 – 13:18

Over at the ACM blogs, Judy Robertson just asked, “How do you assess computational thinking?” She’s more polite than I have been: she says, “It seems we’re still discussing what the concept of computational thinking might include in detail, and therefore haven’t got as far as defining an assessment.” If (as looks increasingly likely) I’m going to spend a year updating the Software Carpentry course, I’m going to need to come up with an answer: without some way to assess the impact of the training I’m providing, I won’t know if I’m solving anything more than students’ immediate problems.

Canpages Contest

2010-03-03 – 08:48

Canpages has launched an API contest today that gives students a chance to show what they can do with 1.3 million Canadian business listings, photos, videos, recommendations, and lat/longs. This video and this press release explain what it’s all about, and you can check out the API itself at their developer portal.