Pages

Showing posts with label Javascript. Show all posts
Showing posts with label Javascript. Show all posts

December 24, 2014

More on the Power of Random: Random Storybooks

Because of the crazy school calendar (spring semesters starts sooooo early: too early!), I am actually doing a little schoolwork this morning to get ready for the new semester... but I saved my favorite of all new-semester tasks for today: updating the random Storybook widgets that automatically display Storybooks at random in my different class blogs and websites. You can see the updated widgets in action all over the place:
There might even be some other places where the widgets are on display, places I don't even remember... and that is the power of distributed widgets: I don't have to go update the individual places where the widget is embedded. I just update the widget script in one place, and it is automatically updated everywhere.

So, for example, here's the 400-pixel version of the script that features Storybooks from both classes:


I create these scripts using an amazing tool built years ago by Randy Hoyt, a former student: RotateContent.com. This free tool takes any HTML table and converts it to a javascript that either displays the table cells at random (as I've done with these scripts) or based on a calendar (either a perpetual calendar or a fixed-year calendar, as you prefer). When Randy created this tool years ago, I never suspected I would still be using it eight years later: javascript was definitely a good choice because it is still going strong! You can also choose to create PHP versions of the scripts if you want instead.

In terms of the nitty-gritty, I have one giant HTML table that lists the Storybooks for both classes, Myth-Folklore on top and Indian Epics down below. There is a title linked to the Storybook online, plus a quick little blurb written by me, along with a screenshot of the coverpage, 400 pixels wide. I then cut that table in two, creating a separate script for each class. Then I copy those scripts and manually replace the 400 pixel widths for the 200-pixel version I use in the blog sidebars, giving me two different versions of each script. I publish those new javascripts, and then everything runs automatically, with class-specific widgets or with the meta-widgets that randomizes the already randomized widgets as above. The actual creation of the scripts takes just a few minutes; the part of the task that takes some time is making the screenshots and writing the blurbs for each semester's Storybooks as I add them to the HTML table. But it's fun, as I said: I'm always so proud of the new Storybooks that go into the script every semester!

As I've mentioned in previous posts, I think randomization is the most powerful tool we have for scaling in online classes, whether small or medium or massive. So, for example, I use random blog groups and random project groups to make sure that there is good student-to-student interaction in class every week, and I built some magic crystal balls to help students as they choose items each week from the Myth-Folklore UnTextbook. Random also works for the archive of student Storybooks. I really want each semester's new students to be aware of past student projects, but just showing them long lists of projects is not effective. So, instead of expecting the students to come to the Storybooks, I bring the Storybooks to the students: the random widgets display a new Storybook each time they visit the class homepage or look at the class announcements, along with each time they visit the class support sites, etc. It's non-stop Storybooks ... one at a time, randomly.

Of course, I never know just what Storybooks will capture their attention, and that's fine: the power of random means they see all kinds of Storybooks and, sooner or later, they are bound to be intrigued enough to click on a link and learn more. That's my hope anyway... and the power of random means that 24 hours a day on all those webpages and all those blog posts, there are wonderful Storybooks waiting to appear by magic, bringing their stories with them.

Random: it really is a superpower! I continue to be baffled that MOOC platforms and LMS software (like the D2L BS used at my school, or our MOOC wannabe platform, Janux) do not make good use of the power of random in order to scale course content and interactions. Random is great: it means we can all get to know each other and we can see all kinds of content all the time ... but just one person or thing at a time, not all at once! Massive stuff, but on a human scale. It works! :-)



(Cartoon by Sumanta Baruah)

December 16, 2013

Google Sites, Diigo, and the Storybook Archive

I just finished one of my very favorite tasks that happens at the end of each semester: I added the links of the Storybooks from this semester to the LONG lists of links for my Myth-Folklore Storybook archive and my Indian Epics archive. Then, I also updated the randomizing widget which shows some great Storybooks at random for each class separately (you see that widget at the top of each list) and which can also show Storybooks at random which you can see from both classes, as on the homepage of my wiki. All told, the process takes several hours, but it is a pure pleasure from start to finish.

This screenshot below shows a Storybook newly added from the Fall semester of Myth-Folklore:


And this screenshot happens to show a Storybook from Indian Epics year before last:


Given that I have now made Diigo a regular part of my content management process, I have also bookmarked all the Storybooks in Diigo and plan to start using tags there to sort and label them by both content and style. That is my next big project in fact! Diigo does handily let me know that I have over 500 Storybooks bookmarked there. That's a really good feeling; almost all the students do leave their projects online for future students to consult, and I am so grateful to them for sharing their work after the class is over.

It's an especially good feeling having all these Storybooks in the archive since it was about three years ago that my school's IT department deleted, without warning, almost all the Storybook websites that my students had built at students.ou.edu (the IT-provided web hosting I relied on, woe is me). At that time, I had over 1000 Storybooks in the archive, seven years' worth of student work - all thrown into the digital trash can by my school just a few days before the start of the school year. That was the worst day ever in my career as an online instructor!

