Friday, December 19, 2014

Grade 2 Social Studies Interactive eBook

Cross-posted from our previous blog site.

Exploring Iqaluit, Meteghan, and Saskatoon

Shannon Pasma and Karla Holt have created a universally-designed for learning (UDL) student eBook for Alberta's Grade 2 Social Studies Topic 2.1: Canada's Dynamic Communities. The free eBook explores how to get to each of the three communities as well the land, weather, activities, and seasonal clothing in Iqaluit, Meteghan, and Saskatoon. UDL activities and assessment activities are included in the eBook.

Below is a preview of the eBook.

Please note that the eBook is not interactive in the preview. Download the eBook for the interactive version.

Friday, November 28, 2014

French Immersion Social Studies Minecraft Project: Government (Grade 6)

Cross-posted from our previous blog site.

Check out this Prezi created by grade six students at one of our elementary schools. They created an island in Minecraft to learn about government, laws, charter of rights, and services provided by government.

Voir cette Prezi créé par élèves de sixième année à l'une de nos écoles élémentaires. Ils ont créé une île dans Minecraft à apprendre sur le gouvernement, les lois, la Charte des droits, et les services fournis par le gouvernement.

Monday, October 27, 2014

A Picture is Worth a Thousand Dollars

Recently one of our schools received an invoice for $1000 for their use of a small copyrighted image on one of their newsletters. After determining that it was in fact a legal invoice, they were forced to pay the royalty for their use of that image.

To avoid this, there are a few ways you can find images (or other media such as songs) that are safe to use for newsletters, websites, etc.

The easiest way to find usable images is the "Usage rights" menu on Google Image Search results. After searching for something, click the Search tools button.

Then click Usage rights and select Labeled for reuse with modification.

This will filter your results to display only images that are likely able to be used. Remember that you still need to provide attribution, unless the image is explicitly tagged as Public Domain. Attribution can be as simple as providing a link to the original source.

For more information, check out the different types of Creative Commons licenses. For songs that you can use in projects check out Jamendo or the YouTube Audio Library.

Thursday, October 9, 2014

Python and Google Apps Provisioning with the Admin SDK Directory API

After wading through documentation, blog posts, and StackOverflow answers I've finally figured out a way to authenticate using OAuth 2.0. Since we didn't want to have to interactively grant "user consent" for each of our domains, this is acting as a "web server" for computer-computer interactions.

I assume that you have Python 2.7 installed (three shalt thou not use), but I'd recommend installing Anaconda to make your life easier for all of this. You'll also need to install the Google APIs Client Library for Python.

EDIT: I was finally able to get it to work with the default SignedJwtAssertionCredentials.
 as well as PyCryptoSignedJWT. To install PyCryptoSignedJWT, download and unzip, then from the command line (in the directory you unziped to) type python install in order to install.

The next step is to set up your project. Here's the documentation from here to "Set up your API":
  • Enable the API access from the Admin console in order to make requests to the Directory API. To enable the API, log in to your admin account and select Security. If you do not see Security listed, select More controls and then Security from the options shown in the gray box. Select API reference, and then select the checkbox to Enable API access. Save your changes.
  • Set up a new project in the Google APIs Console and activate Admin SDK service for this project. See the Google APIs Console Help in the upper right corner of the Console page for more information about creating your API project.

Still in the Developers Console, you'll need to create credentials for your project. Click on Credentials (under APIs) and click the button Create new Client ID and then select Service account.

Download the key file, and make a note of the private key password (which is always "notasecret"). Then click the Okay, got it button.

You'll need to make a note of the Service Account EMAIL ADDRESS that is displayed (a long string of characters ending in and the CLIENT ID (the same string ending with

The next step requires you to authorize your API client to access your admin console. Assuming your're still logged in to your Super Admin account, go to Manage API client access (or go to Security, Advanced Settings, Authentication, Manage third party OAuth Client access). For the Client Name, paste in the CLIENT ID that you noted previously. In the One or More API Scopes, put in a comma-separated list of the scopes that you'll be using. For our example I'd suggest, (you can always change this later). Then click the Authorize button.

