My contribution to the #OpenInbox meme summarizing one day’s worth of email—in my case, February 28, 2012. There were 103 inbound (⇒), and 80 outbound (⇐).
|⇒||00:17||Follow-up to meeting about data-mining Bugzilla.|
|⇒||03:26||Grad student sending me her schedule.|
|⇒||03:28||Request for sample PowerPoint files from someone with software to concatenate them.|
|⇒||03:52||Note from the Toronto Public Library about a book ready for pickup.|
|⇒||03:59||University of Chicago boot camp planning.|
|⇒||04:06||Reassurance from a friend in the UK that she hasn’t disappeared .|
|⇒||04:35||Group registration for the Newcastle University boot camp.|
|⇒||04:54||WordPress wants a comment moderated.|
|⇒||05:23||Registration for the London boot camp.|
|⇒||05:45||Inquiry about ditto.|
|⇐||06:12||Invitation to join the weekly Mozilla learning call.|
|⇐||06:12||Reply to grad student about her schedule.|
|⇒||06:18||Confirm signup for Udacity mailing list.|
|⇐||06:25||Note about last week’s Toronto boot camp.|
|⇒||06:26||High school student following up on Mozilla Hack Jam.|
|⇐||06:27||Telling a parent that my daughter can’t attend a birthday party.|
|⇐||06:28||Inquiry about accommodation in California for MBARI boot camp.|
|⇐||06:29||Inquiry about Ruffus (Python dataflow software).|
|⇐||06:32||Hacking for journalists.|
|⇐||06:36||Answering question about ImageChops from STScI boot camp participant.|
|⇐||06:36||Reply to feedback about Toronto boot camp.|
|⇐||06:37||Note to high school students about their progress.|
|⇐||06:37||Thanks to boot camp organizer for forwarding feedback.|
|⇐||06:40||Continuing conversation with potential boot camp instructor.|
|⇐||06:42||Invitation to join the weekly Mozilla learning call.|
|⇐||06:43||Household chore reminder.|
|⇐||06:44||Newcastle boot camp registration.|
|⇐||06:49||Following up intro to Toronto scientist about boot camps.|
|⇒||06:58||Newcastle boot camp registration.|
|⇒||06:58||Newcastle boot camp registration.|
|⇒||07:00||Follow-up to discussion about collaboration on Software Carpentry.|
|⇒||07:02||MOOC daily newsletter.|
|⇒||07:03||More discussion with high school students (and their teacher).|
|⇒||07:12||Newcastle boot camp registration.|
|⇒||07:27||Newcastle boot camp.|
|⇒||07:30||Newcastle boot camp.|
|⇐||08:13||Mozilla weekly webmaker call.|
|⇐||08:26||Redheads are less susceptible to anaesthetic than normal people|
|⇐||08:46||More discussion with high school students (and their teacher).|
|⇐||08:47||More about redheads.|
|⇐||08:52||Note about Software Carpentry screencasts.|
|⇒||09:00||Green Party rally.|
|⇐||09:01||Submitting travel expenses.|
|⇐||09:04||Note to potential boot camp instructors.|
|⇐||09:05||Flyer for Chicago boot camp.|
|⇐||09:06||Bugzilla data-mining follow-up.|
|⇒||09:07||Inquiry about sales figures for “Making Software”.|
|⇐||09:12||PowerPoint files for concatenating.|
|⇐||09:12||Chicago boot camp.|
|⇐||09:15||Reply to reassurance from UK friend.|
|⇐||09:15||Forwarded inquiry about “Making Software” sales.|
|⇐||09:17||Reply to student following up on Hack Jam.|
|⇐||09:19||London/Newcastle boot camp registration.|
|⇐||09:20||Follow-up to inquiry about London boot camp.|
|⇐||09:22||Follow-up to babysitting offer.|
|⇒||09:32||Sales figures for “Making Software”.|
|⇒||09:39||Discussing medical school with former student.|
|⇒||09:44||CS department business.|
|⇒||09:48||“Making Software” sales figures discussion.|
|⇒||09:49||Arranging coffee with former student.|
|⇐||09:52||Discussing music with brother.|
|⇐||09:52||“Making Software” sales figures discussion.|
|⇐||09:52||Discussing medical school with former student.|
|⇒||10:24||CS department business.|
|⇐||10:29||Follow-up to errors in Mozilla open badging infrastructure.|
|⇒||10:36||Discussion of boot camp in Mississippi.|
|⇒||10:44||Follow-up to babysitting offer.|
|⇒||10:45||Discussion with potential boot camp instructors.|
|⇒||10:49||Follow-up to errors in Mozilla open badging infrastructure.|
|⇒||10:54||Discussion of Trieste boot camp.|
|⇒||10:55||Family travel plans.|
|⇐||10:56||Family travel plans.|
|⇐||11:00||Follow-up to errors in Mozilla open badging infrastructure (long).|
|⇒||11:06||Discussion of Utah State boot camp.|
|⇒||11:23||Discussion of chapter for Vol 2 of “The Architecture of Open Source Applications”|
|⇐||11:31||Discussion of chapter for Vol 2 of “AOSA”|
|⇐||11:32||Open data discussion.|
|⇒||11:37||Chicago boot camp.|
|⇒||11:46||Discussion of chapter for Vol 2 of “AOSA”|
|⇒||11:50||Open badging mailing list.|
|⇒||11:54||Discussion of formatting for Vol 2 of “AOSA”|
|⇒||11:59||Discussion with potential boot camp instructors.|
|⇒||12:03||Discussion of chapter for Vol 2 of “AOSA”|
|⇒||12:10||Discussion of chapter for Vol 2 of “AOSA”|
|⇒||12:12||Discussion of chapter for Vol 2 of “AOSA”|
|⇐||12:14||Open data discussion.|
|⇒||12:15||Follow-up to errors in Mozilla open badging infrastructure.|
|⇒||12:16||Follow-up to errors in Mozilla open badging infrastructure.|
|⇒||12:18||WordPress user registration.|
|⇒||12:18||Chicago boot camp.|
|⇐||12:19||Chicago boot camp.|
|⇐||12:19||Discussion of chapter for Vol 2 of “AOSA”|
|⇐||12:20||Follow-up to errors in Mozilla open badging infrastructure.|
|⇐||12:20||Chicago boot camp.|
|⇒||12:21||Following up intro to Toronto scientist about boot camps.|
|⇒||12:22||Discussing medical school with former student.|
|⇒||12:22||Discussion of chapter for Vol 2 of “AOSA”|
|⇒||12:27||Discussion of chapter for Vol 2 of “AOSA”|
|⇐||12:28||Discussing medical school with former student.|
|⇒||12:31||Registration for Indiana boot camp.|
|⇒||12:34||Open data discussion.|
|⇒||12:40||Follow-up to errors in Mozilla open badging infrastructure.|
|⇐||12:41||Open data discussion.|
|⇒||12:47||Chicago boot camp.|
|⇒||12:59||Follow-up to errors in Mozilla open badging infrastructure.|
|⇐||13:09||Follow-up to errors in Mozilla open badging infrastructure.|
|⇒||13:27||Follow-up to errors in Mozilla open badging infrastructure.|
|⇒||13:37||Wedding planning. (Not mine.)|
|⇐||13:39||Follow-up to errors in Mozilla open badging infrastructure.|
|⇐||13:39||Wedding planning. (Still not mine.)|
|⇐||13:44||Registration for Indiana boot camp.|
|⇒||14:05||Arranging Skype call about MBARI boot camp.|
|⇐||14:11||Arranging Skype call about MBARI boot camp.|
|⇒||14:13||CS department business.|
|⇒||14:21||Recording Indiana boot camp.|
|⇒||14:24||CS department business.|
|⇐||14:30||Discussion of chapter for Vol 2 of “AOSA”|
|⇒||14:39||CS department business.|
|⇒||14:41||Registration for Indiana boot camp.|
|⇐||14:42||Trieste boot camp.|
|⇐||14:43||Arranging Skype call about MBARI boot camp.|
|⇒||14:45||Follow-up to errors in Mozilla open badging infrastructure.|
|⇒||14:50||Discussion of chapter for Vol 2 of “AOSA”|
|⇐||14:56||Dreamhost support query.|
|⇒||14:57||Dreamhost query bounce.|
|⇒||14:58||Arranging Skype call about MBARI boot camp.|
|⇒||15:11||Registration for Michigan State boot camp.|
|⇐||15:14||Registration for MBARI boot camp.|
|⇐||15:19||MBARI boot camp schedule.|
|⇐||15:20||To-do note to self.|
|⇒||15:21||Continuing conversation with potential boot camp instructor.|
|⇒||15:22||Wedding planning. (Nope, still not mine.)|
|⇒||15:23||To-do note to self.|
|⇒||15:25||To-do note to self.|
|⇐||15:38||Follow-up to errors in Mozilla open badging infrastructure.|
|⇒||16:01||Daughter’s dance class schedule.|
|⇒||16:19||Follow-up to errors in Mozilla open badging infrastructure.|
|⇒||16:29||MBARI boot camp.|
|⇒||17:06||Discussion with potential high school instructor.|
|⇒||17:09||Feedback on Toronto boot camp.|
|⇒||17:10||Open data discussion.|
|⇒||17:46||Feedback on Toronto boot camp.|
|⇒||17:56||Registration for Indiana boot camp.|
|⇒||18:27||Open badging discussion.|
|⇒||18:35||Discussion with high school student.|
|⇐||19:09||Discussion with potential high school instructor.|
|⇐||19:10||Open data discussion.|
|⇐||19:11||Follow-up to errors in Mozilla open badging infrastructure.|
|⇐||21:13||Discussion of boot camp in Mississippi.|
|⇐||21:14||Following up intro to Toronto scientist about boot camps.|
|⇒||21:17||Ladies Learning Code notice.|
|⇐||21:42||Discussion with high school student.|
|⇒||20:04||Sloan Foundation discussion.|
|⇒||22:40||Chicago boot camp.|
|⇒||23:19||Following up intro to Toronto scientist about boot camps.|
|⇒||23:33||Invitation to weekly drinking session.|
|⇒||23:36||Chicago boot camp.|
Software Carpentry has 110 PowerPoint files, each containing between 20 and 120 slides—call it 5000 slides in total. I’d like to convert them to HTML5 for use with Slide Drive, the deck.js+audio slideshow tool that David Seifried is building. Here’s the breakdown:
- A few bugs in the slide decks need to be fixed—it’s a fairly small job.
- I already have audio recordings narrating the slides. A few will need to be redone to sync with bug fixes in the slides, but that’s a fairly small job.
- I also have transcripts of those recordings. They’ll need corresponding edits, and reformatting, but again, that’s fairly small.
- I don’t have time-marks synchronizing the audio with the slides. I’m sure that information is embedded in the Camtasia project files I created when making the current videos, but I don’t know how to get it out (yet).
- Exporting the main text in the slides (the bullet points) is straightforward, though a fair bit of manual touch-up will be needed to reformat it.
- Ditto for the code samples (which don’t show up with the main text, since they’re in separate text objects).
And then there are the diagrams… Roughly a third of the slides have diagrams of some kind, which makes about 1500 in all. That’s too many to redraw, and anyway, I shouldn’t have to: they’re stored in PowerPoint in some kind of vector format, so I should be able to “export as SVG” or the moral equivalent thereof.
But “should” and “can” aren’t the same thing. I can save my PowerPoint in a lot of different raster image formats, but not in a vector format like SVG. However, I can select elements of a diagram, copy them, and then paste them into a vector drawing tool like Inkscape, which indicates that something in Windows understands how to do the required format conversion.
Doing that 1500 times would be very tedious, though. What I really want is a way to automate that process, i.e., save each slide in a deck as a separate SVG that I can later open and edit. Googling turns up a couple of possibilities, but:
- The VeryDOC Powerpoint-to-SVG convert completely drops the embedded text (i.e., the captions).
- Ditto OpenOffice.org Impress—slides must be saved one at a time, and only the graphical elements come out (not the captions).
- Davisor Publishor doesn’t even export all the graphics.
- docx4j‘s pptx4j sounds like it ought to do the job, but (a) it’s a library, not a tool, so some Java would have to be written to create an actual converter, and (b) it’s not clear that it does actually do the job.
Please tell me I missed something…
Later: in response to a suggestion, I downloaded a Windows clipboard viewer and copied a diagram out of PowerPoint. The display looked like this (click the image for full-sized):
It appears to be a reference into the source file, rather than an actual representation of my boxes, arrows, and text.
[reposted from the Software Carpentry blog]
Back in 2007, Jon Udell observed that screencasts facilitate accidental knowledge transfer in a way that more traditional media don’t. As I said yesterday, 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 how to program—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.
If you’d like to help, please:
- Volunteer to be recorded by mailing us. We’ll help you install a screen recorder (if you don’t have one already—you might be surprised to find that you do), give you a small problem, and edit the video you produce so that you don’t have to.
- Volunteer to edit video for us, so that we can put our energy into organizing people .
- Volunteer to work the floor at PyCon in March. We can’t attend (workshops to run, etc.), but it would be great if we could get a dozen or more “here’s how I do it” recordings done during the conference.
Remember, as an open source project, Software Carpentry depends on your help to survive and thrive. If you have wanted to help, but have worried that creating and recording lectures would be too much work, this is a way for you to help that will take half an hour or less. We look forward to hearing from you.
I posted a ninety-five second explanation of Software Carpentry on YouTube today. Feedback would be very welcome.
A few weeks ago, a former student who’s now a friend asked me to teach him how to bullshit. At first I couldn’t decide whether I was flattered or offended, but then I decided I was more curious than anything. What did he mean by that? And why did he think I’d be a good teacher?
After a bit of back and forth, we agreed that he didn’t mean outright lying, or the indifference to truth that Frankfurter talks about in his book on the subject. What he wanted to learn was how to present things in a way that made the speaker’s preferred outcome seem like the only sensible or desirable choice—how to (in the words of one of my teachers) sacrifice truth for clarity, or (in the words of an ex-girlfriend) how to clarify things for people.
I’m still not sure why he thought I’d be able to teach this, but his request sent me wandering down memory lane. Back in 1989, when I was doing some work for a sociologist in Edinburgh, I occasionally sat in on his group’s seminars. At one, an American researcher talked about her studies of the impact of networked computers on workplace dynamics. (Remember, this was before the Internet: most PCs were still only connected to a printer, not to each other, and even on Unix systems, NFS needed a lot of love and care.) She claimed that networking was democratizing the workplace by allowing people to share information more freely.
She made a plausible case, but then one of the grad students challenged her with a thought experiment. Suppose we’d invented networked computers first, and that mainframes had only come later. Wouldn’t she be arguing that they were a democratizing force—that giving everyone access to the totality of the group’s computing resources was more empowering than allowing everyone a small, fixed fraction of those resources? In fact (he went on, warming to his theme), wouldn’t she be reading meaning into the term “time sharing” in the same way that she had actually emphasized “networking”?
This was where I first heard the term “appropriation” applied to explanations. Today, I see it happening a lot in and around education. Almost everyone claims that new technology will fundamentally disrupt the way we teach. As Audrey Watters pointed out in a recent podcast, though, the big education companies have an incentive to make sure that “disruption” isn’t, and the budgets and connections to neuter any change that might threaten their business models. Simlarly, as much as we might want kids to grow up to be better citizens, teaching them to program won’t automatically make this happen, any more than teaching them addition will automatically make them better at balancing budgets.
In his 2008 essay, “The Winning Ways of a Losing Strategy: Educationalizing Social Problems in the United States“, David Labaree showed how people have increasingly turned to schools to solve social problems, even though schools have repeatedly proven that they are ineffective at doing so. I think it’s equally true that reformers all too often ask technology to solve educational problems, even though it has shown time and time again that it can’t. (I speak as someone who lived through the VCR-in-the-classroom revolution, the PC-in-the-classroom revolution, and the first-generation-Internet revolution. Meet the new class, same as the old class…) Yes, new technologies might enable change, but they will not make that change happen. Only we can do that.
“You keep using that word. I do not think it means what you think it means.”
– Inigo Montoya
I recently sat in on an online discussion with Cathy Davidson, whose work focuses on technology, collaboration, cognition, and learning. She recently wrote a blog post titled “Why We Need a 4th R: Reading, wRiting, aRithmetic, algoRithms“, in which she says:
…our world changed in April 1993 when the Mosaic 1.0 browser was released to the general public. We need new forms of education. We need to reform our learning institutions, concepts, and modes of assessment for our age… I have a basic literacy to add to the last century’s 3 R’s of “reading, ‘riting, ‘rithmetic.” Let’s add a 4th R: “algoRithm.”
I’m all in favor of that. But I’m not sure that Davidson and I mean the same thing when we say “algorithm”—in fact, I’m pretty sure we don’t. Based on the slide that appears on this page, and on comments she made in that online discussion, her definition includes:
I’d definitely include the first; I’d say it was a prerequisite for the second, and plays into the third, but the rest feel like aspirational goals for society rather than anything algorithmic. Yes, the interweb is a powerful tool for implementing those goals (or their opposites), but “diversity” and “algorithm” have no more to do with each other than “justice” and “double-entry bookkeeping”.
What I mean by “algorithmic thinking” is, I think, closer to what Michelle Levesque is describing in this blog post (available here as a handy visual aid, complete with drop shadows). It’s what Jeannette Wing meant in her 2006 article that introduced the term “computational thinking”. Everyone immediately started using it to mean whatever they already wanted to push—office suite skills, parallel computing, how to search and filter—but Wing herself later defined it as:
Computational thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can effectively be carried out by an information-processing agent.
She went on to say:
Computational thinking enables you to bend computation to your needs…to:
- understand which aspects of a problem are amenable to computation,
- evaluate the match between computational tools and techniques and a problem,
- understand the limitations and power of computational tools and techniques,
- apply or adapt a computational tool or technique to a new use,
- recognize an opportunity to use computation in a new way, and
- apply computational strategies such divide and conquer in any domain.
That’s a much narrower definition, but I think it’s also more useful. CollaboRation or paRticipation would make a great “zero’th R”, but they’re very opposite of “algorithmic”. They are, fundamentally, about the exercise of judgment in situations where right answers can’t be calculated by following a formula—in short, about the things that still distinguish us from machines.