Slowly but surely, though, the archive has recovered, and I have more confidence in Google Sites than I ever will in a service provided by my school, based on that terrible experience of losing my archive without warning. I know that Google Sites is not forever, but when the time comes to migrate and/or rebuild my archive, I am ready to do that again, hopeful that Google will give me more warning than my school did. More importantly, I am confident that there is ALWAYS wonderful work that my students are creating, if I can just find a way to capture and preserve that somehow. It's the single best thing I know of for inspiring future students to aim just as high, or higher! Unlike Rebecca Schuman (see her delightfully provocative article in Slate: The End of the College Essay), I love reading my students' writing, and the Storybook archive is a source of nothing but pride and joy for me, year after year after year.




Postscriptum: I just sat here for a few minutes, banging away on the widget and watching the brand-new Storybooks from this semester pop up at random together with Storybooks from last year and the year before (it's a javascript widget built with RotateContent.com). Time moves on - and yes, this Fall semester is now really over and receding into the past . . . but with a wonderful new semester to come, and I'm already excited about what new Storybooks will take shape then!

November 15, 2013

Google Gadget: Countdown Clock

As we get near the end of the semester, I know the students pay more and more attention to the "Countdown Clock" in the sidebar of the Class Announcements blog (screenshot below). Especially since many of my students are graduating seniors (including some who are graduating this Fall semester), the countdown takes on a special significance for them.


The script for the widget comes from the handy script library that is "Google Gadgets." I expect that those gadgets will disappear sooner or later, and I know I could use my own (limited) javascript skills to write a similar sort of gadget of my own... but I've been using this particular gadget for my classes for at least four or five years now, so I will be sorry to see it go. I have to admit that I also like seeing the clock tick down to the end of the semester!

Here is the script; you can see the variables that are easy to adjust - month, day, year, and so on:

November 14, 2013

GrammarCatz Javascript: Show/Hide Images

I got such a nice comment from a real programmer at Google+ yesterday: he liked the little javascript I am using to do the show-hide images at my GrammarCatz blog posts. So, I thought I would share that here, in the spirit of "a little javascript goes a long way" - I know very little javascript, but I sure have been able to make good use of what I know. This is a little more complicated than my "Let the Fates decide" javascript, but not by much.

So, I've pasted in the HTML code for the GrammarCatz javascript here in a separate document, and I've reproduced yesterday's GrammarCat below so you can see how it works. For the actual commentary on the cat and an explanation of the English grammar, see the blog post: Grammar Cat #99: Monty Python Cat.

I'm sure there are much more elegant ways to do this, of course, but one of the great things about a teeny-tiny javascript like this that runs inside a blog post is that I just need for it to work. So, it shows the corrected cat and hides the corrected cat as the user requires, and that's all I need it to do! :-)

(Note that below I had to display the images at half the usual size so they would fit in the width of the post here; I have the post width set much wider at the GrammarCatz blog.)



November 8, 2013

Javascript Randomizer: Let the Fates Decide!

Yesterday, I wrote about a randomizer I use for blog commenting assignments in my class; today, I want to write about a different randomizer that I use: The Fates. The very first year I taught my Myth-Folklore class (over ten years ago!), I created a little javascript randomizer for students who were not sure what topic to choose each week, and I called it "The Fates." As I've written before, I believe choice is an incredibly important part of any class, so in the Myth-Folklore class, students choose one of two reading topics each week... or they can let the Fates decide. This week, for example, the topic was English Fairy Tales or Child's Ballads. I have a presentation page which provides some helpful information about the topics, and on each page there is also a little javascript that is labeled "Let the Fates decide!" You can see it in action here: English Fairy Tales or Child's Ballads.

I really wasn't sure what the students would make of that, but over the years I have seen students invoke this every week in their starting blog post for the week. "This week," someone might write, "I did not know what to choose, so I let the Fates decide." Or, "The Fates told me four times in a row to read the fairy tales!" It is both fun and funny I think, something both light-hearted and useful. Some students never consult the Fates, of course, but plenty of students do, even if just for amusement.

I hasten to add that I was scrupulously honest in writing the script. Even in weeks where I know one of the topics is an underdog (as ballads are the underdog this week), I wrote the script so that neither option is favored one over the other; it really is a 50-50 chance, like flipping a coin. Here is the script:

By labeling this the "fates," of course, I am trying to make a point relative to the class. Chance was an incredibly important part of divination practices in the ancient world. We believe in the statistical power of random, but in the ancient world, many people considered coincidences of any kind to be the work of the gods. Ancient divination is a topic that I am very interested in myself, so one of these days (argh... when?) I should write up a resource to share with my students, since I imagine they would find it intriguing too. In the meantime, though, they can let the Fates keep on deciding for them!

The painting below shows Tobias and the Parcae (i.e., the Fates). The artist is one of my favorites, Jacek Malczewski.









