Tag: GitHub (Page 1 of 2)

I am Open (and so can you!)

The book cover for Stephen Colbert's book I am America and so Can YouFor the next few weeks, I will be taking a history course, something I thought I would never do again after I finished my dissertation. Shawn Graham is teaching an online digital history course at Carleton University and has opened it up for non-matriculating students.

The entire design of the course is fantastic for open learners. Rather than just allowing us to watch from the rafters, Shawn has set up a Slack team and is active in the channels. Shawn asks that students blog for the course and use github to keep a record of their progress in the coding exercises. The course readings are all openly accessible and Shawn has asked that the students use Hypothes.is so that their reading notes are open (you can find them in the Hypothes.is stream with the tag hist3814o).

For the first week, Shawn has assigned a set of readings on the concept of open notes research within history and the humanities more broadly. Open notes research is more commonly practiced in the sciences. Jean Claude-Bradley was advocating for the concept in chemistry as early as 2006. Open notes science improves reproducibility and verifiability of results, and it also opens up the vast array of information that is gained during research but never published.

Open notes research has been slow to catch on, and it doesn’t take long to brainstorm possible objections. Publications are the coin of the realm in academia, and sharing your research notes could possibly allow someone to scoop your ideas. However, I agree with the readings that Shawn has curated and his push during this week of the course that open notes research is the best practice. Clearly, as I am writing this blog, I feel that sharing my thought processes helps me to clarify my thoughts and develop my understanding of my research. Sharing our reading notes with Hypothes.is and collecting our code in GitHub take this a step further. We’re thinking, reading, and experimenting (coding) out loud.

I am taking Shawn’s course, because I want to see how he uses Slack, and because I think the course design is fantastic. I’m already a convert for open notes research and have blogged about it repeatedly hereherehere and in many other posts. This site as a whole is an argument for open notes research and the related ideas of getting rid of disposable assignments and empowering students to contribute to a broader knowledge community. However, I did enjoy the week’s readings, especially Caleb McDaniel’s post that turned me on to open notes research a few years ago. I look forward to joining in for the exercises next week (this week everyone was learning MarkDown and Git). Most of all, I want to encourage any readers in the ed tech world who have not taken a digital history or digital humanities course to at least poke around Shawn’s course to see the wonderful overlap between that knowledge domain and the current ed tech focus on digital literacy and citizenship.

Leadership Schools and Digital Literacy

In Bonnie Stewart’s latest post for #HortonFreire, she introduced us to the Antigonish Movement, “a Maritime adult education, cooperative, and microfinance movement of the 1920s and ’30s that led to the development of local credit unions that still dot the landscape around Maritime Canada.” Bonnie suggested this movement as both an historical parallel to Horton’s Citizenship Schools and as a model for our network to improve digital literacy.

In thinking about Bonnie’s call to action, I see parallels with a program that may provide some of the organizational scaffolding for such an educational program. About six months ago I participated as a student in a program called Software Carpentry. This non-profit group teaches faculty and grad students three basics of programming literacy: linux command line, version control (usually with GitHub), and a broadly applicable programming language (usually Python or R).

These skills and the correlated literacies are great, but what is interesting for this conversation is the model adopted by Software Carpentry. After completing the program as a student, they encourage participants to consider going through the instructor training. Participants can earn certification which confers the right to use the Software Carpentry branding and materials in their own workshops. The multi-stage training looks something like this:

  1. A 2-day instructor training focused on pedagogy
  2. Watch and give feedback in a video conference debriefing for a new instructor
  3. Participate as the junior-partner in a team-taught session of Software Carpentry
  4. Debriefing in a video conference
  5. Contribute to the GitHub repository of course material

It might be useful for the #HortonFreire group, along with our broader professional circle, to think about developing a similar GitHub repository of course materials. One of the things I particularly like about this technological model is how it would allow us to create a pool of common resources, and also our own forked versions of the repository that are fitted to our particular cultural environments, the needs of the local students, and our varied pedagogies. These GitHub materials could then provide the jumping off point for local workshops.


My previous posts in the #HortonFreire book club:

Organizing and Educating around Open Ed

Hypothes.is Collector

One of my favorite online tools is Hypothes.is. It allows you to annotate web pages as you would a book. When you’re using Hypothes.is you can highlight text on a webpage or add notes.