The file you downloaded previously will be something like APIProject.p12 but we'll need to convert it to a PEM file. On a Mac or Linux machine this can be done from the command line ( openssl pkcs12 -passin pass:notasecret -in APIProject.p12 -nocerts -out APIProject.pem ), but on Windows other software is required (try Win32OpenSSL that can be downloaded from here). As a last resort for those who don't worry about security, you can convert it using this site.

So you now have a p12 key file, a Service Account Email Address, and of course your Super Admin account. You're set to start writing some code. I like the Spyder development environment that is installed with Anaconda, but feel free to just use Notepad (or Notepad++) if you're so inclined.

Here's the minimum Python code that works for me, fill in the appropriate values for yourself.

superAdmin = ''
serviceAccount = ''
pemFile = 'APIProject.p12'
scope = ''

import httplib2
from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials

keyFile = file(p12File, 'rb')
key =
credentials = SignedJwtAssertionCredentials(serviceAccount,

http = httplib2.Http()
httplib2.debuglevel = False #change this to True if you want to see the output
http = credentials.authorize(http=http)
directoryService = build(serviceName='admin', version='directory_v1', http=http)

# You are now authenticated, so you can say something like this:
user = directoryService.users().get(userKey = '')
print user.execute()

Hopefully that's enough to get you started. The documentation about what you can do with the Admin Directory API is here. just remember that some of them will require you to declare other scopes.

Tuesday, September 2, 2014

What Your Teacher Wants You To Know

On this first day of school I wanted to post a letter that one of my high school colleagues gave to all of her students.

What Mrs. _____ wants you to know:

I do care about you. Not just the person next to you, but YOU. I know that you may not believe me when I say that, but it’s true. There will be days that you and/or I don’t do things perfectly and there may be conflict, but I beg you to not forget that I do want what’s best for you. I’m going to be honest with you: I struggle with remembering names. I study photo class lists in an attempt to memorize names as quickly as possible, but I’m much better at remembering your name if we actually interact… so when I say I’m available for individual help inside or outside of class time, I’m secretly hoping that you will take me up on that so that I can get to know you individually and we can get past this awkward stage of not really knowing each other. As much as I am generally busy at school because I thrive on efficiency and because I have a child at home that I enjoy spending time with, I am willing to stop what I am doing to help you. PLEASE ASK!

I am generally a rule-follower and I don’t truly understand why others aren’t. I think it’s a very valuable skill in life to be able to follow rules that you don’t necessarily agree with. Police officers or your future boss likely won’t care if you disagree with a rule that they caught you breaking. Truth and justice are not completely relative and societies need rules in order to function for the common good. If I crack down on you for doing something that you shouldn’t, don’t try to make excuses or say someone else was doing it too. Most people speed when driving, but only some get caught… if you get caught, you’re responsible for your own actions. Even if someone is trying to ‘force’ you to do it.

You will not use every fact/concept that you learn in school in your life. You likely don’t even know every job that you will do in your life. But, public education walks a tight-rope line between focussing on individuals while moving towards a common goal. Even if you may not ‘need to know’ something, the person beside you may. Regardless of what’s being taught, the act of training your brain to learn is the necessary skill for you to develop. Another key skill in life is the ability to focus past your own nose and do something that doesn’t immediately give you great joy. Sometimes that’s simply delaying gratification, but it’s true even if you never reach the point of finding joy in doing it. Some things just plain need done, whether you want to or not, like cleaning the bathroom or mowing the lawn.

I will be doing my best to help you learn what Alberta Education asks you to. Please know that I welcome constructive comments on how I can do so better. Remember that I cannot read your mind, and may not hear EVERY conversation you have with your friends in class, so please communicate requests directly with me if you want me to be able to address them. If you have any questions/objections/comments, please feel free to share them with me, either in person or via email. I am willing to openly discuss anything, at an appropriate time. :)

I look forward to spending a semester with you,

Mrs. _____

Friday, June 20, 2014

Online Student Forums: Some Options

