Using Web Annotation as an Educational Tool in the Classroom

Over the past year or so, along with IST M.S. student Anthony Pinter, I’ve been exploring how Web annotation tools such as or Lacuna Stories can be used in the classroom. I’ve also been trying to create my own ideal format of a Web-based textbook for Internet Law, which would have excellent navigation, readability on any device (including when printed), footnotes, and integrated annotation. A very early version of our work is available at

I’m most interested in using the annotation tools to help students in creating case briefs, according to my guidelines for How to Brief a Case. Anthony and I conducted a small usability study on the Web page in spring 2016, with a group of almost 150 students in IST 432. Anthony was able to present this work at I Annotate 2016 in Berlin, in a presentation titled “Using Web Annotation as an Educational Tool in the Classroom” (PDF). I think Anthony did a great job with the presentation; you can watch the video of his talk here.

Unsolicited Advice

This academic year was the second one in which I had the pleasure of serving as an honors advisor for IST and SRA students in the Schreyer Honors College. Honors advisees are assigned to me in their junior year, and so right now those first students are submitting their honors theses getting ready for commencement. I’m really proud of what they’ve accomplished—even though I, unlike their thesis supervisors, can take absolutely zero credit for their success—and so I just wanted to highlight their excellent work here:

Integration: Making Technology Work for You and Your Students

On Saturday, March 19, I’ll be speaking at the Penn State Teaching and Learning with Technology Symposium. Along with Bart Pursel, I’ll be presenting in the Integration: Making Technology Work for You and Your Students session. This will be my first time presenting at the Symposium, and my fourth year as an attendee; it’s always a great time.

I believe that a video of the session will be posted eventually, but in the meantime, here are the slides.

Hail, Caesar!

This serves as a follow-up to my award-winning (untrue) blog post on How to Create Your Own Weather Forecast Program Using Python. This time around, we’re going to learn how to program own our Caesar cipher (encrypting and decrypting) using Python, as well as how to hack that same cipher. I suppose the ambitious student could combine these two tutorials in order to send encrypted weather forecasts to his friend. Here’s what you’ll be making:

Caesar cipher

To be very clear, most of the content in this tutorial is merely a modified version of Hacking Secret Ciphers with Python. In particular, I’ve tweaked and combined components of chapters 6, 7, and 12 in a way that I hope students will find interesting. If you find this material interesting, I encourage you to read the entire book, which is available in its entirety for free online.

Getting Started with Python

If you’re a Penn State IST student, you can use the classroom computers, which come pre-loaded with Python and IDLE. If you’re not on campus, you can access them through your browser (this is very cool).

If you’re not a Penn State IST student, or if you want to install Python on your own computer, I encourage you to read Chapter 2 (“Installing Python”) of Hacking Secret Ciphers with Python.

Preparing for Detecting English

I often have to evaluate written work created by college students, so I have signficant experience in detecting when something is written in English, and when it is not (ha!). Our Python script will face the same issue when we brute-force hack the encrypted string; it will use the Caesar deciphering code with every possible key, then evaluate the results against a dictionary of English words. As a heuristic, we’ll say that if 20% of the words in the deciphered message are found in the dictionary file, and 85% of the characters are letters or spaces, then we’ve possibly identified the correct key.

We could re-create this code ourselves, but once again Al Sweigart’s Hacking Secret Ciphers with Python has us covered; see Chapter 12 (“Detecting English Programmatically”). I encourage you to read the entire chapter, but in the interest of creating a tutorial that can hopefully be completed in about an hour, you should:

  • Download the dictionary file and save it to your computer’s desktop. This file contains a whole bunch of English words. You’re probably already familiar with many of them.
  • Download and save it to your computer’s desktop. This is a Python module that simply returns true or false, according to the heuristic described above, as to whether the message contains English.

Shifting Keys

In the spirit of putting the bottom line up front, here’s the completed script:

You can paste that into IDLE, save as, then hit F5 on your keyboard to run the program.

As I said, this is mostly a combination of chapters 6 (for encryption and decryption), 7 (for brute force hacking), and 12 (for detecting English) of the hacking Python book. For line-by-line commentary on how the code works, please see those chapters. My version of the script merely combines the several functions together, and adds some error-checking.

What’s Next?

I don’t know, Christmas I guess? But if you mean in terms of learning more Python and/or cryptography, I recommend:

iPad Teaching

Beginning of the semester, set up a non-sync Box folder and then put a link to it in the syllabus (you can have it be available to the world, to just people at, or to specific individuals)

Launch Doceri on the podium computer (in IST building, must be a Mac)

Launch Doceri on the iPad

Can walk around the room and still record audio, navigate the PPT, and periodically draw on the screen

When done, share using the Box extension. Then delete it

You can view some analytics on how many people viewed it

I know that students find it useful. It’s also useful to me as a way of reminding myself where we left off at the end of the last class, or in future semesters 

Finding Myself

There are many wonderful things about the IST Building, but navigability isn’t one of them. Students understandably get lost trying to find my office. The College does publish floor plans, but they are, perplexingly, hidden in a faculty/staff-only intranet. With the start of the semester around the corner, I thought it would be helpful to publish these resources:

  1. IST Building first floor plan
  2. Second floor plan
  3. Third floor plan

Future Forum Tips

As part of the university’s Engaged Scholarship initiative, students in my SRA 111 sections recently participated in a career fair networking activity, designed to help them prepare for the IST Future Forum, which will be held on Thursday. Last night I emailed the students this list of tips, for whatever they’re worth. In the spirit of “eh, what the heck” that is at the heart of, I share them with you, too:

