Gamification of Learning – Lessons Learned

Last week, two of my colleagues and I delivered a talk at the 2014 DevLearn conference.  The talk was a case study of a specific leadership program and how we used game components to enhance the experience.

We focused the presentation on the case-study, but I have some lessons about gamificaiton I’d like to expand on.

Games support Learning, Learning shouldn’t support Games

Gamification is all the buzz these days.  It should be – there is some fantastic work being done in this area, and the lessons should be incorporated into the learning environment.  But like any trend, there can be a tendency to put the cart before the horse.

If I am asked about gamifying a learning program, I always steer the conversation away from games towards instructional design.  I want to understand the audience, learning objectives, learning modality, and all the other non-game considerations going into a learning program.  Only then do I want to discuss adding game components.

The biggest pitfall in gamification is simply trying to turn a learning program into a video game.  Learners do not want to play a platform jumping game to get to quiz questions.  Your game can look flashy and fun, but you are almost guaranteed to make a subpar game which distracts from your learning objectives.  Your audience will resent the wasted time.  Please don’t build Super Mario Brothers.

Incentivize Desired Behaviors

The game components should hyper-focus to incentivize desired behaviors.  As part of your instructional design process, define the behavior you want to see.  Your game mechanics should encourage those behaviors.

Our recent project was for a leadership program.  We wanted to see our learners:

  1. Show up to each session
  2. Participate in class
  3. Share content with the class outside the class
  4. Read articles, watch videos outside of class
  5. Complete special assignments outside of class

Our game mechanics were simple – just points, visible badges, and leaderboards.  We made sure we gave out points and badges for each behavior we wanted to see.  So if participants showed up to a session, they were given points and a badge.  If the learners contributed something meaningful in class, the facilitator could issue badges and points.  For sharing and reading content, we gave out points.  Completing special assignments resulted in badges and points, but if the learner completed all special assignments, there was a bonus badge and points.

The badges and points are low-hanging fruit for gamification.  You can add badges and points to almost anything without fundamentally altering the learning program.  We found they worked best when the badges and points were:

  1. Visible to the entire cohort
  2. Used in class by the instructor
  3. Clearly defined to the learners so they would aspire to display the desired behaviors
  4. Tied to some prize, competition, or other incentive to participate

Don’t Distract

Game mechanics should not distract from your the learning process.  I want the learners to be excited about what they are learning because there is some incentive to be enthusiastic.  If the game gets in the way of learning, the game will reduce interest in learning.

We had several opportunities to incorporate our points/badge system into the classroom, but we decided against it.  During part of the learning program, we had the learners role play with each other.  We decided that we just wanted the learners to focus on the activity instead of getting credit.

Adapt Quickly

Despite all of our planning, some of our activities produced unintended consequences distracting from the learning process.  Especially during a pilot, we found it important to constantly take feedback and reevaluate how we offered incentives.

We offered points to the learners for posting articles to their cohort.  We also offered points for reading the articles other participants posted.  In our minds, in addition to incentivising class contribution, this had the side benefit of tracking what content the learners were consuming.

Unfortunately, what we actually incentivized was spam.  A few learners found they could earn unlimited points by spamming articles.  Other participants could earn points by clicking the participant-posted links.  Other participants began clicking the links without reading the articles.  We accidentally created an arms race between producing and consuming spam.  The participants who didn’t join in the post/click fest were left behind in points and disincentivized from participating in the rest of the game.

We took feedback from our users regularly and identified the issue quickly.  We didn’t want to limit legitimate contribution, but we didn’t want to incentivize spam.  The solution was simple – allow unlimited submissions, but only offer points for the first submission.  By limiting points but not submissions, we kept the free-flow of information without incentivizing undesired behavior.


Cutting the Cord – Symbolic Steps Backwards

Two days ago, I was cord-cutter.  Yesterday I signed up for a new telephone landline.  Today, I am still a cord-cutter.  How did this come to be?

I have been paying for cable television for almost five years.  During that time, I never plugged the television into the cable.  The cable outlet is on the opposite side of the room from the television.  I can’t be bothered to run an ugly wire across my room.  A year or so ago, my cable company sent a new digital DRM box to “enhance” my television experience.  My unused cable TV would stop working unless I installed this anti-cable-theft device.  Nonplused, I placed the unwanted device in a closet – box unopened.

I am an archetypal cord-cutter.  I’ve never subscribed to land-line telephone service.  I watch television and movies on my Roku.  I read and listen to my news.  I have no use for a hundred channels of mediocre programming and intrusive advertising.  Between Netflix, Amazon Prime, and the PBS online station, I have more than television than I could possibly watch.  If I want to see a particular show not offered free, Amazon is happy to sell me the program.  I would rather pay $2 to watch a 20 minute show on demand than pay nothing to watch a 20 minute show and 10 minutes of commercials at a set time.  I find channel surfing unpleasant.

So why do I subscribe to cable television?  Because my Internet connection, which is integral to my business and entertainment of choice, is cheaper if I bundle cable television.  That’s it.  I’ve called my cable company several times over the years and asked if I dropped my cable, could I get a discount.  Every time I make that call, the answer is the same: “Your bill will go up”.