I've had a few teachers ask me lately about options for students to interact online. They're usually looking for some sort of discussion forum, where students (and teachers) can post ideas and responses. Here are a few options, with some brief descriptions of each. Ideally these will be tools that you also use for other purposes with your students, but discussion forums might just be one way to start getting students involved in blended learning.

Google Groups
Students use their school Google accounts, teachers (and students) can create groups for specific discussion topics or for general class discussions.

If you are using this already, your class has a default general discussion forum. You can also create additional discussion forums for specific topics or groups of students.

This is designed primarily as a discussion forum, but it also includes some of the features of Moodle such as the ability to upload files and collect assignments. Unlike Google Groups and Moodle we don't create user accounts for students, they need to create their own accounts and then join your class using the appropriate code.

A quick and easy way to set up an online discussion for a day (or longer), it doesn't require student accounts or any other preparation.

There are other options, of course, but these are a few that we use often. Let us know if you'd like help implementing any of these or other tools.

Wednesday, June 18, 2014

Minecraft in Math at Bev Facey

Students in Yolanda Chang's Math 20-2 classes at Bev Facey participated in a week-long MinecraftEdu project that had them building models and doing related calculations to demonstrate their learning of rates and scale factors. At the end of the week, she had her students write reflections, here are some of the highlights.

This project improved my understanding of scale factor and rates and ratios because I realize how much you have to convert and apply your knowledge to make your scale factor work. In real life the measurements that things are in can be different than what you’re using. Like the material.

Being able to see the blocks helped me understand how scale factor works and how different scale factors can change the size of a sculpture.

The calculations of the actual design improved my understandings of scale factor as well as my understanding of rates and ratios. The only way to keep track of all the calculations was to be very organized and methodical.

It was a good learning experience considering everyone has different answers and the question really makes you think. So it’s not just a breeze by project.

It makes so much more sense when you’re in control of what you’re doing and making it bigger and such.

It allowed me to think of a real life situation and everything was 3-D which make it easier to think about and calculate.

It’s a good game to help you with math, it’s better than doing worksheets.

It was related to real life things. Everyone’s answers differed so you had to learn to do it on your own.

It shows you that you use these things in real life and it helps you get a better understanding of what’s going on. It also gives you a visual image and gives you the opportunity to show your own work and understanding on the project.

For me, my learning style is auditory and visual so doing this project allowed me to visually see and explore real life scenarios of how to use scale factors. This helped significantly for my learning and enjoyment of this class.

It made it more fun to do scale factors, rates and ratios. Combining elements of abstract learning and mainstream video gaming.

It was more real life. I can see what I’m figuring out in front of me. It’s easier than trying to read a question and having to envision.

Yes, it helped me understand how to use scale factor and the rates and ratios. I understand how to apply this to my everyday life. As well for my future working in the trades.

It helped to show that when you extend the outside, the interior amount got much bigger. It was easier to see pictorially instead of in numbers.

It helped me to understand construction and how much work actually has to go into it.

Because there were so many different steps of math to go through, I really included everything on some level.

It helped me learn the concept in a way that was more fun and challenging to myself.

Because it was very challenging it made us think hard.

Tuesday, May 6, 2014

Task Force for Teaching Excellence

Along with about 1300 other people I attended the Task Force for Teaching Excellence Symposium yesterday where the report was released. It contains 25 recommendations to the Minister, which are summarized here.

