ANTH 101 – A Deeper Dive

It’s been a good while since I had the pleasure of working with Mike Wesch and Ryan Klataske on ANTH 101. I revisited the course recently to write a letter of support for an award submission for online courses. I am posting an extended version of that letter below because I think it paints a path with online courses that is rarely followed but is, nonetheless, replicable and worth considering. Bigger Picture? I see ANTH101 as a path forward that makes me hopeful in an online space that seems increasingly depressing.1 You have two races currently in online learning. There is a race to be the cheapest and easiest place to enroll.2 This article on Liberty “University” paints that picture pretty well. This world will be like the fast food industry in many ways. How uniform can we make things? How automated? What’s the least we can pay the fewest humans? The only path to profit will be through ridiculous scale. There will be very little difference between these providers. They will use LMS products that are very similar while following very similar online course rubrics and probably (poorly) paying many of the same adjunct/itinerant online course faculty. Additional sadness will occur when the same OPM is creating content, marketing etc. for multiple universities for the same courses and programs.3 […]

An old drawing of an owl.

Building an ACF-Based Grade Book Plugin in 30 Minutes or Less

Origin Story Kathy asked me if I had any grade book plugins that they could use with a faculty development course. The goal was to show faculty where they were in the course. I knew I did not wish to use Learn Dash for any number of reasons– grade book module costs extra, grade book module is super awkward, learn dash requires a fresh multisite install etc. I also had WPLMS from a few years ago when I think Jon asked to try it out. This felt pretty bloated for what we wanted and it wasn’t entirely obvious if it had a grade book in any case. The WordPress plugin repository shows three plugins and the most up to date has not been updated in 3 years. Not a cheerful landscape. I wondered what it would take to build an ACF-based grade book relying mostly on the repeater field and simple shortcode for displaying the grades to the user. I wasn’t looking to do math or anything. I just wanted a pretty simple interface and a way for users to see their information while administrators could see all the content. That does require people to have accounts and be logged in. A bit of hassle but there is no free lunch.1 This grade book isn’t adding up things or doing […]


H4 Widget Headers – Incorrect Nesting Fix

Nothing fancy here but I’m documenting it for the benefit of beginners or people who don’t do this at all. It seems most of the widgets in WordPress automatically give you h4 headers when you add them to the sidebar. That seems to go against the idea of nested and orderly headers that WCAG accessibility wants. Granted, I’m not an expert and reading their documentation seems more painful than it should be. I do know that the SiteImprove checker flags it on the site I’m working on so I turned to javascript for a fix. What I need to do is take the HTML below and remove the H4 element and replace it with a div. I add a class so it’s easier for me to repeat the style that the H4 element had. As is typical for me, I did it on one element first and then I move to see if I can make a more generalizable function. Now I need to repeat this for the other 3 or 4 widgets. I could just copy it over and replace it but I’m really only dealing with two variables so making a decent function makes sense. I need to select the specific ID of the widget and I need specific replacement text. That leads to a function like this. […]

An old newspaper ad showing an automatic printer.

Get the PDFs – Google Search to Google Folder

Here’s a neat little pattern that might interest others. We got a version of the question below yesterday. Is there a way to automatically get the links from the search linked below into a spreadsheet? https://www.google.com/search?q=site%3Aedu+filetype%3Apdf+syllabus+education&oq=site%3Aedu+filetype%3Apdf+syllabus+education Then, from there, is there a way to automagically get the pdf files into a Drive folder? Step 1: Get Google Search into Google Sheets At first it seemed this would be really simple. Amit1 had done this really well back in 2015. Unfortunately, Google has started blocking this . . . even when you do it within Google Sheets/Scripts. This made me sad. Browser emulators and Python were dancing in my head but it seemed a bit too complex for a one time action. Instead of over-complicating things, I opted to use a Chrome plugin called Scraper. I’ve had it installed for a long time. It lets you easily do xpath scraping of websites. You can see in action in the video below. I also used the search settings to change the number of sites per page up to 100. Once I captured the info to the clipboard I just pasted it into Google Sheets. Step 2: Save the PDFs Now I just needed to loop through the URLs and save the PDFs to a particular Google Folder. This google script gets my […]

A lonely tree in front of the ICA museum construction site.

ePortfolios: Competing Concepts

I talked to some VCU people about ePortofolios1. It’s a conversation I’ve had any number of times over the years. I think that experience is leading to a better understanding of what’s going on structurally and the space we have to navigate competing interests. I’m also in a better position to show how certain technologies might help people find a middle way. However, I’m still trying to be honest about the complexities involved in an environment with shrinking resources and expanding expectations. That’s a rough line to sell when vendors have no compunction about pitching simple answers that aren’t exposed until after contracts are signed. For the record, I didn’t start with this peppy intro when I spoke. Portfolio Strategy There seem to be two major philosophies when thinking through portfolio content. Trophy Case The “trophy case” is showing the best of what the student has done. This is the pattern in many traditional portfolios. The student puts up assignment A. It’s as good as it’s going to get and it represents learning outcomes 1, 3, and 7. The alignment between the assignment and the evidence it presents of skills/knowledge is preordained and there’s little evidence of how or what led to that result. There is little or no consideration whether the display of this evidence plays to the strengths […]