Over the past few months, I have been dealing with a reoccurring billing problem with my cable company.  Each time I called, the cable company agreed my bill was incorrect and fixed the problem for that month.  They promised the problem will not reoccur – and yet here we are, on the phone again.  I spent hours on the phone dealing with the issue.  Fed up, I started the process to cancel my service.  In response, the customer service representative offered me a new package:  Faster Internet download speeds, cable television, and home telephone service for about $30 less per month than my current rate, good for twelve months.  The cable company will send a technician out to install my home phone, but they will waive the $20 service-call fee.  I accepted, obviously, because I like money and faster Internet.  I have no plans of plugging a phone into the wall.  If I end up with a VOIP box, I will likely stack it neatly on top of the cable television box in my closet – unopened, unused.

Professionally, I’ve worked extensively with customer service representatives (CSRs) and phone provisioning systems.  Time is money with these people, and seconds count.  The waste is extensive:

  • The CSR took 15 minutes to provision my new phone number.  That’s 15 minutes the CSR could be talking to other customers – driving sales, solving issues for other customers.
  • The technician will come to my house at to install the VOIP interface into my phone box.  That house-call will cost the cable company in compensation to the dispatcher, inventory person, and technician.  They also have to pay for gas, a truck, training, back-office support, etc.  I will likely unplug the box as soon as the technician walks out the door for the same reason I turn off the lights when I leave a room.
  • The cable company will purchase VOIP equipment which will languish unused in my closet.
  • The cable company will need to expand their infrastructure to accommodate another phone customer.
  • Phone line taxes will be paid – although I suspect this will come out of my pocket on top of my bill.

What could possibly be the business driver behind this business waste?  My bill went down, but my expenses to the cable company went up.  The cost of the technician call will likely eat up several months of profit.  Short-term profitability is clearly not the motivator here.  I have no insight into the corporate workings and plans of my cable company, but to me, this stinks of bad internal business drivers and sneaky business practices.  If I may speculate, maybe one or more of the following is true:

  • The cable company is measuring success based on number of bundles sold.  Attained goals are measured as success in the short-term.  Long-term profitability may suffer, but you can reach almost any arbitrary goal if you try.  If an executive says “my goal for next twelve months is to sell more packages than ever before”, that executive may reach the goal and get promoted.  But that doesn’t necessarily help the company grow.
  • The cable company is artificially inflating subscriber numbers for some reason invisible to me.  Maybe they are trying to show growth to investors.  Maybe it’s political.  The cable/phone/internet industry is deep in politics these days.  See: Net neutrality, local monopolies, etc.
  • The cable company intends for my bill to go up drastically in twelve months.  I’d be interested to see if this is an actual strategy or an unspoken reality.  I suspect if the cable company’s executives put this in a strategic document, some disgruntled employee would leak it, and we’d see a public scandal.  The CSR told me he did not know how much the bill would increase after the “special offer period”, but I suspect it will be higher than what I was paying without the telephone.  The CSR told me I should call back in twelve months and ask for a lower rate.  I intend to take him up on his offer.

So here I am: faster Internet, no change in services taken, still as resolutely cord-cut as I’ve ever been.  But the cable company gets to use me as a data-point to show how cord-cutting is a declining trend.  All it cost them was hundreds of dollars.

Personal Content on the Roku

I recently purchased a new home router – the Netgear AC1600.  The router has a USB 3.0 usb slot.  I plugged a USB hard drive into the router and had an instant network drive.  I am thrilled the software worked out of the box.

We’ve never had cable television at my house, so all of my content comes from my Roku or DVDs.  We use the Roku to stream from Netflix and Amazon.  We also listen to SomaFM and our favorite radio stations through the Roku.

I own a few DRM-free movies, lots of DRM-free music, and more photos.  I want a solution to watch the movies, play music, and show photo slideshows on my television.  I want to stream content directly from my network drive.

I looked at a few solutions, and I’m not thrilled with any of them.  Here is what I found:

Roku Media Player

Roku Media Player is the most promising solution.  My router provides a “DLNA Media Server”.  I never heard of this protocol before trying to perform this install, but apparently Roku Media Player uses DLNA to catalog media content on a network drive.  So far, so good.

The good:

I installed Roku Media Player (RMP) and started the program.  RMP found my drive immediately.  I didn’t have to perform any manual setup – it just worked.  I was able to play videos and audio.  The photos were available to view.  So far, so good.

The bad:

The interface is awful.


Plex looks great, but it requires an always-on computer server.  I am trying to avoid this with the networked drive.

Apple TV

I could dump my Roku for an Apple TV.  Apple TV looks the best, but their forced ecosystem is a turnoff.  I’m not even sure if the Apple TV would let me maintain a network drive without a dedicated computer with iTunes installed.

Converting GIFs to Video

I’m still working on the digital picture-frame.  The frame downloads animated GIFs from the internet onto a Raspberry Pi and displays them on a screen.  The GIF should loop for a period of time before move onto the next image.  The script currently pulls the top-ten animated gifs from Reddit’s GIFs forum.  For an example, I am using this image, pulled at random:

