wheatblog

personal weblog of James "Wheatbread" Martin

PauseMeNow (AS3) widget for Adobe Captivate, Version 1

PauseMeNow is a simple static widget for Adobe Captivate developers which allows you to insert an arbitrary pause at any point in a slide. It’s coded in ActionScript 3, which means it will only work in Captivate projects which use the AS3 format. It was developed and tested in Captivate 4. I’ll be testing it in Captivate 5 as soon as I get a copy.

[Update: This post links to an outdated version of the widget. Check the software page for a link to the most recent version. (Edited 7/22/2010)]

Installation

  1. Download PauseMeNow_AS3.zip.
  2. Unzip the archive (in WinXP, right-click → Extract All…)
  3. Copy PauseMeNow_AS3.swf to Captivate’s Gallery (C:\Program Files\Adobe\Adobe Captivate 4\Gallery\Widgets)
  4. Open or create a new project in Captivate. Be sure the ActionScript version is set to AS3. In Captivate 4, you can set the ActionScript version of your project by choosing File → Preferences. Then select Project → Publish Settings in the Category pane.
  5. Select a slide in Edit View and insert an instance of the PauseMeNow_AS3.swf from the Widget window (Window → Widget).
  6. Adjust the start time via the widget’s Options → Appear After setting or by adjusting its starting position on the timeline.
  7. Publish or Preview → Project (F4) to test.

Thanks

Thanks to Michael Lund, Jim Leichliter, and Whyves for inspiration. Thanks to Infosemantics for the Widget Factory API, which I used to develop this widget.

Popularity: 25% [?]

Book Roundup, Part I

Having stalled out at about the halfway point of the last two novels I started, I’ve been on a nonfiction kick of late. I wanted to jot down some impressions of them. I’ll start with the volume that seemed to kick off the current streak and work forward from there in the next few posts:

Klosterman, Chuck. Klosterman IV: A Decade of Curious People and Dangerous Ideas.

Chuck Klosterman is (primarily) a music journalist. I recall stumbling across a few of his articles online, and I ended up adding this volume to my wish list, just to check him out. It’s one of several books I received for Christmas last year. I picked it up one evening, out of curiosity and boredom, and had a very hard time putting it back down. I’m not a fast reader, but I plowed through these essays in a few days of spare moments.

Klosterman’s forte is the “profile,” those long-form interviews that aren’t really interviews, where the journalist spends some time with an interviewee and writes a piece, generally with some sort of latent thesis, which attempts to depict the essence of the artist and/or his/her work. A good profile narrates the circumstances of the encounter with the interviewee and contains some direct quotation, but is really a lose form whereby the interviewer can go off on a variety of tangents. As such, profiles can veer toward hagiography, criticism, or arm-chair psychoanalysis. When they’re good, they’re essays in the truest sense. Going back to the French etymology of the word, they are attempts to understand.

This collection is divided into three sections. The profiles are mostly in the first section, titled “Things that are True.” Each essay has a brief introduction that contextualizes it. These sometimes connect the essay in question to other essays in the volume, explain the circumstances under which it was written or initially received, or comment on how the author’s ideas have evolved since first filing it. There are profiles here on U2, Morrissey, Val Kilmer, Radiohead, Billy Joel and a surprisingly good one on Britney Spears. What’s really compelling is that these essays are strong regardless of what you think about each of these artists. Klosterman’s reflections on them and interactions with them are the focus, and that, here, is good thing.

The second part (“Things that Might Be True”) is mostly a collection of briefer essays from Klosterman’s days at Esquire, which are often lighter fare and are more editorial in nature. I didn’t find these as substantial or memorable as those in the first section, owing in part to Klosterman’s political leanings, which are more-or-less libertarian and of a rather knee-jerk sort. There are some good things here, including  ”Bonds vs. America,” a take on Barry Bonds that I found compelling even though I don’t know or care anything about sports.