Before the Future Forum

  • General information about the Future Forum is available here
  • The compilation of company profiles that Shannon (our guest who was part of the Engaged Scholarship initiative) provided is your friend. Look this over, with a focus on the companies you’ll want to talk to on Thursday.
  • Don’t have a resume yet? Follow this list of tips.
  • Would you like to have your resume reviewed in a low/no stakes environment? Ask your teachers or LAs, and they would be happy to help you.

During the Future Forum

  • The Future Forum is from 10a to 4p in the IST Building, on the first and second floors.
  • Dress professionally. It can get a little crowded, so try to avoid bringing a bulky bookbag. You might want to leave your bags and jacket in the lockers near the first-floor entrance of the IST Building.
  • I recommend bringing at least 20 copies of your resume (fancy paper is nice, but not necessary), and a notebook and pencil so that you can take notes while you’re talking to recruiters.
  • Immediately write down the name of the person you’re talking to. I’m not sure about you guys, but often when I’m introduced to somebody and they tell me their name, I’m often so focused on making a good impression that their name goes in one ear and out the other (which in turn makes a horrible impression). You’ve got a good excuse to take notes during the career fair, so you don’t have to fall victim to this, too.
  • Ask for business cards after talking to each recruiter. After you finish talking to them, write what you’ll say to them (including your “personal story” so that they can remember who you are) on the back. Send a thank-you email 24–48 hours later.

After the Future Forum

  • Penn State’s Spring career days at the BJC are February 9 and 10, but the Future Forum is much better if you’re interested in an IST- or SRA-related jobs. The recruiters on Thursday will know what IST and SRA are, and the setting is much more intimate.
  • If your resume is looking a little sparse and you’re interested in joining an SRA-related student organization or two, I recommend
  • On that same note, here’s the list of Resources for Finding Engaged Scholarship Experiences (which Shannon showed at the end of class).
  • After the Forum, jot down a few notes about things you could have done better for next time, and review these notes before the next career fair. You’ll have many chances to perfect this skill.

The Case Against 8

Last night I had an opportunity to watch an outstanding documentary, The Case Against 8, which gives a behind-the-scenes look at the effort to overturn California’s gay marriage ban. There’s a lot that can be said for the emotional and sociological aspects of the film and its subject matter, but for me, one of the best parts was seeing the judicial processes that I talk about in classes such as B LAW 341 and IST 432 play out on screen. The movie follows the case as it bounces between state and federal court, and through the appeals process; you follow the lawyers as they prepare their arguments, and you see and hear actual trial and appeal proceedings. I was riveted throughout, as was my decidedly non-lawyer wife.

The movie is streaming on HBO Go, and is also available through iTunes and Amazon.


Many years ago, my father discovered the world’s most perfect timepiece, and he later passed that knowledge on to me, his firstborn (and arguably best) son. That watch is the Casio Men’s F105W-1A Sport Watch, and it is amazing. It boasts the following features:

  • is $11.49
  • per above, you can lose it or break it and you don’t have to care; just buy another one
  • the battery lasts for approximately 35 years
  • glows!
  • you don’t have to worry about people trying to steal it
  • does not send you notifications when you receive an email
  • is really basic and beautifully designed


casio watch

You should buy one.

How to Create Your Own Weather Forecast Program Using Python

In this tutorial we’ll explore how to access the Wunderground API (application programming interface) using Python. What we create will be very simple but it will give you a good idea of what you can do with Python and with APIs.

Wunderground (and most APIs, such as those provided by Twitter, Facebook, and Reddit) require you to create a free API key. The API key is a code passed by programs calling the API to identify the calling program and its developer. Keys are used to track and control how the API is being used, and to prevent malicious use or abuse of the API.

To create your key, create a free account here. Click the link in the confirmation email that you’ll receive, and then sign into your account. Click “Explore My Options,” and then “Purchase Key” at the bottom of the next screen (don’t worry, you won’t be spending any money). Complete the questions on the next page (put your real name and contact email; set the project name to something like “API Test” and the website to or whatever you’d like). Select “Website”, “No”, and “No” for the three radio buttons. Enter your country and a brief description (“Learning about the Wunderground API”), and then check both boxes and click “Purchase Key.” On the next page, you’ll see your key (it will be 16 hexadecimal characters, such as “4f73eacea9c60244”). Copy and paste this into somewhere handy, because you’ll need it soon.

Wunderground’s API provides answers to a variety of questions that we can ask it. Let’s say that we were interested in learning the current weather conditions in State College. In our Web browser, we can simply construct a special URL, containing our API key and the city and state for University Park, and we’ll get a plain-text set of results back. Here’s how to build the URL (note that you must replace [your API key] with, you guessed it, your API key):[your API key]/conditions/q/16802.json

As you can see from the URL, here we’re looking at “conditions” data, which refers to the current weather. Looking at the results, you can probably see fields like zip, latitude, longitude elevation, weather, temp_f, wind_string, and feelslike_f that look interesting. What we’d like to do in this tutorial is: 1) create a Python script that returns only the information we care about; and 2) accesses the forecast data, rather the current condition data. So, let’s do that.

You may need to install Python and IDLE on your computer; you can do that here. If you’re an IST student, you can log in to Open the Start menu and type “Python”, and then launch “IDLE (Python GUI)”.

In IDLE, select File -> New File (or New Window). In that window, type the following (again, you need to replace [your API key]):

Then select Run -> Run Module. If everything worked, you should be in a loop where the script asks for your ZIP code and then spits out the current weather conditions. So far, so good. We want to access forecast data, though, and not just current condition data.

Create a new script and type and run the following (again, you need to replace [your API key]):

You can explore many more features of the Wunderground API here. If you want to learn more about Python, I think the best place to start is here.