Coding the UWC

I’m not the nimblest programmer, and because I can count my successes with PHP on one hand, I feel compelled to document them, to extend and preserve them through self-congratulatory accounts like this one.

I am working this semester as a faculty consultant to the University Writing Center. I probably mentioned that before. Basically, my charge is to get online consulting systems up and running at EMU, provide a few months of support and training, and spread the word. The main piece here is asynchronous consulting via email. Much like what we built at Syracuse, this process relies on a form. The student fills it out, uploads an attachment, submits it. The submission calls a PHP script, which in turn displays a You did it! message, a readout of the form data fed to the screen (for saving, for verification), and an email message that routes the form data and the attachment to a listserv. The listserv consists of a handful of subscribers who will comment and send back the uploadeds in turn, in time.

The system works reasonably well, but managing the queue can become a headache. Whose turn is it? At Syracuse, the queue was filled in with four or five rotations, and then as form-fed drafts arrived, consultants would access a shared Google Spreadsheet and manually enter a few vital details: name, email address, time received, time returned, and turnaround (time returned minus time received). These few crumbs of data were helpful, but many of the trackable-sortable pieces of the form were not otherwise captured systematically.

Until Zend Gdata. With this installed, it’s now possible to run a second PHP process that will push all of the form data into a shared Google Spreadsheet automatically. I puzzled over this on Friday, figured it out on Saturday. My initial stumble was that I was trying to integrate the new PHP code into the script that turned out the email and screen readout. Didn’t work. But then I figured out that I could instead route the form to a relay file (I doubt this is what programmers would call it, but I don’t have the vocabulary to name it anything else). The relay file was something like simple.php.

Simple.php is a script with a couple of lines: include formemail.php and include formtospreadsheet.php. Now, when the form gets submitted, both scripts run. The email routes the document like it should, and the Google Spreadsheet (queue) grabs a new line of data. The only element requiring manual entry is the time the consultant returned the commented draft. The shared spreadsheet does everything else: calls the list of consultant names from another page, calculates the turnaround, and records a comprehensive record of who is using the service, the classes they come from, etc. Over time, the comprehensive record will allow us to sort by different classes, different faculty, different colleges, which will help us identify patterns that might prove insightful for how writing is assigned and taught across the curriculum.

I should add that our recent launch of the service limits it to four targeted programs. This is necessary because we are not currently staffed to handle a deluge of submissions, and while we do want the service to get solidly off the ground this semester, we want foremost to extend it to a segment of the 17,000 students who are enrolled in some sort of online class.

Public Displays of Attendance

For the past year or so I have taken attendance in the face-to-face classes I teach by LED-projecting a Google Docs Spreadsheet into which I enter ‘x’ for present and ‘1’ for absent. The absences tabulate (i.e., it is a spreadsheet with wizardly formulas coursing through it: equations, maths of consequence, etc.), and everybody in the room can observe this act of record-keeping. Within the class, it is public: the record of who is present and who is absent is transparently kept, obvious. It’s rather like attendance crowd-sourcing in that the crowd is the source of the record; being in the room creates the account.

When we (me+ENGL328ers) were observed a week or so ago, the question came up again: What if somebody doesn’t want the record put on display? And the only answer I know relates to the option I offer on the first day of class. You can opt out. A student must let me know their wishes, and I will keep their attendance stealthily and in a secret ledger.

Among the positives, this practice helps me learn everyone’s names by the end of the third week of classes. It also reduces the number of conversations that start “but I was present that day”–conversations that leverage a teacher’s likely forgetting and that all the more likely when record keeping is hazy or erratic. With the projection method, students know attendance is logged during the first minute of class, so they show up on time, or, when they are late, they know they must check in with me at the end of the class session to make sure I have an ‘x’ rather than a ‘1’ next to their name.

The observation I took two weeks ago was exceedingly positive, so I don’t want to make this too much of a direct response to the question that arose in its follow-up conversation. It has come up in other moments: To what extent does this practice tread on student privacy? And are absences even private, really? Anyone in the class, after all, could keep track of who is there, who isn’t, and who arrives late, provided they knew names.

I suppose it is clear by my continuation of this practice that I understand attendance to be class-public. I wouldn’t put the record on display outside of the classroom (e.g., posting it as a web site or a public Google Doc), but I find the opt-out option to be a reasonable solution and a passable justification for continuing the practice. Without sounding too much like ProfHacker, I suppose I’m blogging all of this toward the invitation for input: What am I forgetting? Overlooking? And, How do you keep everyone up on a running attendance record?