Thursday, December 4, 2014

On Becoming a Google Certified Teacher

Image courtesy of +Kasey Bell 
I had the opportunity to go to Austin, Texas this week to attend the Google Teacher Academy. It was an intense experience, to say the least. Two long days of learning, sharing, and problem-solving, but that doesn't even begin to describe it. Trying to put it in words is like trying to keep a cat in the bathtub - it's difficult.

We spent our time working on defining and understanding a problem. Not just any problem, but one that's important to who we are and the challenges we face. I defined my problem with a "How might we..." statement, as set out in Stanford's d.School design thinking principles.

How might we create a culture of comfort with not knowing for educators in order to build empathy in teachers who are active facilitators of learning?

That's certainly not the most powerful way of saying what I want to say, but it fits the model. I'll be reworking this to better explain what's at the heart of my message. There are a few things that I feel are holding educators back when it comes to the challenge of integrating technology into teaching.
  1. It can be frightening to attempt something new that is untested.
  2. To cede control of learning to students is a novel concept for many great educators.
  3. Being vulnerable is something we do, but we do it privately.
I want to tackle this issue. I want to create a culture where it's okay to not know. Learning should be celebrated, and learning is messy at times. If we want to model the learning process, we need to be comfortable with the notion that we'll fail at times, in front of our students, and they'll learn about how to handle it when it happens to them, too.

An environment like that depends on a positive and supportive community. I strive to foster that atmosphere in my classroom, but not all areas of a school are like this. I tend to stay out of staff rooms, not because I'm anti-social, but because I don't like that it can become a place to air grievances. There's no safety in being vulnerable there (for me, at least).
Team #awesomesauce

So to tackle this, I'm going to build a safe place. I have my safe places. This blog is one of them, but I also have my community on Google+ and Twitter, and a network of friends I lean on when I have questions or face challenges. Not everyone understands the power that these spaces can hold, so I want to create somewhere that's got more freedom of expression. It won't be audited, it won't be tied to your presence online, and it won't reflect on you.

What it will do is connect you with ideas that can help when you've struggled. It will encourage you to fail forward, to learn, reflect, and try again. And it will ask you to offer support to someone else who might be feeling intimidated, frustrated, or even hurt by a failure they've experienced.

That's about as specific as I can get right now. Partially because I don't want to give things away, but also because I'm not yet certain how it's going to look in its final form.

Monday, November 17, 2014

Changing Things for the Better

A couple weeks ago, as I left my building to take my dog for a walk, a stranger came up to me and asked me if I knew where she could find a service station to help her with a flat tire. Since I don't know of any within walking distance, and I wasn't in any hurry, I helped her by changing her tire for her. We talked as I was helping her, and it turns out I wasn't the first person she'd asked, but I was the first person to help.

I know this is an odd way for me to start a post, since I usually write about really geeky stuff, but I found that it relates to how I approach a lot of problems in life. Recently I had to go through all of the training sessions I've done over the past year and fill out a form for each session. Rather than do it the boring way, I decided to write a script that will automatically fill it out for me, then share that with all the other trainers who need to accomplish the same task.

In both situations, I looked at the problem and the solution that was proposed, and felt like I could make things better. And I feel like that's been the motivation behind why I became an educator: because I honestly believe that I can make things better than they are right now. It's going to take time, work, and a good measure of frustration, but in the end it'll be worth it.

So I feel like I need to explain why. Why do I spend a lot of time (and trust me, it was a LOT of time) to create this big, complicated solution, when I could just do it the way everyone does it? I think it's the same reason I can't just be happy with a piece of technology as it comes in its package. I have this overwhelming urge to just get in there and explore how things are done, and to see if I can "hack" them to make them better.

My friend +Michelle Cordy put it best with her motto (which coincidentally is also her website): hack the classroom. Because it might be okay, it's the way things have always been done, but if we get in there and mess with things a bit, we might be able to make it a little better. At the worst, we'll end up knowing how things work, and why the way we're doing it is the most effective.

Thursday, October 23, 2014

Countdown to #GTAATX

I made it!

Those were the words that ran through my mind as I walked up the stairs to my home yesterday evening. I had spent the entire day checking my email over and over, waiting for news about my application to the Google Teacher Academy. When my phone beeped at 7:15 last night, I made it part way through the first sentence before I let out a whoop of joy. In public. If there had been more than half a dozen steps, I would have done the Rocky-Balboa-Run-Up-The-Stairs-Like-A-Champ move.

This wasn't the first time I've applied. I applied last spring, but didn't manage to get in. I think that's why I was so surprised: the caliber of people who get selected is incredible. I didn't dare jinx it by dreaming about what the future could hold. Now, that's all changed.

Image: Pixabay
I'm thrilled to be among the 50 teachers selected to take part in the Google Teacher Academy happening in Austin, TX this December. It's an honour to be among some of the most amazing people I've had the pleasure of "meeting" (either in person or online). To a non-tech-teacher, it's difficult to explain the appeal of the GTA, but as one of my fellow attendees put it, it's the golden ticket to go meet Willy Wonka, but for teaching.

What does this change?

I expect that I'll come out of this with two things: huge dreams of what education can be, and a network of people who can help me achieve the dream. There is so much that we could be doing, and we just need the vision and the "chops" (as my music teacher used to say) to get things to change. Little things. Big things. Fundamental things. I'm going to dream my biggest dreams, and then I'm going to figure out exactly how to realize those dreams.

The best part? I'm going to be dreaming with a group of talented dreamers. I'm going to be changing things with some of the most constructive disruptors in education. It's gonna be amazing.

Thursday, October 16, 2014


After much more futzing about, I'm happy to report that the #GEGMtl translator bot now works even when the spreadsheet is closed. It seemed like it would be trivial, but in fact it turned out to be harder than I thought. (That's usually the case when I sit down to write some code.)

The first big hurdle was a limitation of the language library that is included in Google Apps Script. It's powerful and built off Google translate, but there's no function to detect language. Since I wanted the script to fluidly alternate between English and French text, that was a requirement.