Downloaded from Reddit
Downloaded from Reddit

I am having severe performance issues displaying the GIFs on the Raspberry Pi, and it seems my best option is to convert the GIF to a video format.  I want to play the video in a loop – and hopefully the Raspberry Pi can handle video better than the animated GIFs.  Installing ffmpeg on the Raspberry Pi was trivial.  I am loving package managers these days.

$ apt-get install ffmpeg

I tried to convert the GIF files directly to an AVI, but the videos were all coming out one frame.  I found some discussions online showing I should convert the Gif into component frames – then convert the frames to video.  I ran:

$ convert 0.gif out%05d.jpg

The command separated the GIF into components, but only the first frame looked right.  The rest of the frames contained severe artifacts like this:

8th Frame with bad artifacts
8th Frame with severe artifacts

I used the -coalesce flag to correct the issue, and the frame came out without any severe artifacts.

$ convert -coalesce 2.gif out%05d.jpg
8th Frame without severe artifacts
8th Frame without severe artifacts

I ran ffmpeg on the resulting JPG frames with an AVI output.

$ ffmpeg -r 25 -i out%05d.jpg -y -an test.avi

The video runs smoothly in VLC on my PC.  You can see the results here.

Still to do:

  • Bake the GIF -> Video conversion into the ruby script
  • Write the display script to loop the video on the Raspberry Pi
  • Dynamically change the frame-rate depending on the properties of the GIF

Raspberry Pi Animated Gif Picture Frame

I’ve been toying with building a digital picture frame for a couple of years.  I bought my Raspberry Pi for this project in August 2012, but I never built it.  A couple of weeks ago, I was talking to my friend Camron about the project, and we decided to work on it together.

I wanted the frame to work like an appliance – plug it in, play images.  Camron wrote most of the code before I got there.  We had two programs:

  • A ruby script which automatically download animated gifs from a source and places them in a directory.
  • Play the gifs on a screen using Gifsicle

We installed Arch Linux on the Raspberry Pi, but we couldn’t get Gifsicle to find an X session to display the gifs.  We decided to dump Arch and flashed the SD drive with Raspbian.  Raspbian boots into the window manager directly, so we were able to play the gifs.

Unfortunately, the Raspberry Pi was running at 100% CPU, and the gifs were very choppy.  Camron wrote a little HTML file with some JavaScript to play the gifs in a browser.  The gifs ran a little smoother, but it wasn’t great.  Anything form Reddit’s high quality gifs crashed the browser.

I’ve seen a Raspberry Pi used as a media player, so I know the hardware can handle a little video, but big gifs without any hardware help don’t seem viable.  I have a couple more things to try – optimizing the gifs, finding an alternate gif player, transcoding the gifs to video.

Update:  It seems Twitter is already doing gif to mp4 transcoding.

Digital Ocean WordPress Setup

I’ve owned this domain for years, and I wanted to put a blog back on the address.  I looked at hosted sites like WordPress and Tumbler, but I ultimately decided to host my own.  I want to have a dedicated server on the Internet I can install software on and run any sites or tools I want.  I’ve used Heroku and EngineYard professionally, but those servers are far more expensive than what I wanted to spend for a personal site.  My friend Loren Norman pointed me to a service I hadn’t heard of – DigitalOcean.

I am impressed.  It’s cheap ($5 a month and nice promo codes for first time users), and I have decent Linux server at my disposal.  I chose which flavor of linux I wanted to create, and within minutes, I Digital Ocean handed me the keys .  Their documentation for setting up WordPress is superb.  I am a professional instructional designer, and I love step-by-step instructions.  The instructions were clear, concise, and best of all, they worked.

Rails Development: Mac vs Linux

My employer recently upgraded my work laptop to a late-model Macbook Pro. I maintain an internal Rails application with a colleague, and we needed to setup our development environments on the new machines. We went through the process of installing RVM, Ruby, Postgres, and supporting software. Building the environment took us more than a day after all was said and done. We ran into one issue after another – nothing we couldn’t solve with a little Googling – but it was still a lot of incremental steps.

At the same time, I am working on a small hobby project and needed to build a from-scratch Rails 4 application. I was going to install the server on my personal Windows computer. At the same time, I’ve been working on a separate Raspberry Pi project. The Raspberry Pi sits on my network, so I decided to install the rails server on the RasPi instead of my Windows machine. The Linux installation was easy, and almost everything worked on the first try.

The Macbook Pro is ubiquitous in Rails development circles, and I’ve been developing Rails on my Mac for a couple of years. I always assumed the ubiquity of Macs was due to the ease of environmental management on the Mac compared to Linux. I’m starting to believe the opposite. The installation on Linux was painless compared to the Mac install. I haven’t used much linux in a number of years, and I was barely proficient when I was a regular user. I am shocked by how easy package management has become. I installed RVM, Ruby 2.1, and Rails without any hassle. The installation was not fast, but I believe this is because I was compiling source on my wimpy RaspberryPi. As RVM said:

this may take a while depending on your cpu(s)...