The final section, “Something that isn’t True at All,” is a fairly long short story, with some clearly autobiographical elements, that I found entertaining. Klosterman is, when he’s funny, a Woody Allen type character, if Woody Allen had grown up, as Klosterman did,  in Minnesota, listening to a lot of heavy metal. And, like Allen, he amplifies his own obsessions and neuroses for comic effect.

I think Klosterman’s a guy whose writing you either love or hate. When he’s on his game, he’s really solid. When he’s out of his depth, not so much. For me, this was an uneven but, still, solidly entertaining collection.

Popularity: 26% [?]

New year, new host

I finally got my fill of Dreamhost. I’m in the middle of moving all my sites over to A2Hosting.com. So far, I’ve migrated jamesnotjim.com, hadenthomasmartin.com, and, if you’re reading this, wheatblog.com.

There are still several more sites to go, but I haven’t had any major issues yet. Most of the remaining sites will be easy. The two exceptions will probably be bassplaying.com (since it runs on Drupal) and wheatdesign.com, since it is old, full of cruft, and mostly held together by htaccess redirects. In fact, now would be a good time for spring cleaning, but I want everything up and running on the new servers before I turn out the lights at Dreamhost.

I’ll go into the reasons behind my hosting switch in another post. I just wanted to put this one up to test thing and to alert you to any outages.

Popularity: 29% [?]

Cp2DB: Adobe Captivate Quiz Reporting with PHP/MySQL (Version 2)

A lot of people liked my initial effort at creating a PHP/MySQL reporting solution for quizzes created with Adobe Captivate 4. The holiday break gave me a little extra time to work on the project, so I’m happy to release a new version. I even created a separate page for the project, but I’m still be using the blog to keep you informed about it. (Based on very limited testing, this code seems to work for quizzes created in Captivate 3 as well.)

New Features

  1. Captures both “Core data” and “Interaction data” (explained below). Version 1 only captured “Core data.”
  2. Relational database structure. Version 1 captured everything in one table.
  3. Debug mode. Allows you to see the contents of the array pre- and post-submission.

Core data is aggregate data for the entire quiz. It includes values for the user’s overall score, along with the maximum possible score, the minimum possible score, the total time the user spent on the quiz, and whether he or she passed the quiz (based on a pass/fail percentage you define in Captivate’s quiz preferences).

Interaction data is data specific to each question/interaction in the quiz. It includes the user’s answer, the correct answer, the result (i.e. was the user’s answer correct or not), the time spent on that question, the interaction type (e.g. T/F, multiple-choice, etc.), and some other metadata specific to the question.

In order to store all of this in a useful way, I’ve expanded the database a bit. It now has three tables (one for core data, one for interaction data, and one for person data). I’ve expanded the score submission form to include an optional employee ID, but, behind the scenes, I will be using the user-submitted email to uniquely identify the user. This provides a way to connect user data to quiz data without resorting to a login/authentication scheme of some sort.

Here are the steps for setting it up:

  1. Create a quiz in Captivate 4.
    (I’ve included a sample project: cp2db_v2_rc3.cp.)
  2. Choose Quiz –> Quiz Preferences.
    Under the Reporting category:
    Select the “Enable reporting for this project” checkbox.
    Select the “E-mail” radio button and specify an email address.
    Under “Report to LMS as,” select the “Score” radio button.
    Under “Reporting Level,” select “Interactions and score.”
    Under the Pass or Fail category, set a pass/fail percentage.
    Click the OK button to confirm your preferences.
  3. Save and publish your project as a Flash (SWF).  Be sure “Export HTML” is checked in the publish options.  If you save your project as foo.cp, the HTML file will be named foo.htm.
  4. Download and unzip the Cp2DB files.
  5. Open sendmail_v2.js in your favorite text editor. Select all and copy the entire file to your clipboard.
  6. Locate and select the sendMail() function in foo.htm. It should occupy lines 27-42.
    (If you are using the sample project, the code has already been pasted into cp2db_v2_rc3.htm, so you can skip this step.)
  7. Use paste to replace the default sendMail() function with the new-and-improved one on your clipboard.
  8. Save your changes to foo.htm.
  9. Create a MySQL database called cp2db. It will contain three tables: tblcore, tblinteraction, and tblperson. You will find the SQL for creating the tables and fields in db_schemas.sql.
  10. Edit insert_v4.php. On line 20, change “localhost,” “username,” and “password” to your MySQL host, username, and password values.
  11. Edit the same values in lines 66-68 of display_v4.php.
  12. Upload your Captivate oputput files (i.e. foo.htm, foo.swf, and standard.js), insert_v4.php, and display_v4.php to your web server and test your quiz. Once you have submitted some data, you can use display_v4.php to pull it back out.
  13. Once you get it up and running, take a look at the code in insert_v4.php and the new sendMail() function. There’s a setting for turning the new debug mode on and off. (You’ll want it on for testing, of course.)
  14. Feedback is welcome. Use the comment thread of this post for your bug reports, feature requests, and other feedback.