November 7, 2013

RotateContent.com for Randomizing Class Assignments

I mentioned in a previous post how I use RotateContent.com to create randomized and date-based content to distribute in widgets that I use in my blogs and other webpages. I thought I would write up a note today about how I use RotateContent.com as a randomizer for class assignments, too.

It seems to me that having a randomizer is an incredibly important tool for assigning student activities online, especially when you are not just sure which students will be participating. That is a very common situation in my classes because I try to give the students a lot of choice about just which assignments they do. So, because I don't know how many students will be doing an assignment, I can use a randomizer to spread that effort most effectively.

That all sounds a little weird in the abstract, so let me give a concrete example of how I used the randomizer today when setting up assignment instructions today. Every week, students have an option of writing a "famous last words" blog post as an extra credit assignment. Then, every three weeks or so, I have an extra credit blog responding assignment where, in addition to their usual blog responding quota, students can read and comment on some of those "famous last words" post by their fellow classmates.

Not all of the students write "famous last words" post, and it varies from week to week. Plus, not all of the students do the extra credit blog responding when it's available, and there's no predicting how many of them will opt to do it. Yet my goal is for all the students who do the "famous last words" posts to get as many comments as possible, distributed equally.

It sounds hard... but it's easy, thanks to the power of random.
I just quickly create a randomized widget using RotateContent.com which will display a blog that has a recent "famous last words" post in it at random. Each student who wants to do the extra credit responding uses the randomizer four times to get their blog post assignments. No matter how many students do the extra credit, I can have faith that the statistical power of random will spread out that effort as best as I can reasonably hope for. You can see it in action here: Extra Credit: Blog Responding - Famous Last Words. (Note: You can see the randomizer in action, but you can't get inside our actual Ning group blogging space; I keep that private just to the class members.)

It takes me a grand total of 10 minutes to make the randomizer; in a separate blog post here, I'll explain just what kind of class roster I maintain in a GoogleDoc Spreadsheet and how I am able to use that spreadsheet to create an HTML table super-quickly that then converts easily to the javascript, thanks to RotateContent.com.

And here's the thing: in addition to this being efficient for me, it's fun for the students too. After all, "random" has a kind of mystery to it, a kind of power... who is deciding exactly which blogs they should read...? Not me! I just built the randomizer; I didn't assign anything to anybody. It is the mysterious power of randomization that does the actual assignment. And who knows what hidden messages it may contain...

Happy randomizing!



(Cartoon by Sumanta Baruah)

November 5, 2013

My FAVORITE Tool: RotateContent.com

In yesterday's blog post about Kindle books, I included the Kindle eBook widget that I use in my class announcements blog sidebar, and I thought I would say something about the amazing tool that I used to create that widget along with the many other widgets and other randomized content generators that I use in my classes. It is hands-down my favorite content creation tool: RotateContent.com. Even better: it is freely available for anyone to use, thanks to its genius creator, Randy Hoyt.


Randy was a student in my classes many (MANY) years ago, and we've been friends ever since. I hired him to build RotateContent.com back in what must be around 2003 or 2004, and it's been going strong ever since. I must have built a hundred or more widgets in that time, and even some of my oldest widgets are still going strong.

Just today, in fact, I came across a blog where I was delighted to see my Greek Beasts widget in the sidebar! What a thrill! That widget must be at least seven or eight years old, but there it was, chugging along, thanks to the magic of javascript. I've included that widget at the bottom of this blog post.

The basic idea behind RotateContent is that it takes a simple HTML table that you create (using whatever HTML editor you prefer), and it then transforms that HTML table into a javascript (or PHP script if you prefer) which either displays the content in the table by date (based on dates you include in the left-hand column of the table, corresponding to content in the right-hand column) or at random. You can include any kind of valid HTML in the table - text, link, images, video embedding codes, or even other javascripts. To get a sense of the process I follow in creating a widget, you might enjoy this blog post describing the step-by-step creation of the Latin LOLCat widget.

In future posts here, I'll explain some the special ins-and-outs of working with distributed content like this, but one thing I want to emphasize here is how powerful it is to keep the content in one place, while displaying it remotely via the javascript. That means I can expand on and add to the content, while also editing and making corrections, and everyone who is using the javascript will get the latest version! To be honest, I haven't understood why we don't see more content distributed in this way. Of course, I'm not a web programmer so I don't really understand the big picture of content distribution online - I just know that for me, as a teacher, this tool has been of enormous value. And as someone who loves to work with text and images, creating a new widget is one of my very favorite things to do. If I have a chunk of free time available over any given weekend, it's very likely that I might create a new widget, just for fun!

Meanwhile, as promised above, here is Greek Beasts widget, a very old widget, one of the first that I created... and still going strong! You can learn more about the Greek Beasts widget at my Schoolhouse Widgets blog (yes, I really do put EVERYTHING in blogs, as you can see).