I tried the Google translate API, but after struggling with it for a few hours, I read the not-so-fine print that it's a paid service. Fortunately, a quick search revealed which has an option to call an API to discover the language of the text you pass it. It was a matter of minutes to get the code working for that. With a limit of 5000 calls per day, I think it will scale enough to start with. If it ever grows to the point where I need to look into other options, hopefully I'll have enough in my pocket to cover the expense.

The next task was to call the language service to ask it to translate the text. Pretty straightforward, but I kept mixing up the indexes of the arrays I was using. The debugger took care of sorting out that issue. By stopping the code at certain points I was able to see which index of the relevant variable was holding the value I wanted, and where I'd messed up.

The final piece of the puzzle was to get the translation to show as a reply to the original tweet. I figured out the parameter to use to get this to work, and I now can proudly tweet using the hash tag and it will work even when the sheet is closed.

The next goal is to create a version which will work as an add on or a web app. It will take a lot of work, since I don't know much about the other languages involved - jQuery and CSS. I'm working on it, but it's certainly a challenge.

Monday, October 13, 2014

Auto Translate #GEGMtl

I like to describe myself as an incredibly productive procrastinator. When I have something I absolutely must work on, I tend to find ways to distract myself with side projects.

Which explains why, four days before my application for the Google Teacher Academy in Austin, TX, I decided to tackle a project I'd begun a few times but always stalled out on. I'm the leader of the Montreal Google Educator Group, and I wanted to facilitate communication between the two main languages of teachers in Montreal. What that means, in practical terms, is that I wanted to have an app automatically translate tweets using the #GEGMtl hashtag on twitter. From English to French, and from French to English.

After about 3 hours, it was working. A bit. It would run for about three minutes, then give me an error that I needed to authorize it again. I was very frustrated with it, so I turned to my PLN to ask them for advice.

+Martin Hawksey helped me figure out some issues with encoding the calls to the Twitter API, and +John McGowan actually jumped into my spreadsheet and code with me to lend a hand. It was an amazing experience to have an educator from Europe and and educator from Asia help me on my little project. Some additional support from +Andrew Stillman helped me figure out how to call a translation API to detect the languages properly.

There's still work to be done. The app currently works, but only if the spreadsheet is open. I need to redesign it to run all the time. After that, I will need to build a web interface and publish it as a web app on my website. In the future, I may decide to make it an add-on for Google Sheets, but that seems unlikely since the number of people who'd want it is probably pretty limited.

Creating something like this took a lot of time, reading, searching, questioning, and experimentation. The first big struggle is deceptively quick to overcome, but it's those last few bugs that prove extremely difficult. Writing code is an exercise in persistence, patience, and practice. While I lack the latter, I'm quite happy banging against the keyboard until something works. Collaborating with people all over the globe just makes the experience so much more enjoyable!

Thanks to everyone who offered help. Without the support of a community of encouragement, I don't think I'd have as much fun trying to figure out why things aren't working.

Sunday, October 5, 2014

My #gafesummit Device Policy

I have a device policy for my #gafesummit sessions. It came to me right at the start of one of my sessions, and I've decided that it's how I want my sessions to run from now on.

If you have a device:
Image: OpenClipArt

  1. It cannot stay in your pocket. Take it out, turn it on.
  2. You need to use it.
  3. If you want to snap a picture, do it.
  4. If you want to tweet it out, do it.
  5. If you want to post to instagram, do it.
  6. If you want to look something up, do it.
  7. If you want to text your friends, go ahead.
The point is, if you have a device with you, I want to see it being used. You've got so much power and knowledge just sitting there, ready to be harnessed. It shouldn't be relegated to your pocket. Bring it out, and get more out of your learning by using it.

That is all.

Saturday, October 4, 2014

Staying Young Without Being Childish

I recently had a conversation with my father about what smart phone he should get, and what plan, and so on. He told me of his interaction with his carrier when asking them about plans, and said that he had steered the conversation in the right direction by saying "my techie son, who knows about all this stuff, told me to find out..."
Image: OpenClipArt

I've always known I wanted to change the world.

I was touched by this sentiment for a couple of reasons. First off, it's an odd thing when I realized that I was now giving advice to the man who has been the source of advice for my entire life (and continues to be). Secondly, I was happy that my dad wasn't hesitant about diving into the whole smart phone thing, he just wanted to get the information he needed.

Image: OpenClipArt
I've always known I want to change the world. People laugh when I tell them that's my goal, but I'm serious. I want to change things. Maybe not start a revolution, but I want the world to end up a little better off for my having been here. And now I know one of the pathways that's going to take.

A lot of people whose lives I've touched have told me that I helped them try something new. My enthusiasm for a challenge reassured them. My willingness to help, to support, to share, and to appreciate them for their expertise is something that gives them confidence. Even though I can get a little geeky at times, and I'm often mocked for how much I enjoy being a geek (usually it's me mocking myself), I like knowing that I've helped teachers be adventurous. To get out of their comfort zone and try something new. To not be afraid to look foolish. I look foolish a lot, and I figured out the secret: if you enjoy it, looking foolish is actually quite fun!

If you're not afraid to look foolish, you stop looking foolish.

And that's the big secret behind staying curious. If you're not afraid to think that you look foolish, you stop looking foolish. Being a kid means looking at the world and thinking "Wow! Isn't that amazing! It's just so exciting!"

I have the opportunity to do a lot of professional development. I enjoy it, and I think that I can help teachers become better. Not because I can tell them what they're doing wrong. Not because I can tell them what they should be doing. I try to never do the former, and I hope that I can help them figure out the latter. What I want them to do is to leave with the feeling that it's okay to not know. Beyond that, it's not just okay, it's actually exciting to not know something, because that means you've got the opportunity to learn!

Saturday, September 13, 2014

Trick Out Your Google Site

Read Sites Tips and Hacks

Some time after Christmas, I decided that I needed to get my act together and really figure out how to use Google Sites. I needed a professional website, and I needed to be able to speak from a position of experience when talking about all of Google's tools, so I set out to master Sites.
Image: Wikimedia Commons

My first version was, admittedly, pretty basic. Nothing fancy, maybe too many colours, things weren't as organized as I'd wanted. I had a plan in mind, but I was having some trouble figuring out how to get to where I wanted to be.

The basics were pretty easy to get the hang of. Once you know where to look for things, it's pretty simple to start getting things to work the way you want. But I quickly realized that there were some limits to sites, and I wanted more.

Fast forward a few months, and I've got some experience under my belt. I've built (shameless plug) to be a hub for resources, thoughts, ideas, and to support and extend what I began with this blog. I've also put together to serve as a resource for the Twitter chat I help moderate (yes, that's another shameless plug).