Known Issues/Limitations

  1. For now, Cp2DB only handles the multiple-choice question type. If there’s sufficient interest, I’ll work on adding other interaction types in future releases.
  2. As far as I know, it only works with Captivate 4. I haven’t tested it with earlier versions.
  3. The script for echoing out the database data is still in its fledgeling stages. A fully-functional back-end remains to be written. I’ll work on that for the next version.

Standard Disclaimer

As before, this code is beta at best. There are no warranties expressed or implied, and you should have someone with better coding chops than me look it over before you put it into production–especially out in the wild. I hope you enjoy it, find it useful, and can leverage it to solve your own problems. But if it blows anything up, that’s on you.

Popularity: 70% [?]

Open content and the future of education

A lot of colleges and universities, big and small, are putting content online for free these days. Not long back, this meant teasers of various sorts, but, of late, more and more players–especially some of the big name institutions, are putting entire courses online. And, these day’s it’s often not just introductory courses. There’s quite a bit of higher-level stuff out there. Yale’s Open Yale Courses site is a good example. There are several full-length courses in each of a dozen or so categories. There are enough schools doing it these days that other sites, like Academic Earth, have popped up just to aggregate the free materials that are out there. If you use iTunes, Apple’s iTunes U provides a nice interface to a lot of what’s available.

If you have any autodidactic tendencies, happen to be bedridden, are a shut-in or an unapologetic misanthrope, this must be the best of all possible worlds. But even for the more-or-less well adjusted knowledge junkie, this is a real find. We live in a time of plentiful information and infotainment, but a lot of what’s out there for free isn’t really worth your time. There’s a lot of surface, but not much depth. A lot of the content on the web is like an infinite magazine rack. And, just as in the real world, the US Weekly and People-grade fluff occupies more space than the more substantive fare.

At first, you might rightly wonder “what’s their angle?” And, while there’s a try-before-you-buy marketing component, that alone wouldn’t justify the time and expense it takes to capture and render the content, much less the work that goes into organizing and maintaining in some sort of content management system and the bandwidth costs that go along with that. I think you have to chalk it up, at least in good measure, to one of those ideas that’s so old-fashioned it will almost feel corny when I type it: the public good.

The first mission of higher education, after all, is to teach people. It can be easy to lose sight of that, sometimes, with all the bureaucracy and politics that go along with it. Colleges these days are often run a lot like businesses. And, while there’s certainly common ground between the two (you gotta keep the heat on somehow), educational institutions worth their salt have higher aspirations than the bottom line. Teaching at its best aspires to make the world a better place by creating a better informed and more thoughtful public, one student at a time. Educational institutions, at their best, are simply the necessary infrastructure that enables good teaching.

I suspect a lot of institutions who are not yet in this game resist because they don’t see how they can profit from giving things away. But they have little to worry about on that score. Even if you could watch an entire degree programs’ worth of video lectures, there’d still be no transcript to point to and no degree on your wall, unless you pony up for online classes, submit work for evaluation, and pay your tuition. That’s fine, I think. If all you want is the knowledge, it’s there for the taking. If you need a credential to move down a career path, there are more options for that than every before. Either way, I welcome it.

Popularity: 23% [?]