Home > Learning, Software Carpentry > I Hope Someone Has Already Built This

I Hope Someone Has Already Built This

January 31st, 2012

Over the next few months, I want to experiment with at least four new learning formats for Software Carpentry. The baseline is what we have now: each topic is covered in 6-10 lessons, each of which has its own page. Most of those pages have a voice-over-slideshow video lasting 5 to 10 minutes and the slides themselves as PNG images in parallel with a transcript of the voiceover; the exceptions are the lessons on spreadsheets, databases, and debugging, which are actual screencasts of the appropriate tools in action. Only a handful of topics have exercises, and the only way to give feedback is to comment on the page.

Here’s what I want instead:

Superficially, it isn’t much different from what we have The “Slideshow” area shows the current diagram, code snippet, or whatever. The “Continuous Controls” (the usual forward, pause, and rewind) control the synchronized slideshow and audio track, while the “Stepping Controls” allow users to move forward and back a slide at a time, and the “Pointmarks” show where slide transitions take place. Finally, the “Transcript” is, as its name suggests, a transcript of the audio that accompanies the current slide.

The big difference doesn’t show up in this diagram. In this version, the slides are not PNG images, an MP4 video, or any other paint-by-pixel format. Instead, they are SVGs stored right in the body of the web page, so that their content is visible to search engines, and can be copied and pasted in sensible ways. This means that if the current “slide” is showing some code, the user can pause the show, select that text, and paste it into her own editor. She can do similar things with the diagrams, i.e., select a cloud, shift-select the caption, and paste them both into her favorite image tool, rather than having to select a rectangular block of anti-aliased pixels that happen to look like lines and letters to a human eye.

I haven’t built this yet, but I think it should be fairly straightforward: each “slide” is a div with a unique ID containing an image and a block of text. The audio is linked from the page; a data-* attribute in each slide div has its start time, and a bit of Javascript shows the right slide at the right time. Marking start times will be a bit tedious—I think it’ll have to be done by hand, at least for now—but it should be easy to allow people to add and view comments and questions in place, instead of tacking them all onto the bottom of the page. And displaying an all-in-one view of the slides with appropriate bits of transcript for printing (or for people who just want to browse) will be easy.

This is just a start, of course. I haven’t said anything about (self-)assessment, which is crucial to real learning, or about accessibility (although I think that having all the code and captions in the page as first-class text will help a lot). I also haven’t thought yet about whether I can build this in just one week, which is about as much time as I have, because there’s one question I should ask first:

Has someone built this already?

If so, I’d be very grateful for a pointer.

Learning, Software Carpentry

  1. January 31st, 2012 at 06:02 | #1

    Here is a pointer (to timesheets.js): http://wam.inrialpes.fr/timesheets/

  2. glob
    January 31st, 2012 at 06:48 | #2
  3. January 31st, 2012 at 06:48 | #3

    The answer is likely to be yes http://wam.inrialpes.fr/timesheets/

  4. January 31st, 2012 at 09:45 | #4

    There are lots of slide decks that use DIVs, the most famous being “S5″ which is based on HTML4 and DIVs. For my purposes I needed to extend this and build slides that would also include speakers notes (i.e a transcript), and I needed to use HTML5. What I’ve needed to build is something that allows me to have slides and a transcript. SVG content works fine. My main aim was to make the slide deck ‘unobtrusive’ so you write an HTML document, add one script and it just works.

    Going forward I’m interested to add timing and interaction capabilities like those in SMIL [ http://www.w3.org/AudioVideo/ ], and build on the basic slide deck so that it has a spacial element (discussion here [ https://github.com/bartaz/impress.js/issues/7 ]and example here [http://dl.dropbox.com/u/16667824/js/impress.js/test.html ]). If that’s useful RSVP.

  5. Colin Marquardt
    January 31st, 2012 at 10:16 | #5

    http://www.andrejkoelewijn.com/wp/2012/01/03/create-presentations-using-inkscape/ might be a start (the demo is down right now). Maybe also this: http://bartaz.github.com/impress.js/ (my browser here is too old to check whether it matches some of your requirements).

  6. Colin Marquardt
    January 31st, 2012 at 10:19 | #6
  7. January 31st, 2012 at 11:30 | #7

    This is not what you want, but it does use the idea of using SVG for slides. In fact, the whole presentation is one big SVG poster you zoom around. It’s called Sozi:

    http://sozi.baierouge.fr/wiki/en:welcome

    There’s a neat example linked from bug 722090.

    A lot of the things you described sound like the sort of features that exist in SMIL. As you know, SVG has some animation features borrowed from SMIL but it can’t yet trigger audio and I think you probably want state machine behaviour too. (But it can do some things like seeking, synchronising animations between independent SVG fragments in your HTML document etc.) There is a proposal in the works to align SVG and CSS animations and bring in some more powerful features including state machines but it’s still a while away.

  8. Mardeg
  9. January 31st, 2012 at 14:16 | #9

    Greg:

    I built something similar when I worked at the District School Board of Niagara – except that I used Flash. Web audio / video weren’t really evolved at the time, so I didn’t have much choice.

    deck.js gets you part of the way… http://imakewebthings.github.com/deck.js/

    If what you’re asking for *doesn’t* exist, and you end up building it yourself, Popcorn.js might end up being useful, as a way of syncing up slide-events to an audio clip.

    http://popcornjs.org/

    Just a few ideas,

    -Mike

  10. Greg Wilson
    January 31st, 2012 at 16:10 | #10

    @Pandark @Goofy @Mardeg Thanks for the pointer to timesheets.js — it’s very close to what I’m after, and I’ll contact the creators.

  11. Greg Wilson
    January 31st, 2012 at 16:12 | #11

    Thanks to everyone who pointed at various S5-like HTML slideshow tools and/or SVG drawing-based tools. I’ve played with several, but the synchronization between audio and several displays (slides and transcript) is what I’m mostly looking for right now.

    And on that, it seems that most tools are either drawing-oriented or text-oriented; one of the reasons I still use PowerPoint is that it seems to strike a good balance between the two (although that could just be familiarity).

  12. February 1st, 2012 at 13:54 | #12

    Another piece of the puzzle is Popcorn.js (http://popcornjs.org), for integrating HTML5 media with other content. This is used by the BigBlueButton (http://www.bigbluebutton.org/overview/) online classroom software for playback of recorded classes. It synchronizes display of (PDF) slides with the recorded audio, advancing the slides at the same time as the instructor did during the original session.

Comments are closed.