The tool can be used to take private notes, but it becomes all the more powerful when you use it for collaborative reading. By making your notes public or sharing them with a chosen group, you can share your take on a reading as you’re reading it. My colleague Lauren Horn Griffin recently wrote on the uses cases for this web annotation within a university setting. She identified five possibilities

  • Reading Accountability & Promoting Active Reading
  • Collaborative Reading & Modeling
  • Public-but-Independent Research
  • Instructor Feedback/Self-Assessment
  • Citations

You can launch the tool by appending “https://via.hypothes.is/” before a URL. To annotate this post you would visit https://via.hypothes.is/http://www.johnastewart.org/tools/hypothes-is-collector/. You can also download an extension for Chrome to be able to launch Hypothesis quickly on any website. Site builders can also install Hypothes.is directly into WordPress, Drupal, or Jekyll sites, or pretty much anything else that allows javascript.

Here is how a recent LA Review of Books article on Digital Humanities looks when viewing the public annotations:

A screenshot of an article in LA Review of Books on Digital Humanities with the Hypothesis tool active

Hypothes.is Collector

In order to make it easier to track activity in Hypothes.is, I created a program called Hypothes.is Collector. The idea is that you can type in user name, a URL, a tag, or a group ID and click the button to see all of the related annotations. The program will create a new sheet with an archive of up to 200 annotations based on the search terms.  It will then create a third sheet that will count how many of these annotations were made on each URL in the set by each user.


As with Hypothes.is itself, I see several use cases for this. The original idea for the program was to allow a course instructor to quickly see the activity of their students. If an instructor asks her students to annotate three different articles, she could use this app to assess whether or not each student made their annotations. The easiest way to do this would be to set up a group in Hypothes.is for the class.  The instructor could then enter the group ID and her user authorization token (a unique password that allows you to pull your private and group annotations) into the system. When she clicked the button, she would see an archive of the annotations and a count of activity for the students across the three readings.

Other use cases as I currently see them include:

  • Studying how various tags are being used within Hypothes.is
  • Tracking recent public activity for Hypothes.is
  • Breaking down activity on a particular reading by user
  • Tracking one of Remi Holden’s  annotation flash mobs

I built the Collector as an attempt to make it easy for people to access annotations in a format that could then be analyzed. I think the counter that gets built on the third sheet is handy, but it’s not going to be useful for everyone. As I continue to refine this project, I am going to add some different visualizations of the annotation archive and I will extend the number of annotations that can be pulled at a single time. I welcome feedback and feature requests and encourage everyone to modify the project to best suit their needs.

Please try out the new Hypothes.is Collector. You can follow this link to get a copy of the spreadsheet and collect annotations. You can also view or modify the code by choosing “Script Editor” from the Tools Menu.


A few notes on the Code:

The code for the program (shared below) is written in Google Scripts. This is a modified javascript that features a library of functions to facilitate interaction within and between the Google Docs Apps. While writing this particular code, I learned a few tricks for collecting and passing the parameters for the API search and how to pass the authorization token. You can run Google’s version of a GET request, UrlFetchApp.fetch, woith or without an authorization token and other advanced options. To run it with the advanced options (to pass headers like authorization), I formatted the ‘headers’ as a js object, passed them into a second object called ‘options’, and then passed ‘options’ a parameter into UrlFetchApp.fetch.

This probably isn’t interesting to most people, but it took me a long time to figure out and opens the doors to all sorts of other APIs that require authorization. Google Script is a little particular and APIs vary, but I learned a lot about APIs while figuring out the authorization, search parameters, and how to parse the returned json. After writing an initial version of the code, I found better solutions to many of my questions in some of Jon Udell’s Hypothes.is API code – so thank you Jon and be sure to check out his site: jonudell.net.

The bit of code at the end that sets up the third spreadsheet for counting annotations by user and URL is also pretty nifty. I had to figure out how to use arrays to populate Sheets ranges and then played with the archaic R1C1 notation to create dynamic formulas for the sheet. Feel free to hack at or extend the code for your own use. Chunks of the code may also be useful for working on other API projects. As with most of my work, feel free to take whatever is useful.

End of code

Page 1 of 2

Powered by WordPress & Theme by Anders Norén