Editable content example where the div display is changed from block to none to make a div disappear.

Live Action CSS Editting

Jeff did a nice intro to HTML/CSS course today and made a chunk of solid CodePen resources. I did one small example but I got to the scoped contenteditable something that I’ve been waiting to use since I saw it come up a few weeks1 Anyway, new to me. What it lets you do is edit the css in your page live without using the inspector or anything else. It’s harder to explain than it is to see in the gif2 below. The reason this gets my interest is that it is in the realm of an explorable explanation where you get the chance to play alongside the direct instruction. Here’s a quick demo in CodePen. See the Pen ID HTML: Display by Tom (@twwoodward) on CodePen. 1 Months? Who knows? Time . . . and turns out it’s ancient history (2011! at least). 2 You thought I’d be guiding your pronunciation of this word here didn’t you? Wrong. I do not care.

A lonely tree in front of the ICA museum construction site.

Intro to OER: A Wider Spectrum

I’ve done a number of introduction to OER conversations over the last few years. I did another recently. Here is my revised attempt at getting at a very broad overview and maybe going a bit farther afield than is typically the case. This particular presentation emphasized OER as addition and that you could use all sorts of pieces as augmentation rather than replacement. The intro was focused on a quick overview of broad concepts and getting some terms for future independent google work. I try to emphasize that with the people in attendance. We aren’t diving down every rabbit hole offered here but we are tossing out some key words and concepts that you might wish to pursue later. Despite the fact that creative commons and MOOCs feel old and played out to me they remain new terms to a number of the faculty attending. While it muddies the waters a bit, I do emphasize that VCU has a chunk of free-to-our-students resources that faculty should be aware of. Standard With that intro out of the way, I try to work from the typical conception of OER towards what I feel like are less considered elements. That leads to starting with courses/textbooks. They’re high structure and made with educational intent. I hit a few common places for this content and […]


Javascript Highlighter to Form (or whatever)

John Stewart asked if I had any easy ways to allow users to highlight some text and push that highlighted text to a form. I didn’t but that sounded like something useful in a variety of scenarios so I sketched out a working demo in Codepen which you can see below. It can push the content directly to a form field on the page but I also built a link that would populate to include the highlighted text as a URL parameter and grab the page URL as well. Like most things I make, it’s the result of some Stack Overflow responses being hit several times with a hammer. It’s decently commented up but is not the most optimized of code. This type of construction usually results in new ideas being incorporated on the fly and that makes for ugly code. I am ok with that as this prototype took about 15 minutes to create. We can polish things up if/when we have a more direct audience/intent. Until then, it’s a functional prototype which can be used to get faculty seeing possibilities. See the Pen highlight to field by Tom (@twwoodward) on CodePen.


Follow the Cursor Arrows in Javascript

Matt came up with a really interesting visual idea where arrows follow the cursor. He found this codepen example which was pretty close to what he envisioned (only with pill shapes). The problem was that this version used Babel, jQuery, and Underscore. That’s good if you know all those pieces but less good if you don’t. I don’t. Could I do this with just plain javascript? Make the Boxes First, I didn’t want to cut and paste a whole bunch of divs (or use pug) so I figured javascript should make them. Since I think I’m funny my arrow boxes are in the arrow class and the div they’re inserted before has the id quiver. I’m making 300 boxes in this example and the CSS sets the arrows as background images. Watch the Cursor This bit watches the body element for the mouse move. The cursorFinder piece gets the X and Y coordinates of the mouse. In this case, we’re also spitting it out at the bottom of the page so we can see what’s going on. It’s pretty much from the W3 example. Now that we can see where the mouse is we need to tilt the divs based on where they are and where the mouse is. Tilting the Divs First, we have to get all the arrow […]


WordPress Timeline JS Plugin

Background I like Timeline JS. It’s a nice way to create multimedia timelines. I’d previously done some work that would take WordPress JSON API data and insert it into the Timeline JS view.1 It was nice for creating alternate and standardized views of blogs that might be useful for different reasons. It didn’t serve some other needs and while doing it through a generic URL was handy for many reasons it was odd in other scenarios. As a result I decided to make a new version as a plugin. If you don’t like reading stuff there’s a quick video of how it works below. Plugin Goals First, I wanted this to be a plugin rather than a theme. That adds a bit of complexity because you don’t have control of the whole scenario but it makes it much more portable and more likely to be used as it doesn’t require people to change themes or spin up an additional site. I wanted people to be able to use WordPress rather than a spreadsheet to create the content for Timeline JS. Doing that has a few advantages- the WYSIWYG editor, the ability to upload images directly in WordPress, the ability to use posts you’ve already written, etc. etc. I also wanted people to be able to choose what posts ended up […]