Throughout the day there was great discussion at my table and during the break times. At the end of the day panel members answered questions that had been sent in, the answers to those and other questions will be posted here and on the Alberta Education Twitter account (using the hashtag #InspiringEd).

Unfortunately most of what gets reported on are negative reactions to these recommendations. However you can read the report for yourself, and provide feedback (via a survey, email, or discussion board) by June 5th, 2014.

Friday, May 2, 2014

Automating Chromebook Enrollment with Arduino/Teensy

If you find yourself enrolling large numbers of Chromebooks on your domain, and you don't have students to help, I've written an Arduino program that can expedite the process.

Because many Arduinos (and Arduino clones such my favorite Teensy) can act as a keyboard, they can be programmed to output keystrokes (and mouse clicks) when a button is pushed. In this case a button is connected to ground and pin 2 on a Teensy that is running the following code (this is also available on GitHub).

Edit: The code on GitHub has been updated to allow two buttons using a Teensy or a Trinket, with the additional button for inputting the Wi-Fi passphrase. I've included a demo video of the new version at the bottom of this post.

String email = "";
String password = "thisisaweakpassword";
const int enrolButton = 2;

#include <Bounce.h>
Bounce button1 = Bounce(enrolButton, 10); // 10 ms debouce

void setup() {
 pinMode(enrolButton, INPUT_PULLUP);

void loop() {
 if(button1.fallingEdge()) {enrol();} // call the enrol function

void enrol() {
 delay(50); // wait for 50 milliseconds before releasing those keys
 delay(2000); // wait for 2 seconds to get the enrol screen
 Keyboard.print(email);; //tab to get to the password field

When you hit the button connected to ground and pin 2, this will send the keystrokes Ctrl-Alt-e and your email and password for enrolling a Chromebook. You'll still manually connect to the Wi-Fi or LAN and click Accept on the licence agreement, but you could probably figure out how to automate that with a few more lines of code here (i.e. using KEY_TAB and KEY_SPACE).

Hopefully this will save you some typing and speed up the Chromebook enrolling process. Let me know if you try this.

Minecraft on a Dell Chromebook

This is what worked on a Dell Chromebook that I tried. It will likely work on other Chromebooks but YMMV.

In order to play Minecraft or use other Java-based programs on a Chromebook, you need to install Linux. However that's not a particularly difficult process thanks to crouton.

Unfortunately it requires the Chromebook to remain in developer mode, meaning you'll need to press Ctrl-d every time you boot it up. As well, is not supported by Google (it may cause hardware, software, or security issues) and may void your warranty.

Make sure you backup/upload any files that are stored locally on your Chromebook before you begin.
  1. Enter recovery mode by holding the esc and refresh keys while you press the power button.
  2. At the recovery screen, press Ctrl-d to reboot into developer mode.
  3. Every time you boot up the Chromebook from now on, you'll need to press Ctrl-d at the "OS verification is OFF" screen. If you "Press SPACE to re-enable" then it will erase the Linux install that we are about to do.
  4. Log in to the Chromebook as usual.
  5. Download crouton from
  6. Press Ctrl-Alt-t to open crosh
  7. Type shell, press enter, and you should be at a chronos@localhost / $ prompt.
  8. To run the crouton install script, type sh -e ~/Downloads/crouton -t unity
  9. It will take a while to run the script and download the files
  10. Answer any questions that the script asks you.
  11. Once that finishes, you can start Linux by typing sudo startunity
You're now running Linux, and you can install software such as Java to run Minecraft.

  1. While still on the Linux side of your Chromebook, press Ctrl-Alt-t to open a terminal window. You should see a prompt that is something like (trusy)username@localhost:~$  where you enter the following commands
  2. sudo apt-add-repository ppa:webupd8team/java
  3. sudo apt-get update
  4. sudo apt-get install oracle-java8-installer
  5. sudo apt-get install oracle-java8-set-default
  6. Make sure you type your password that you entered when setting up Linux, and answer yes to the question about the Java licence.
You can now run Java programs in the Linux install on your Chromebook, which includes Minecraft. If you'd like to use Firefox as a browser on the Linux side, it's as simple as opening a terminal (Ctrl-Alt-t) and typing sudo apt-get install firefox You can also install other Linux games, including the Steam platform.

To start Linux after rebooting the Chromebook (always with Ctrl-d), remember Ctrl-Alt-t then shell then sudo startunity

To switch back and forth between ChromeOS and Linux, press Ctrl-Alt-Shift-Back or Ctrl-Alt-Shift-Forward. Back and forward are the arrow buttons at the top left of your keyboard.

To undo all of this and go back to just a regular Chromebook, reboot and press the spacebar to re-enable OS-verification.

Wednesday, April 30, 2014

Flow Rate and Conservation: Water and Bytes

HWT Image Library
During my short shower this morning, the water pressure was a little low as a result of the water supply line relocation. Residents have been asked to reduce water consumption during this time.

Network bandwidth is similar to water flow, it's a somewhat limited resource. Soon all schools will have a 100 Mbit connection to Central, and there should be lots of bandwidth to the Internet from there. However despite continuing efforts by Tech Services to open up a bigger pipe, demand will often outstrip supply.

While a 100 Mbit connection is a decent speed, as more devices and users connect we need to be cognizant that it is for the entire staff and student population. Technical measures are in place to limit individual connection speeds, particularly on the schoolguest Wi-Fi networks, but there are only a certain number of streaming videos that can be watched simultaneously.

Part of digital citizenship education for students is discussion about mindful and appropriate use. For example you can remind them about using streaming music sites such as Songza, Grooveshark, or rather than having YouTube music videos playing while they work (video uses approximately 40 times as much bandwidth as audio).

Of course this will become a more pressing concern as more schools implement "bring your own device" (BYOD) and require students to use their devices for educational activities.

Wednesday, April 9, 2014

Check if Google Apps Users Have Logged in (Google Apps Script)

If you're using Google Apps for Education (with the provisioning API enabled) and have a list of domain users that you want to check if they've logged in or not, here's a quick Spreadsheet script you can try. It queries to see if the user has agreed to the terms or not. Of course you'll need to run this from an account that has admin permissions on your domain.

function onOpen() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{name : "Start Checking", functionName : "startLoop"}];
  spreadsheet.addMenu("Check Users", entries);

function startLoop() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = sheet.getActiveSheet();
  var maxRows = activeSheet.getMaxRows();
  var result = Browser.msgBox('This script will check ' + maxRows + ' rows worth of data from the currently selected cell.', Browser.Buttons.OK_CANCEL);
  if (result != 'cancel') {
    for (var i=0;i<maxRows;i++) {checkUser();}
  } else {Browser.msgBox('Okay, maybe some other time');}

function checkUser() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = SpreadsheetApp.getActiveRange();
  var newRange =  range.offset(0, 1);
  var username = range.getValue();
  var user = UserManager.getUser(username);
  var agreedToTerms = user.getAgreedToTerms();
  var newSelection = range.offset(1, 0);

I'm assuming that you're somewhat familiar with Google Apps Script and using it with Spreadsheets. Let me know in the comments if you need clarification.

Tuesday, March 18, 2014

Google Apps Script: Auto-Query FortiGuard Category List

In case someone is curious, here's a little Google Apps Script I put together for querying FortiGuard's Web Filtering Service site category list from a spreadsheet. It takes a URL from the selected cell in a Google Spreadsheet, and FortiGuard's category for that URL in the cell to the right of it.

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "pasteCategory", functionName: "pasteCategory"},
                      {name: "Say Hello", functionName: "sayHello"} ];
  sheet.addMenu("FortiGuard", menuEntries);

function pasteCategory() { //you can also set this to loop for the number of rows
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var range = SpreadsheetApp.getActiveRange();
  var newRange = range.offset(0, 1); //the cell to the right
  var site = range.getValue();//from the currently selected cell
  var category = getCategory(site);
  newRange.setValue(category) //paste in the category
  var newSelection = range.offset(1, 0);

function sayHello() {

function getCategory(site) {
  var urlToFetch = ""+site
  var html = UrlFetchApp.fetch(urlToFetch).getContentText();
  var startTag = 'Category: ';
  var endTag = '</h3>';
  var startIndex = html.indexOf(startTag) + 10; // add 10 to the index to get rid of 'Category: '
  var endIndex = html.indexOf(endTag);
  var category = html.slice(startIndex,endIndex);

Wednesday, March 12, 2014

EIPS Scratch Day 2014

Today was Scratch Day in EIPS. Approximately 120 students in grades five through twelve from eight different schools met in a gym at Bev Facey for a day of computational thinking. We challenged them to participate in various activities and explore resources related to Scratch. To get an idea of what happened, check out the event website and our presentation. After the opening remarks about the importance of computational thinking and human competencies, students had time to play with Scratch and learn from experimentation, online resources, and from others around them. A number of us commented on the fact that we would see students get stuck on a problem and put up their hand, but by the time we got there another student had already helped them out.

In addition to exploratory time, though, we also had a few organized challenges. Right before lunch, catered by Bev Facey Commercial Foods, we "live-action programming" where students were challenged to "program" algorithms for another group member to complete an obstacle course. In the afternoon, mixed groups of students were challenged to create something starting with "Pico was out walking in a hay field, when something very strange happened...". Students had the opportunity to present their creative examples of stories and video games using that character and situation.

This year's event was somewhat different from last year's. The omission of points for completed challenges eliminated the competition aspect and increased student collaboration. We also had a number of technology demonstration booths hosted by Gerald Chung's students, including Raspberry PiLeap MotionKinect Party, and the very popular Oculus Rift.

It was also different this year having about half as many students as last year. This was probably because we weren't as proactive and intentional about the planning process, but some teachers also commented that they were more intentional about choosing students to attend this year. The students that came were engaged, enthusiastic, and well-behaved. While it was nice to have a smaller event, next year we may partner with some other organizations, such as DiscoverE, to have a much larger event on the University of Alberta campus.

This event wouldn't have been possible without help from Technology Services, Bev Facey staff, and the teachers and administrators that brought students to the event. Particular thanks to Gerald ChungJen FerenceAaron Tuckwood, and Peter Barron for help with organization and logistics.

We're looking forward to doing this again. Stay tuned for more posts that include reflections from students and staff that participated in EIPS Scratch Day 2014.

Tuesday, March 4, 2014

Educating for a Posthuman Society

Thanks to recommendations by Netflix and a colleague, my wife and I have started watching Suits. It's a clever show with a protagonist who's eidetic memory allows him to practice law despite having not attended law school. We've only watched a few episodes so far, but it's already clear that this character's memory skills are not enough for him to be a great lawyer.

In a similar way, I would argue that the value of education is not in filling students with facts, but rather in helping them develop the tools to synthesize meaning. Computers are very good at remembering things for us, we need to educate students to accomplish things that humans are uniquely qualified for.

Furthermore, if Ray Kurzweil and others are to be believed, life-extension technologies may soon allow us (or our consciousness) to live forever. Google's Calico project is actively working on idea. We may need to consider what attributes and skills our students, and we ourselves, may need in that sort of future. If you're interested in more about this, start with the Wikipedia articles on transhumanism and posthumanism.

We often hear about educating students for jobs that don't exist yet and the accelerating pace of change, but we're still not sure what that looks like. Will technology become some sort of benevolent babysitter for humanity?

For now, though, I trust my colleague's recommendation more than the automatic recommendations by Netflix.

Monday, March 3, 2014

Educating for a Posthuman Society

Thanks to recommendations by Netflix and a colleague, my wife and I have started watching Suits. It's a clever show with a protagonist whose eidetic memory allows him to practice law despite having not attended law school. We've only watched a few episodes so far, but it's already clear that this character's memory skills are not enough for him to be a great lawyer.

In a similar way, I would argue that the value of education is not in filling students with facts, but rather in helping them develop the tools to synthesize meaning. Computers are very good at remembering things for us, we need to educate students to accomplish things that humans are uniquely qualified for.

Furthermore, if Ray Kurzweil and others are to be believed, life-extension technologies may soon allow us (or our consciousness) to live forever. Google's Calico project is actively working on idea. We may need to consider what attributes and skills our students, and we ourselves, may need in that sort of future. If you're interested in more about this, start with the Wikipedia articles on transhumanism and posthumanism.

We often hear about educating students for jobs that don't exist yet and the accelerating pace of change, but we're still not sure what that looks like. Will technology become some sort of benevolent babysitter for humanity?

For now, though, I tend to trust my colleague's recommendation more than the automatic recommendations by Netflix.

Thursday, February 20, 2014

a trip down memory lane to Switzerland

A colleague of mine recently mentioned the ThinkQuest site as a place for students to browse and create projects. Early in my teaching career I was asked to help "coach" a ThinkQuest competition team, and the team made it to the finals in Switzerland. There were three students involved, one from Salisbury where I was teaching, one from Taiwan, and one from Estonia. They were were great to work with, and it was a wonderful experience.

If you're interested, you can check out their creation here: The Learning Curve.

Monday, February 17, 2014

Comment Spam

It seems that comment spammers haven't figured out that their efforts are ineffective. They are still trying to post a paragraph (sometimes copied directly from the post itself) followed by a link to an unrelated website.

Usually I just ignore them and delete without reading, but since I'm usually careful to proofread my writing this one actually made me smile.

naturally like your web site but you need to take a look 
at the spelling on several of your posts. A number of them are rife with spelling problems and I in finding it 
very bothersome to tell the reality nevertheless I will definitely come again again.


The link has been removed, of course, and I didn't allow the comment to go live. However I just thought I'd share an example of comment spam.

Friday, February 14, 2014

Gamification Challenges

If you're interested in learning more about gamification, I set up some challenges for a session at Convention last week. I'm reposting them here. Unfortunately we won't have a leaderboard or group discussions though.

  1. Come up with a definition for gamification.
  2. Identify the difference between gamified and game-based learning.
  3. Consider how you think student motivation might be affected by gamified learning.
  4. Consider how you think learner self-efficacy might be affected by gamified learning.
  5. Decide whether or not to continue working on these challenges.
  6. Read the Wikipedia article on gamification.
  7. Do a survey of those around you to see what percentage of them play games (video games, board games, sports, etc.).
  8. Reflect and share how gamification might be similar to some things you've tried in the past.
  9. Discuss how gamification might affect student engagement.
  10. Investigate Csikszentmihalyi's concept of "flow" as it relates to games and/or learning.
  11. Find a peer-reviewed academic article on the benefits (or risks) of gamification.
  12. Discuss how gamification might align with Inspiring Education, High School Flexibility, and/or Curriculum Redesign.
  13. Read about Quest to Learn (Q2L), a public school in New York City.
  14. Find and share an example of gamified learning, such as the UofA's EDU210:
  15. Share online (social media, blog, etc.) an example of gamification, in education or some other field.
  16. Explore how "serious games" (also called persuasive games or applied games) are similar to and different from gamified environments.
  17. Check out "Games for Change", "", and "Play to Cure: Genes in Space".
  18. Brainstorm a quick and easy way you (or someone you know) can quickly and easily gamify something.
  19. Come up with a list of things to consider when designing gamified activities or environments.
  20. Watch a TED talk by Jane McGonigal, Gabe Zichermann, Seth Priebatsch, Ali Carr-Chellman, Tom Chatfield, or Mihaly Csikszentmihalyi.
  21. Read about some of the criticisms of gamification, such as Ian Bogost's "exploitationware", Jane McGonigal's "gameful design", or others who discuss dangers of extrinsic motivation.
  22. Have an extended conversation about why gamification might or might not be a good idea.
  23. Write about your experiences with gamification (either here or elsewhere) in your blog, journal, social media, or on paper.
  24. Come up with three pairs of statements in the form "I used to think _____, now I think _____.

Thursday, February 13, 2014

Simon Breakspear - Innovative Learning Environments

I've heard Simon Breakspear speak a couple of times lately, including at Convention last week, and I've been very impressed. Here's a YouTube clip of him talking about "How do the innovative learning environments get created?"

Monday, January 20, 2014

Projecting from an iPad or iPhone

A while ago I wrote about showing your iPad/iPhone on the big screen using iOS 6, but now that most people have upgraded to iOS 7 perhaps it's time for another post.

I you have an Apple TV (or a computer running Reflector) connected to your projector or TV, you can wirelessly project your iPad, iPhone, or iPod screen using AirPlay Mirroring. AirPlay will work from any Apple device (and some non-Apple devices), but the screen mirroring part doesn't work on some older devices.

To start, make sure you are connected to the same network as your AirPlay receiver (Apple TV or computer running Reflector).

Swipe your finger up from the bottom of the screen to access the Control Center. If there's an AirPlay receiver on the network, tap on AirPlay and select which device you'd like to AirPlay to.

Once you've selected an AirPlay receiver, you can turn on Mirroring if it's supported.

If you have AirPlay security enabled on your AirPlay receiver (either Onscreen Code or Password) you will be prompted to enter it.

When AirPlay is active, the top bar of your device will be blue, and you'll see the AirPlay icon  at the top right.

When you want to stop AirPlaying, swipe up from the bottom again, tap AirPlay, and choose iPad.

You can also look for the the AirPlay icon   in specific apps such as YouTube.

Tuesday, January 14, 2014

A Simpler Leaderboard

The other day a teacher was looking for an easy way to display a leaderboard for her students. You may recall a previous blog post describing a somewhat complicated (but cool IMHO) way that we set up a leaderboard for Scratch Day 2013.

Of course a leaderboard isn't all you need for a gamified classroom, but it might be part of what you want.

So again we'll use a Google Spreadsheet and publish part of it so that students will be able to see the "levels" that they, and others, have achieved, but they won't be able to see the points that you've awarded.

Create a new spreadsheet and name it whatever you'd like.

On the first line, label the columns "Name", "Points", and "Level". Then leave a blank line and put in the names (or pseudonyms) of the participants.

To the right of that (starting in cell D1), title the rows "Maximum Value" and "Level". Decide on the names for the levels and the maximum values, but you can always change those later.

In cell C3 (the third cell down in the "Level" column) paste in the following formula:


Then press enter and place your mouse cursor at the bottom right of cell C3 (where you just pasted the formula). Click and drag it down in order to fill that formula in for the rest of the column.

When you're done, it should look like this:

Now when you change the points value, it will automatically change the "Level". If you don't mind students seeing the "points" values then you can just share the spreadsheet with them as viewers and you're done.

However if you want to allow the participants to see the "levels" but not the "points", then you need to create another sheet that you can publish. Click the + sign at the bottom left to add another sheet.

Open that new sheet by clicking on "Sheet2".

In cell A1 of the new sheet, paste or type  =Sheet1!A1  and press enter so that cell A1 in this sheet will display the contents of cell A1 in the other sheet.

Again, click and drag from the bottom right corner of cell A1 to fill in the formula for the rest of the column. Do the same for cell B1, but use the formula  =Sheet1!C1  so that it will display the contents of cell C1 from the other sheet. Fill down again, and it should look like this:

Now publish just Sheet2 and share the link with your participants by posting it on your website or LMS.

Sorry, that was a little more complicated than I initially though, but you can do it. If you want to see the spreadsheet that I used for this post, click this link.

Let me know if it works for you.

Friday, January 10, 2014

setting up a MinecraftEdu server

If you'd like your students to be able to play (or work in) Minecraft together, you can easily set up a MinecraftEdu server. There is more documentation on the MinecraftEdu wiki, but I'll quickly go over the basics.

From the MinecraftEdu launcher, click the "Start Minecraft Servertool" button.

If a teacher password hasn't been set yet, it will ask you to set one. You can always change this later.

You'll then be given some options about what kind of world you'd like to create (or open).

For example "Generate a Completely Flat World" if you'd like student to build things without worrying about cutting down trees or hills.

Once you have started the server, you can see the information and change settings from this window. It also shows you the IP address that students should directly connect to in order to join your world.

Before you quit the server, remember to save the world.

I also highly recommend that you make a backup of your saved world. Copy the appropriate folder to a USB drive or a network location that is backed up. If MinecraftEdu was installed by EIPS Tech Services, saved worlds will be in C:\Program Files (x86)\minecraftedu\servertool\worlds\savedworlds

Of course if you want to try out a simpler process, you (or a student) can start a single player world and allow others to join by typing /publish in the Minecraft chat or by opening the game menu and clicking the "Open to LAN" button. Unfortunately this doesn't allow you to use many of the MinecraftEdu features.