When I showed them to my friend +Tanya Avrith , her comments were incredibly positive. I think the nicest thing she said was "It doesn't even look like a Google site!" This was a compliment because, if you've spent time on a Google site, it has a certain look and feel. It has typical elements, and there are always things you won't find on a Google site.

I decided to document some of the things I've tried, learned, or implemented on my site. It's in keeping with my open source philosophy that I share how I do what I do. So I started to put together a Google Doc to collect what I've done. It's now 19 pages later, and I still have a few things I want to add (like using Google Webmaster Tools).

If you're interested, take a look at the document. It will keep evolving as I continue to learn new things.


Wednesday, September 10, 2014


If you haven't heard about the issue of Net Neutrality, you need to get reading. I'm sorry if that sounds harsh, but this is a critical issue to education, democracy and access. If we lose this battle, corporations will have power over content delivery, and we will lose the freedom to publish, and the access that the internet has facilitated since its inception.

Cable companies want this to happen. They want to charge for a faster connection. Here in Canada, they're already doing this to consumers, but now they want to double-dip and charge websites as well. If this happens, get used to seeing that icon up there. A lot.

I don't care where you live - if you're online (and if you're not, how are you reading this?!) then this will affect you. Show anyone and everyone who will listen, government or not, that this is important. I want my children to grow up in a world where freedom of speech and freedom of access to ideas is supported. Corporate power shouldn't extend to what could effectively result in censorship.

Friday, September 5, 2014

The First #GEGMtl Meetup

I can't believe it's already been a week since our inaugural meet up of the Montreal Google Educator Group. It was a great time, and I was thrilled to see the familiar faces that I had missed all summer! In all the fun, I completely forgot to take any photos (oops!) so I'll try to paint you a verbal picture.

We mostly chatted about what we had done over the summer, what was coming up for the school year, and reconnected over a cup of coffee. I had the chance to share what I've been working on with Learning Bird, and to give members a sneak peek at what's in the works for the next big release. I can't reveal much here, but it's exciting.

I also had a chance to talk with +Brent Callahan and +judith white about Smarty Pins. This is a really fun geographic trivia game, but they were quick to point out how it could tie into teaching and learning in social studies. Imagine a trivia game where the questions came from history and geography teachers all over the world! Questions that are tagged not only with a location, but also with a date, with relevant cultures or societies, or event with time periods. Imagine a game that students could play that teachers could tailor to their current unit. Trivia questions that are focused on ancient Rome, or urbanization in Latin America. Imagine a date-range slider that would allow teachers to specify the time period they wanted to focus on!

I know quite a bit about using Google Apps for Education, maps, forms, spreadsheets, and I know a few people (like +Chris Webb ) who are utterly brilliant. I have no doubt that given the time, we could come up with something similar. However, what I really want, and what I'm trying to accomplish, is to have this be rolled into an education-specific version of Smarty Pins.

How cool would that be?!

For our next meet up, I'm looking forward to sharing our first impressions of the school year, the challenges we face (and in some cases, face over and over), and how we can address them in new ways. I have it on my list to get better at writing Apps Scripts, and hopefully I'll be able to create an add-on before the end of the school year. Members of the Google+ community will get a sneak preview and hopefully will be able to help me beta-test it.

Until next time, thanks everyone for coming and making back-to-school a chance for me to catch up with friends!

Tuesday, August 12, 2014

Images in Calendar Events

I recently tried to figure out how to get an image to be a part of a calendar event. In the course of doing some research, I discovered that developers can use the Calendar API to create events gadgets with custom icons and images attached to them. However, this would probably require writing some code, and I didn't have the time or energy to devote to doing it properly. I was looking more for a quick and easy solution.

Have you ever had one of those moments where you realize the solution has been staring you in the face all along, and you've just been too thick to see it? That happened to me today.

Calendar descriptions support HTML. That means that you can put things like links into the description of the event, and when viewed on a public calendar, the link will work. Your own calendar will show the code itself, but the public version will execute the instructions provided by the code.

To do this, you'll need to know a couple of things:

  1. How to upload and host an image on the web somewhere.
  2. The URL for the image you want to include.
  3. How to create an image tag in HTML.

    1. How to upload and host an image on the web somewhere:

    You can use a service like DropBox to host your file and generate the link pretty easily, but anyone who knows me will know that I'm going to do it through Google. You can host images through Google drive, or you can create your own graphics. Create a Google drawing of what you want, then click file - publish to the web. Copy the URL it gives you.

    2. Get the URL for the image

    For my purposes, I was using an image that I had already put on a website, so it was a simple matter of right-clicking the image and choosing "copy image location" in Chrome browser. Your method may vary, depending on how you've uploaded the image. Basically, you're looking for the web address of the image that starts with http://... Of you're using a Google drawing, you've already got the URL you need.

    3. Create the image tag

    HTML uses a pretty easy syntax for tagging an image. You will need to add the following code, substituting the image URL for your own.

    <img src="">

    That's all you have to do. When you look at your calendar event in your Google Calendar, it will show the code. If you navigate to the public calendar, when you look at the description of the event, the image will appear.

    Wednesday, August 6, 2014

    SMBSD #gafesummit Backchannel

    Check out the backchannel for the SMBSD gafesummit here. And sign up for Twitter!

    Friday, July 25, 2014

    One Word Form Responses

    Want a one-word answer to a Google Form question? I do.

    But I have trust issues. That is, I don't trust people to follow instructions on a form.

    Here's a quick hack for Google Forms when you want a one-word answer, but you don't want to restrict people to a multiple choice or choose from a list option.

    1. Create a question with a text answer.
    2. Turn on data validation.
    3. Choose the text option.
    4. Choose the "does not include" option.
    5. Type a single space in the box.
    This will check for any spaces, and kick back an error if the user has entered more than one word. Easy as pie.

    Now excuse me, but I think I need to go eat some pie.

    Tuesday, July 15, 2014

    "Free Time" is a Lie

    Free time in my life is illusory. I suspect it's the same for teachers all over the world. I have a problem with the term "free" time, in both senses of the word. Adjective (free as in speech) and adverb (free as in beer) ideals of time as being unconnected to context or intent irk me. Here's why:
    1. My time is valuable, no matter what I'm doing. Work, play, sleeping or daydreaming, I'm always using my time, even if it might appear that I'm wasting it (yet another concept I'm not a fan of)
    2. I'm always spending time. How can you spend something that's free?
    3. Time that I'm not actively engaged in a task directly is usually spent on supporting that kind of time, whether it's commuting, eating or sleeping, it has a purpose.

    I find that free time is like extra money.
    I have lots of plans for both, but I don't think I've ever had any of either.

    So let's stop talking about free time as if it's something one can posses, okay?

    Monday, July 14, 2014

    Failure: We're Doing It Wrong

    "You shall not pass!"
    I was watching my daughter today in lego land. She built a tower using these really cool, large size rubber bricks. She was building a tower, trying different combinations and configurations of bricks. The interesting thing was that she was engaged in it so much that whenever something didn't work, she took it apart carefully and restarted, trying a different strategy.

    I was proud to see her so intent on her task amid the chaos of children running around, and it got me thinking. Failing isn't a terminal diagnosis. Messing up, making mistakes, and learning from them is a skill in and of itself. Having the confidence, persistence and focus to continue even in the face of obstacles is something that needs to be learned (and it can be taught).

    What needs to change in our schools so we can foster this type of attitude? 

    How can we get kids to see the value in continuing to work at something when they haven't had any success yet? I don't think it will be easy, but I don't think it's impossible, either. We need to find ways to get kids engaged in difficult or challenging tasks that they want to do.

    Get them hooked in something they like. Show them the value of persistence and hard work. We should never have to say that something isn't good enough yet, or that it needs more work before they're done. We should find ways to be standing aside and getting our kids into things that are challenging and rewarding. Sports programs. Maker clubs. Reading or writing clubs. Dance troupes. Ultimately, the medium isn't as important as the message:

    You can do it. It might not be easy, and you might fail. That's okay. Don't let it stop you. If you can't do it yet, that means you need to put in a little more work. Solve some problems. Try a different strategy. Try again. Think about it. Keep at it until you get it.

    Thursday, July 10, 2014

    Host Files in Google Drive

    This is something I came across recently, and I think it's a pretty cool little "easter egg" that's a part of Google Drive. You can create a public folder, and anything you put into that folder will have a live URL, which can be useful for linking, hosting files, and so on. This comes in especially handy if you want to use those images in other places on the web, but have one master copy. Any changes made to the master will automatically be transferred to all its locations.

    1. Public Folder

    First, you'll need to create a public folder in your Google Drive. That's pretty simple: create a folder, then click on the sharing button, and share it as "public on the web."

    2. Folder Key

    The next step might sound confusing, but it's actually not that challenging. You need to get the folder key of the folder you just created. In Google Drive, navigate so that you're looking in the folder you want, then look at the URL in the address bar. The folder key is made up of a bunch of nonsense characters that are the last part of the URL, directly following /#folder/
    Copy the folder key by highlighting it and pressing Control-C (or Command-C on a Mac).

    3. URL

    Now comes the easy part. Your folder already has a public URL. To find it, type in and then paste your folder key directly afterwards. You should end up with something that looks like

    Not all file types can be hosted this way. Images, website files (html, xml and javascript), and possibly videos (I haven't tried yet). You can click on the link above to see the folder I created and shared for this blog post.

    Monday, June 30, 2014

    Why I'm a Google Fan (but it's okay that you're not)

    A while ago, I wrote a three-part blog entry about why I'm not an Apple fan, but it's okay that you are. After the past couple of days, I wanted to follow it up with why I'm a Google fan, but it's okay that you're not.

    I wrote a post about running Android on a netbook. I'm actually writing this on the netbook, using the Blogger app. It's fast, with the keyboard it's pretty easy, and with Android the netbook is running smoothly. Doing this stuff is not for the faint of heart. There are a lot of cool things you can do with Google's tools, and I've found that with a bit of research, you can take things to a higher level. Send emails from your spreadsheets, send and receive from multiple email accounts all through one gmail, create and apply custom themes in Slides, and lots more (check out the resources section of my site for more)

    The even better part is that pretty much everything is designed to be published and shared easily. That appeals to me , because having one of my ideas grow and evolve beyond what I envisioned is a huge compliment. Because it's all designed for sharing and building, the work that other people have put into it (and published on sites like can help me, too. Give a little, get a lot.

    But it's not always easy. 

    It has taken me months to get comfortable enough with Sites so that I can get it to do things the way I'd like, and I still can't do things like edit the header HTML, so Twitter cards won't work for anything except my blog. I'd love to be able to set a time-limit for forms, and restrict each of my students to submit only one time, but that's not yet possible. I want a lot of live-updating features that are the hallmark of docs, sheets and slides to transfer to other products like Scripts or Sites. It's not perfect, but it's constantly improving.
    Keeping up with those improvements and changes can be a challenge. As soon as you get used to one tool or procedure, another one comes along that might be better. If you don't enjoy trying out new things (when it comes to technology, I really do enjoy it) then it can be daunting. Especially when we find out about something new and exciting, but don't have the chance to experiment with it yet (I'm talking to you, Google Classroom).
    Image: HoustonDroids

    So if you're not as excited as I am about something new, don't feel bad. If your eyes glaze over when someone says just write a little bit of code, that's fine. If your blood pressure skyrockets as soon as something goes wrong with technology, relax. You don't need to be a hardcore geek, and if you're happy with your iStuff, that's cool with me. But please don't try to explain to me why it's better, because I have different preferences. I actually want to be able to break stuff. Because with every opportunity to break something comes the opportunity to make it better. Embracing this take a sense of adventure, a childish naïveté about the good inherent in the world. If you're a technology optimist, you'll see openness as the possibility for improvement, and not as a potential pitfall.

    I like having the option to make mistakes trying to do something new and creative. I'd like to be able to mess up (and mess up royally) as I try to change how my students learn, in ways that a company's research and development team didn't have to anticipate and build into the product. I don't mind looking like a fool when I'm trying to change the world, because when it comes right down to it, we all make mistakes. I'll make my mistakes as I work towards innovation in education.

    Where will you make yours?

    Saturday, June 28, 2014

    Android Netbook

    Yes, you read that right. Android, on a netbook.

    Image: Wikimedia Commons

    To be more specific, Android 4.4 on my old, beat up, hand-me-down, "here, take this because it doesn't work any more," Acer Aspire One ZG5 netbook. From 2008. Take a look at the specs if you want, but rest assured, it's old, slow, but has a lot more storage than a typical phone or tablet.

    There are ports of Android versions from 2 all the way up to 4.4 available from the Android x86 site. I've tried 2.4, 4.0.4 and now 4.4, which is currently running well on my netbook. The really nice thing about this (and most versions of anything Linux-based, including Chromium) is that you can run this directly off a USB key without installing it to the hard drive. This is useful for test-driving it before you take the plunge and fully install it.
    Image: Maple Electronics

    There have been a few quirks I've run into.

    One is that the screen sometimes rotates on its own, or when told to by an app, and you need to use a key command to get it to go back to regular orientation. Control-F9 (or F10 or F11 or F12) are the commands to tell the screen what orientation to use.

    Another issue is that live wallpapers don't seem to work. I get a long period of a static image (no, not static like an old TV, static as in not dynamic), followed by a sudden image change. Not a problem, but something to be aware of.

    The power button is used to lock and unlock the screen. Depending on the model of netbook, it may also support powering off the device. However, on mine, I needed to do the following to shut it down:

    1. Press the key command Alt-F1
    2. At the text prompt, you type reboot -p
    3. Press enter, and watch as the device rapidly powers off.
    4. Bask in glory. (optional)

    The last issue was a bit more tricky to troubleshoot. I was unable to get the installation to work on either ex2 or ex3 partitions. I used an NTFS file system, and everything seemed to work properly. There is a limit on the size of the partition that you can create of 2GB, which is pretty small. I believe there is a way to expand this, but I still need to investigate and experiment further. EDIT: Since the first writing of this post, I have solved the problem. I used a USB with GParted installed (created using the LinuxLive USB creator tool) to reformat the entire hard drive as ext3. I then reinstalled Android, and used the Android installer to format as ex3. The installation worked, and now it shows 110GB of free space (by far the most free space I have on any of my Android devices).




    More Information:

    Friday, June 20, 2014

    Twitter Cards and Google Sites

    For the past few weeks, I've been procrastinating remarkably effectively. I have a habit of putting aside time-sensitive work and focusing instead on some side-project. I find it an incredible way to avoid doing work that needs to be done, yet at the same time not feeling guilty for wasting lots of time. I suspect this is an explanation of why I have my own set of motion-controlled lights that are connected to my stereo...

    One of the side-projects that grabbed hold of my attention like a bulldog with a hamhock was the idea of getting Twitter cards set up with my website. For those of you who don't know, I'm very active on Twitter (I help moderate the #cdnedchat weekly chats, and I interact with educators from around the world).

    The bad news is that, as of the time of writing, there is no way to edit the HTML header information in a Google site. And before I get blasted with comments saying that you can have a custom header no problem, please be aware: the header image and the header HTML are two separate and distinct parts of a website. Header image, no prob. Header code, no dice. Seems like Google wants to avoid me getting in there and breaking my website.
    However, there isn't the same restriction on a Blogger blog. And it just so happens that I use Blogger. Hooray! I found a very helpful post on how to integrate Twitter cards to your Blogger. And this is actually better than I had hoped: each blog post will get its own custom Twitter card, generated from images and search descriptions you include when you write them.

    Image: Wikimedia Commons
    I did, however, modify the code just a little bit. I wanted to make sure that the Twitter cards would work for all my posts, not just new ones where I've taken the time to enter a search description and proper images. A couple of statments added, and everything seems to work. Now to wait and see if Twitter thinks I did it right.

    Saturday, May 10, 2014

    Google Classroom

    Earlier this week, Google announced the upcoming release of Google Classroom. Details are sketchy so far, but it promises to do a lot of the tasks that have been arduous to do manually, and have been addressed by scripts like gClassFolders. Sharing folders, creating assignments, garnering feedback, and providing feedback.

    I'm very excited. Within minutes of discovering the release, I signed up for an invitation to try it out. I'm eagerly awaiting the day when I get the chance to try it out for myself.
    Image: OpenClipArt
    But what will this mean for script developers like New Visions for Public Schools? Or for companies like Hapara? These tools have been developed to address these needs, and in my experience work quite well. Sure, using scripts can be more difficult than using the Teacher Dashboard, but then, I've always been interested in that kind of stuff.

    I see this move as having both benefits and drawbacks. 

    Until Google Classroom is released for all Google Apps for Education domains, I don't think it will gain a strong foothold. I've seen tools and technology unused or under-used because of the unavailability or poor quality of instruction available to educators. As a community who plans ahead, educators will likely take some time to get a feel for how the tools work before jumping in with both feet. And that's a good thing; we are tasked with developing learning environments that support and extend student understanding and nurtures curiosity. Frustration with new tools that don't work as expected can be more damaging than holding off until the tools are understood.

    I'm an early adopter. I've always been enthusiastic to try out the newest toys, experiment with (and sometimes on) my class, and to learn from mistakes as I make them. I'm currently working on scripts that will tie Google Drive and Google Sites more closely, since I saw a need and felt that I could and should address it.

    So within the new ecosystem of Google Classroom, where is the room for educator-innovators? In the Google+ Community for Apps Scripts for Education - Builders and Users+Andrew Stillman asked the following question: "How can Google, the non-profit orgs, districts, and teachers combine efforts to ensure this sharing can continue and be well-enough rewarded so that we can attract and retain talented contributors to this alternate model to the edtech startup incubator?"

    I'm extremely curious to see what the future holds. There are currently 2 880 members in the G+ Community (at the time of writing), and I'm confident many of them are curious, too.

    Will there be room to support this small-but-growing community of EdTech Innovators?

    I hope so.

    Monday, May 5, 2014

    Transferring your Site out of your Domain

    In the near future, my organization will be transferring Google accounts to a new domain. This will help streamline our organization, keep everyone within the same sphere (right now there is a division between faculty and administration), and mean that work that has been done within our domain needs to be migrated to the new accounts.
    Migration can be a bit less chaotic than this.
    Image: Wikimedia Commons

    At the time of writing, Google Takeout currently supports 19 Google products, which will undoubtably help with the transition. LifeHacker has a good instruction manual for doing this (scroll down to the bottom to see how to use Takeout in particular).

    However, Google Sites does not appear on the list. This could be a problem, since we have started a long-term project of using Sites to create digital portfolios for students.

    Image: Flickr user Martin Lafrance
    I have put together a short document outlining the process of transferring a Google Site outside of your domain. Please keep in mind that links to items hosted in Google Drive will probably need to be updated once you've migrated your Drive data to your new account. This is where keeping your stuff organized will really help. Use the settings options for each embedded item or linked item, and choose the version hosted by your new account to configure things properly.

    Google Takeout can help your migration of Google Drive between accounts at different domains. This might be easier than trying to make copies of everything manually (in fact, I'm confident that it will be easier). Sites just requires a bit of manual manipulation, but it is certainly possible.

    Thursday, May 1, 2014

    Getting rid of a virus in Chrome

    Okay, I just wanted to get your attention with that title. It's not really a virus. Rather, it's unwanted pop-up ads put into Chrome browser by an extension or theme that I just couldn't seem to get rid of.

    Here's the scenario: one of my students showed me that every time she opened Chrome browser, a bunch of pop-up ads cluttered up her screen. There were ads on both the left and right sides, and one at the bottom. There's nothing that irritates me in quite the same way as intrusive unwarranted pop-ups that are difficult to remove. There's just something about it that gets under my skin.

    So I started investigating. If you right-click on anything in Chrome browser, you can choose to "inspect element." What that will do is show you some of the actual code that's going into what you're seeing. This turned out to be useful (and it wasn't the first thing I tried; it was the first thing that worked), since it showed me the source of the ads: something called Superfish. Apparently it can get worse that what my student was facing (I'll be sure to let her know just how lucky she was).
    This fish is really not that super.

    This is apparently something that gets piggybacked in on other Chrome extensions and themes. I had checked all of the student's enabled extensions and themes, and tried to remove all of them. Unfortunately, the theme causing the problems ended up being very persistent; it didn't want to be disabled, deleted, or tinkered with in any way.

    I tried signing out. I tried deleting the Chrome preferences file (an old OS X trick that sometimes works). The problem is that Chrome associates your preferences with your profile, not with your computer. Okay, that's not really a problem - it's actually one of the things I love about Chrome. It just means that treating this the same way I'd try to treat a computer virus wouldn't work.

    What ended up doing the trick was opening up the Chrome settings. At the bottom of the page, there's a link to show more advanced settings. Clicking on that reveals more options, and scrolling down to the bottom of that window reveals the magic button: "Reset browser settings." This warned me that I'd lose all my bookmarks and extensions (but that was kind of the point, so I didn't mind). I did it, then had my student sign back into Chrome once more.

    But, lo and behold, it didn't lose all her bookmarks. It did disable all the extensions, but by this point I had gotten rid of everything, so that wasn't an issue. But it solved the problem! Hooray!

    I hope if you face a similar situation, this bit of insight might help.

    Tuesday, April 22, 2014

    Conditionally Formatting Entire Rows

    A few weeks ago at the Ontario Google Apps for Education Summit, I lamented that there currently is no way to apply the conditional formatting to an entire row based on the contents of one cell within the row.

    If that's a bunch of gibberish to you, picture this menu in your spreadsheet:

    You've got a spreadsheet with several columns. Perhaps a lot of columns. Maybe tens of columns, in fact. And you're using conditional formatting to visualize the data quickly and in a meaningful way. If you're not sure what conditional formatting is, here's a little primer. Basically, you set up rules and you can change the cell's background colour or text colour based on the contents of the cell.

    But sometimes I want an entire row to change based on the contents of a column. For example, flag every row where the last column is less than 80%. That way, I can look at the left-most column without worrying about scrolling to the right to check the cell. Sure, I could just freeze the left-most column and scroll right, but what do I do if it's not the left-most column I'm interested in? Or if I'm conditionally formatting the left-most column and want to look at the right side of the spreadsheet?

    So I spent the last little while creating an Add-on that will take the formatting from a column that's been conditionally formatted and apply it to the entire row. If your data changes, run the add-on again to update the formatting.

    It took some time, since I had to learn how to generate a User Interface, store script properties (so that it remembers which column you've picked), and some other stuff. All in all, it was a great learning experience. I can't overstate the help I got from the Google Developers App-Script help pages, the Stack Overflow forums, and the Google+ Community of Script Builders and Users.

    I have submitted it as an Add-on, but there are certainly changes that will need to be made before it's ready for public consumption. Until then, I'll continue playing with it, tweaking it until it does exactly what I want it to do, and I'll be sure to update when it's available for everyone. If you want a sneak-peek, you can copy the code and paste it into the script editor to try it out for yourself.

    Tuesday, April 8, 2014

    My Goals for the Future

    After attending the Ontario Google Summit, I have realized a few things that will impact the training that I will be developing and delivering in the future. Every event that I attend, I learn something. Whether it's through attending the sessions given by an amazing presenter, or through reflecting on my own teaching and learning practice, I always come away knowing more than I did going in. This reflection helps me become a better teacher.

    Here are some of the things I vow to do (or continue doing):

    Less direct instruction.

    I want to have my learners spend more time doing and less time listening. I love hands-on learning, and I believe it is one of the most effective ways of teaching and learning.

    Break lessons into smaller pieces.

    I tend to bite off more than I can chew. Covering all the cool, interesting, or unique applications of technology tools is difficult to do in a one-hour session. I will break my sessions into smaller pieces and focus on beginner, intermediate or advanced applications.

    Stay focused on pedagogy.

    Teaching the tools is important, but we need to know why we should be using the tools more than how to use them. Figuring out how to use a tool is as simple as doing a Google search and looking up instructions. Knowing how to apply that knowledge to support student learning isn't as simple.

    Provide links to support.

    This goes with the idea that pedagogy is important. Giving links to facilitate independent and continual learning is the way to set people up to take what they've learned outside the session, and to continue growing.

    Geek out.

    I'm a total geek. I love doing what I do, and I enjoy unleashing the awesome power of these tools. I'm going to write scripts, develop powerful tools for automation, and share all of that with my fellow geeks. Spreadsheets to do cool stuff, writing scripts to make life easier, or just bouncing ideas off one another. I'm going to keep at it. Sometimes I just need to remember that it can be intimidating to some, and to restrain myself at times. Hopefully not too much.

    Thursday, April 3, 2014

    If This Then That test post

    I am currently playing with the fantastic If This Then That web tool to try to integrate my Blogger and my Google Site more closely. This is a test post to see if IFTTT will automatically add this post to a spreadsheet row in my Google Drive. You can see the recipe here.

    Ideally, I will then write a small script to automatically generate a new announcement page on my Google site. So it's a two-part process: first, IFTTT will update a spreadsheet with the blog post, then the spreadsheet will create a new announcements page in my Google site.

    My reasoning behind it is this:

    1. I would like to be able to announce something here on my blog, and automatically announce it on my website, too.
    2. I want my Google Site to be as up-to-date as possible without adding extra work.
    3. I'm the efficient sort of lazy. I won't decide not to do something because it's too much work, but if there's an easier way of doing it, I'll try to figure that out.
    So, if you haven't learned anything from this post, don't worry. It's mostly just a test, but it's also a preview of something I'm working on. I will update you when I make some progress.

    Wednesday, March 26, 2014

    Doodle Yourself with a Google Drawing

    I've been working with my students on writing a biography, and we will be transitioning into writing reflections. As a part of this work, I've asked them to create a self portrait using Google drawings. We will be using links to make the drawings interactive, then using them on a Google site.

    As a part of the process, I've created a short video to describe how to create a cartoon version of yourself. This is a method that I experimented with and learned through trial-and-error. Apologies to graphic artists everywhere!

    If you're interested in creating your own self portrait, post a comment and share your creation (if you dare). Don't worry if it looks horrendous when you're 90% done - it's supposed to. Just before you finish, you'll look like a clown that got into a brawl, but don't worry. Stick with it, and you might be surprised by what you end up with.

    Good luck and, as always, enjoy!

    Tuesday, March 18, 2014

    Social Justice and the Digital Divide

    As a technology enthusiast, I often lament over the high cost of the latest and greatest toys. That new smart phone? I want one. The next generation tool? Sign me up. The software that's the latest buzz? Gimme!

    However, despite not using my financial resources to afford the latest tech, I can't say that I'm deprived. I own a lot of technology. Some would say I have an overabundance. I mean, does anyone really need to run three routers on their home network? Probably not, but I do.

    Image: Madame Justice by
    W4nderlust (via deviantART)
    And here's why: I like to tinker with technology. I tell all my friends and family that if they've got a piece of technology that's old, broken, or outdated, that they should give it to me instead of throwing it out. I can resurrect technology and put it to use. At the very worst, I'll end up breaking something that's already broken or useless. So yeah, I do have a lot of technology, but most of it is old. Most of it cost me nothing, or very close to nothing. I can fix quite a lot of things, and I like to think I'm doing my part for the environment by extending a product's life cycle.

    But what about those who aren't willing or able to fix something? Well, that's easy, right? Just buy new stuff. Things that are under warranty. That's what most people do, right?

    Now think of people who struggle to put food on the table. 

    Those who have to choose between an iPod or paying the rent. What are they supposed to do? Just go without? With the United Nations declaring that internet access is a fundamental human right, how can we justify the existence of the digital divide?

    This leads me to consider the issue of social justice. I'm proud to say that I live in a society in which every citizen, no matter their income, has certain basic rights. The right to health care. The right to an income. The right to participate in government. We, as a society, place a premium on certain rights, to the point where we all agree to share the cost on behalf of those who can't otherwise afford it.

    But what about technology? Is that a right? Do we value access to information? Sure, there are computers in public libraries, but is the process of signing up for a time slot at a nearby building to sit on a shared computer the same thing as carrying a record of the world's combined knowledge in your pocket? I would argue that no, it isn't. There is a portion of the population who are at a disadvantage in many areas of life. Access to information empowers the individual, and those people who are already at a disadvantage are getting left further behind.
    The Digital Divide
    From: 9th World Telecommunications/ICT Indicators Meeting

    So how can we change this? 

    I believe strongly and passionately that education is a vehicle for social change. We can change the way the world operates by teaching the citizens (and future citizens) that we value social justice and equality. We can narrow this gap. But we need to be the model for social justice. We need to put our money where our mouth is, so to speak, and show the world and the students that we're educating what we believe, not perpetuating the status quo.

    And I don't believe we need to take away from the "haves" in order to provide for the "have-nots." What we need to do is to think of creative solutions. Look for unique ways to solve the problem. Access to technology can be an issue, so let's find technology that's unused or underused and change the way it's being implemented. How many schools have classroom computers that sit idle most of the time? How many out-of-date computers are there in people's basements? How many drawers hide a smart phone or iPod touch that's still functional or can be easily repaired?

    We need to look for solutions in new places. 

    One place that I believe we can find solutions is in other problems. E-waste can provide technology, while at the same time preventing or delaying its eventual destiny of sitting in a landfill. If we are the teachers of critical thinking and creative problem solving, then we need to be critical of our current social practice, and think creatively about how to solve the problems inherent in the way things are currently done.

    So the next time you see an advertisement for the latest piece of tech, and you think "Oooh! I want it!" please consider how your behaviour affects society. I know that things I do aren't always in the best interest of those how are least fortunate. I like to believe that much of what I do will benefit humanity. I share my thoughts, ideas, and beliefs. I try to think critically about what I do, and how my actions reflect what I believe. I'm not perfect, but I'm aware of my faults and I'm working on changing them.

    Are you?

    Saturday, March 15, 2014

    My First Script for Google Sites

    After reading the fantastic book "Google Apps Script for Beginners," (read the review here), I decided to get my hands dirty and write a script to automate a task in Google Sites.

    I've been getting things ready to have my students build a digital portfolio, using Google Sites. We're already using Google Drive for most of our work in English and Math, and I want them to create a digital record of what they've been doing, what they're proud of, and what they want to record.

    One of the things I love about Google Drive is that you're always working on the latest version of a document. Changes are automatically saved. Updates are automatic. This is fantastic. No worrying about clicking on a save button.

    But this leads to a conundrum with a digital portfolio: what if you want to document the learning process? Keeping a record of changes over time is easy for anyone with access to edit the document: you just look at the revision history. However, people who only have read access can't do this. In fact, if you want to publish a document, you have to make sure that you've shared it with the public. If you forget, when you look at your site, everything looks fine, but when anyone else wants to see it, the sharing settings won't let them see your work.

    I thought of a way around this: using a file cabinet page to upload a version of the work that will serve as a snapshot of the learning. However, it can be a long process (relatively speaking) to download a pdf of your document then upload it as an attachment to your file cabinet page. This seemed like something that would be relatively simple to do with a script. It also happens to be one of my pet peeves about having a website: when I create something, I don't like being bothered with uploading it to my site.

    So I sat down and started writing. Well, actually, the first thing I did was a search. I found some examples of publishing a folder to your site, which has been deprecated since you can now use a gadget to insert a folder directly into your site. But the bones of the script looked very similar to what I wanted to achieve. So I sat down and started writing. Here's what I came up with.
    1. Look at a folder specified by the user, and pull a list of all the documents contained in the folder (this is a particular application where I didn't want it to pull spreadsheets, presentations, folders, or any other items).
    2. For each item in the folder, check against the attachments already in the file cabinet page. If the file already exists, the script will skip attaching it.
    3. If the file does not exist, the script will create a pdf version of the document, and attach it to the page.
    4. It will star each item that has been successfully uploaded. This is for testing purposes, but I may implement functionality where if the document is already uploaded but is no longer starred, it will replace the attachment with a new copy.
    I will set up a trigger to run the script once every night. This will keep attachments up to date on my site without any bother of uploading attachments. If you're interested in having a copy of the script, click on this link to generate a copy for yourself. You'll need to change the folder key and page URL variables at the top, and add a trigger to run the script when you want.

    This is a very basic script that doesn't do much fancy stuff. I'm proud of what it does, and I'm happy that I was able to put it together without too much difficulty. If it sounds like something that interests you, please feel free to use it, modify it, and share it. I've included the full text of the script below, but only for the interest of my fellow geeks. If you're not sure about what any of that means, don't worry. If you want a hand setting up the script for yourself, let me know: I'm always happy to help out.


    // publishFileCabinet Script written by James Petersen.
    // Full description is available online at
    // Published under the Creative Commons 4.0 Attribution - ShareAlike license.
    // For more information, visit
    // Use this script to automatically publish documents from a folder to a file cabinet page.
    // Paste the folder key and the page URL into the variables below.
    // If you want to automate the script, add a trigger by using the Resources - Current Project's Triggers
    // menu option.

    // Paste the folder key of the folder you'd like to pull files from into the line below.
    var folder = '0B7uRH5XJTbFzY0s4UVMwdDZqYmM';

    // Paste the URL of the file cabinet page into the line below.
    var pageUrl = "";

    // Modifying any of the code below may break the script. Do so at your own risk.
    function publishChecklists() {
      var files = DocsList.getFolderById(folder).getFilesByType("DOCUMENT");
      var page = SitesApp.getPageByUrl(pageUrl);
      var attachments = page.getAttachments();

      for (i in files) {
        Logger.log(i); // debugging console output
        var exists = false; 
        for (j in attachments) {
             if ((files[i].getName() + ".pdf") == attachments[j].getTitle()) {
               if (files[i].isStarred()){
                 Logger.log(files[i].getName() + " is already attached.");
                 exists = true;
               } else {
                 Logger.log(attachments[j].getTitle() + " has been successfully deleted.");
        if (!exists){
           //page.addWebAttachment(files[i].getName(), '', files[i].getUrl());
           page.addHostedAttachment((files[i]), files[i].getName());
           Logger.log(files[i].getName() + " attached to the File Cabinet page.");
      Logger.log("Script Finished");