Summary of “the Willpower Instinct”

A very well laid out book by Kelly McGonigal.

This is a quick summary of the principles that each chapter addresses as well as some of the tactics that she lays out for when tempted and the strategies that can be used to reduce your risk of failure.


Coding Reflections – Week 3

Week 3 of attempting to speed up my learning process through reflection.

On the reflection process:

After 15 days of practice, this is really starting to feel like a habit. I’m starting to see the circles get smaller (the Art of Learning is a great book) in my work and when previously I could only think about things in their macro forms, I am discovering even more subtleties.

One way that I am starting  to make the circles smaller in the reflection process is by forming the habit of reflecting immediately when something happens. I think it has to do with what this article suggests, that  the habit of reflecting on mistakes as they happen can greatly increase the speed at which one learns. So instead of spending a long time at the end of the day thinking back on what I did, I am instead reflecting at the point of the mistake (which for me usually means taking too long to find a bug) and trying to find ways to avoid it in the future.



Sometimes doing the smallest thing doesn’t mean starting small. Instead of building up to something big piece by piece, it can often be more effective to take a large block of code that currently works (from somewhere else in the code base or the internet) and whittling that down to only the essentials. There is skill required in making sure you got rid of all the non-essentials, but if you’re diligent, it can be really successful.

concentrate on differences. When faced with a complex system that works and a simpler one that doesn’t, you can either increase the complexity of the broken system until it works, or decrease the complexity of the working one in order to see what parts are truly necessary for what you need done. An example is that this week I had a component that when given a hash with 10 entries would work, but that wouldn’t work when I fed it my own hash with 3 entries. I then methodically added things to my hash until it was exactly the same as the complex one and the function still didn’t accept it. Finally I went the other way and stripped the 10 item hash down to 3.. and the function still accepted that hash. Now with much less complexity I could look deeper and see that the difference wasn’t in the entries, but in the hash type (the one that worked was a “HashWithIndifferentAccess” instead of a normal Hash)


Look for more than one example. When you are working with a large code base and have to do something that is done somewhere else in the application, look hard for other places where things are used. Remember to check more than one place instead of assuming that the code is DRY and it’s all done the same way throughout the application. If you do find that there is more than one way to do something, be sure to use the best way possible and then go back and update the bad example.

Kitteh used Scratch!!  Its super effective


Write things down. The tactic of writing out all the possible causes has been proving really effective. Like super effective! I’m constantly amazed at how well it helps me spot the areas where I should be focusing on. Tracing out the actual flow of a piece of code across functions and source files is way better out in the open than in your head, your mind makes false leaps and assumptions that the cold hard light of a whiteboard marker uncovers easily.


Code in flow state more often. I’ve spent a lot of time building my trigger… now I just need use it more often.





Coding Reflections – Part 2

Continuing with my attempt to increase the speed at which I master the craft of programming, here is my second week of reflection.

One part of the reflection process that I noted was that reminding yourself of the previous reflections is crucial. Toward the end of the week I found that rereading me reflections from earlier really helped me to not repeat those previous mistakes.

Week 2:

Always make the minimal amount of changes to go from working to not working. Yes, I know i started with this one last week, but it bears repeating. This week I did a lot of building new things and again found myself being slowed down by making too many changes and then having to figure out which one of those changes didn’t work as they were supposed to. Starting with the simplest thing takes discipline. I’m not sure why that is, but our brains seem to want to see big effects and use those to trip us up. In order to practice the simplest thing we need to be continually vigilant.

Pay careful attention to any error trace. Often the answer is buried deeply and even though after making changes it may look like the trace is the same as before, there could be changes in where the error came from a few lines down from the top of the trace.

Write bad code. One problem that I’ve been having (probably magnified by the fact that I’m working  in Ruby on Rails) is that everything I read really concentrates on writing and architecting really good code. The problem with that is that it is really hard to know what the best code is as you go along. As you code you get paralyzed by the different design choices. You then spend hours trying to make what you think may be good design work, only to throw it away because the direction of the code means that another design pattern actually makes more sense. Instead, if you write crappy code that just gets the feature complete as quickly as possible, you end up with a complete feature and time left over to refactor (of course this only works if you’ve written tests to ensure that everything stays working after the refactoring is finished). I think it’s a lot easier to see where to fix bad code than it is to ponder over what the best code is to write. Of course, a big part of this strategy is the commitment to go back and actually do the refactoring. Code review helps a lot as sheer embarrassment can be a great motivator for going back and making sure your code looks good!

Danbo conoce a Domo - Danbo meets Domo

 Follow the Law of Demeter. There are many complex aspects to this law, but the heuristic that I’ve been using is thinking about it as “don’t take your toys apart”. If your context has a class, then you can call any of it’s methods or attributes, but you cannot “break the toy apart” and call methods of that toy’s attributes. This article does a good job of explaining why breaking the Law would seem silly in a real world context. When you buy something, when the cashier asks you to pay, they don’t “break you apart” by grabbing your wallet (your attribute) and taking the money straight out. Instead, they ask you for the money and you give it to them. They don’t even have to know about your wallet, maybe you don’t have one and just shove your money into your pockets, that would make a waiter trained to take money from wallets very confused and would be a very awkward end to the evening. Throughout the week I found that code following the law was super easy to debug and refactor, code that didn’t wasn’t, with fun little errors popping up like “you called x on nil”.


Coding Reflections – Week 1

Working full time as a developer again, I’m trying to apply my years of thinking about learning to my programming. Learning in school is one thing, it’s supposed to be the point of school after all. Learning at school became even easier for me once I reached the all important “learning matters far more than grades” conclusion. Learning while working full time is very different though. You have to explicitly decide to learn, to take extra steps to learn, otherwise learning stagnates and you find yourself stuck at the same skill level for years. I’m determined to not let that happen, so will be making every effort to keep up the pace of my learning.

Of course, there are many ways to practice “continuous learning”, but the one that I’m going to be attempting is just reflection. Sure, learning “the hard way” and other techniques may be more effective in the short run, but using them while at the same time producing as much good work as possible is hard. Using reflection as a tool for learning has the benefit of not taking time away from other important tasks and is arguably a more sustainable learning habit to create.

So the learning plan is as follows:

Every day after work, I reflect on what happened. Where did I make mistakes, where was I brilliant? what did I learn?

At the end of every week I can review the learning and summarize it. I will try and post these summaries here every week. Some of it will be new learning, some of it will be things I’ve forgotten some will be things I didn’t do because of lack of sleep and some will be pure guesses as to what will help make things better. I will break things into sections, general programming  and language specific learning.

Week 1

General Programming:

Much of this week was spent refactoring old code, in order to make a new set of features easier to implement. The process took me much longer than it should have. Here are some ways that I think can make the process of refactoring less painful.

Always make the minimal amount of changes to go from working to not working. My method was to first change the main attributes to be named correctly, then to watch for where things broke when they called for those attributes. Terrible idea.

The last thing that one should do is rename badly named variables and attributes. The first thing to do should be to DRY up the code as much as possible, only after everything is working and the code is as elegant as possible, should you worry about renaming old bad names. a “rename_column” migration is a hell of a lot cheaper than hunting through bad code for all references to a badly named variable/attribute.

On the subject of renaming attributes never use “find and replace all”. Check each instance of something that gets replaced. If there are too many of them, then it means that you haven’t done the DRY work that you should have first. If you do use “find and replace all” then every bug that you encounter for the next hour should have you thinking… “could this have been because of that find and replace all that I shouldn’t have done?”

Basic debugging:

Resist the temptation to just mindlessly trace variables when there is a problem. After the first or second tweak to try and make things work, stop and take a breath. Start enumerating the things that could be wrong. Don’t trust your brain to hold all of these elements, write the various causes for the error down (yesterday I stuck a large strip of dry-erase roll on my des to help with this). Doing it without looking at the code too much helps as well, it gets you thinking more abstractly and actually allows you to put those years of listening to Computer Science lectures to use. Think of all the different ways that you can actually test to see which one of these causes it is. Once you have a list, rank them by probability and work from there. As Steve Wolfman told me on my very first CS lecture at UBC, “Computer Science is the science of clear thought”. Writing things down is the easiest way to make your thoughts clear.

 Ruby on Rails:

use validates_presence_of to ensure that variables that you need are there. Make sure you actually need those variables.

The before_validation callback can be really useful to consolidate and double-check that everything your model needs is there.

Spend every effort as a team to make the specs fast. Every extra second that a test takes, gets multiplied by the number of developers running tests by the number of times it’s run over it’s lifetime. Those extra seconds can easily add up to hours on a big complex project. Slow specs lead to less testing which leads to broken code.

Single table inheritance in Rails is easy. It can be done simply by making a class a subclass or another ActiveRecord::Base class. The caveat is that that superclass’s table needs to have the “type” attribute, in which Rails will automatically store the type of the subclasses.

When converting a non-ActiveRecord model to an ActiveRecord model pay careful attention to methods that may be overriding ActiveRecord methods. Deal with those first.

Rails AntiPatterns is a really good book. I’ve been trying to force myself to read and watch as much as possible on programming in Rails and this book has been by far the most engaging!

Learn to build a sexy website!

Learn to code

I am going to be co-teaching a course soon, titled “Learn to build a sexy website” with Andrei Pop. It’s going to be offered online, on Matygo and it’s going to be kick-ass.


So why am I teaching a course despite the hecticness of my imminent move to New York

  • Matygo is an awesome company run by awesome people. I think that their model is definitely going to be step in the right direction for education and I want to be a part of that.
  • Programming is not a mystical force, it’s just a skill that can be learnt and the world will be better off if more people understood it.
  • I’m tired of making websites for people who are smart enough to make them for themselves :P.
  • I spend so much time mouthing off about better ways of teaching and learning that it really is time I put my money where my mouth is and do some teaching myself.


The next question I guess is what is this going to look like?

The course will run for 6 weeks. It will be taught in Matygo, which has some elements of an LMS (without many of the downsides). It will be limited to 9 participants, as the live, interactive parts will happen on Google Hangouts.

Hangouts will happen at  7:30 to 9:00 PM on Tuesday evenings starting on October 27th.


After the 6 weeks, if you complete all the course material that you will be able to build a great website in WordPress and have a deeper understand of how the internet works and be able to write and hack basic programs.


So if you want to learn to code (and hang out with me online over the next 6 weeks) go check out the course page!

Goodbye Vancouver, Hello New York

I’ve been in Vancouver for just over 5 years now. I came to this city and to the University of British Columbia as a result of the promise of beautiful surroundings and an interdisciplinary learning environment. On both counts, this city and UBC have more than exceeded my expectations.

The formal instruction that I received at UBC helped to provide me with many of the technical skills and the conceptual knowledge that I will need to be successful in the future. My work for UBC, with the Office of Student Development, Department of Computer Science, Center for Teaching, Learning and Technology and the Library has taught me the value of continuous learning and has  allowed me to develop my passion for education.

Now however, in the spirit of continuous learning I will be moving to New York City to work with Red Rover, helping them to build out their engagement platform. I will be learning how to write code at the highest standards by working alongside some of the top developers in New York City. I will also be learning about what it takes to have a company be successful.

Most importantly though, if we as a company get things right, I will have the opportunity to create software that have an actual impact of the learning and engagement of hundreds of thousands of people.

Goodbye Vancouver, I’m off to continue my learning. Hello New York, I’m coming soon, get ready.


LEARN on Vimeo on Vimeo

via LEARN on Vimeo.

Guest post: The War Against Edu-Industry

a fence

A while ago I wrote a post titled “are we fighting a war” in which I argued that humans being dumber benefited corporations and thus they would fight to make it so. The only way I saw of beating that was to fight back through better education.  Lindsey Wright sent me a great response detailing how the fight may be lost as the corporations are taking over our places of education.

A little bit about Lindsey:

Lindsey Wright is fascinated with the potential of emerging educational technologies, particularly the online school, to transform the landscape of learning. She writes about web-based learning, electronic and mobile learning, and the possible future of education.


Take it away Lindsey:


Education is constantly in the news. Whether it’s spending cuts, cheating scandals, or abysmal standardized test results, it seems that the only news about education is how it’s failing students. However, beneath the headlines there is a truth — one perhaps even more disturbing than poor math scores and falling literacy rates — and it’s one that school districts, governments, and corporations don’t want to acknowledge. While educators work every day to teach their students, they’re battling a system that is, at its heart, a business. A big business for that matter. According to the Encyclopedia of American Education, the for-profit education industry is a $100-billion-a-year behemoth, and with so much money riding on students’ narrow shoulders, it’s hardly a wonder the industry will do anything in its power to hold school districts in its thrall. However, the questions people should be asking are where is this money spent, how does it affect education, and what is the lasting affect of inviting corporations into the classroom on students?


Where’s the $100 Billion Going?


The Encyclopedia of American Education cites four specific divisions in the for-profit education industry. The first, which accounts for nearly 40 percent of the industry’s profits, is educational services. This category encompasses corporate training programs (the seminars educators must attend in order to gain or maintain their certifications), tutoring (generally in the form of after-school tutoring at a for-profit institution), language instructions (including English as a second language materials and reading programs for weak readers), and test preparation (the standardized tests that are re-written every year to reflect the constantly changing district, state, and national curriculum goals).


Next on the docket with 33 percent of the for-profit education pie are for-profit, proprietary schools. These include daycare; private pre-primary, primary, and secondary schools; and for-profit colleges like the University of Phoenix. However, this segment also includes education management organizations (EMOs). As highlighted by the National Education Policy Center, there are currently 50 for-profit EMOs operating in the U.S. Their operation method is simple. In exchange for a fee, they manage under-performing schools as charter schools, all the while claiming they bring corporate reforms and market-based solutions to education.


Twelve percent of the money the for-profit education industry makes is dedicated to the production and sale of learning products. This includes textbooks, educational software, and school supplies. Each time a curriculum changes, new textbooks must be purchased. Similarly, each time a new remedial reading or math program is introduced, new learning software must be bought.


Finally, 11 percent is dedicated to electronic services. This includes outsourcing of cloud software (such as, internet education portals (like LexisNexis) and, of course, the ubiquitous online school. It should be noted that, true to the driving push to integrate technology into the classroom, electronic services is the fastest-growing segment of the for-profit education industry.


How Does the Industry Affect Students?


Unsurprisingly, the for-profit education industry affects nearly every aspect of students’ learning experience, from how they learn to take tests as well as what they are taught, right down to textbooks they are allowed to read. Textbooks are tailored to individual state curricula. Those curricula, generally, are decided upon by the state’s board of education, an elected body that does not necessarily have any educational experience. In fact, in 2010 the New York Times ran an article highlighting just what goes into establishing a curriculum and selecting textbooks. In Texas, 100 amendments were passed to the state’s 120-page curriculum standards affecting history, economics, and sociology courses. The amendments followed along party lines and included:


• Changing textbooks to reflect more of the positive contributions of Republicans.

• Eliminating the use of the word “capitalism” in economic textbooks and replacing it with “free-enterprise system” to avoid the negative connotations of capitalism.

• Altering the history of McCarthyism to include the release of the Venona papers (a supposed excuse for McCarthy’s hunt for communist infiltrators that destroyed many lives).

• Cutting Thomas Jefferson’s name from a list of those whose writings inspired revolutions in the 18th and 19th centuries.


What these changes reveal, along with the amendments the board refused to adopt (such as acknowledging the contributions of Hispanics in Texas history and the secular roots of the American Revolution), is that the state of the American classroom is a political minefield. Students are subject to the machinations and agendas of political leaders who ignore what’s best for education — in this case, accuracy — for the sake of furthering a political cause and creating a new generation of voters and consumers.


EMOs and standardized tests are another way corporations and politics are infiltrating the classroom. In Duval County in Jacksonville, Florida, four schools that had been dubbed “struggling” by the standardized testing of the Florida Comprehensive Assessment Test (FCAT), has resulted in a state mandate that they be turned over to an EMO. Yes, a state mandate. According to the article “Duval School Board Delays Vote on ‘Intervene’ Schools” by Topher Sanders appearing in The Florida Times-Union, should the schools, which have been listed as “D” or “F” schools by the state consistently, fail to show adequate gains on private-company funded standardized tests this year they will be turned over to an EMO. Thus far, it doesn’t look good for the schools.


Advocates of educational excellence point out that, if these schools are struggling, something needs to change. Yet the truth is the schools are only struggling when measured by one specific standardized test put forth by a company with a vested interest in ensuring that the state continues to purchase from it. As highlighted in the article “Test Problems: Seven Reasons Why Standardized Tests Are Not Working” by David Miller Sadker, Ph.D., and Karen R. Zittleman, Ph.D., the issues related to standardized testing are myriad.


For instance, at-risk students in ill-funded schools are called upon to demonstrate the same capacity as a student from a well-funded school with a strong socioeconomic background — something that is often not possible. Different learning opportunities are one reason. Another? In Ohio, for instance, 80 percent of students from families with incomes of over $30,000 passed the state’s exams, while only 20 percent of those from families with incomes of under $20,000 passed them. Why? It’s a combination of factors such as educational opportunity and emphasis on education, but it’s also linked to the fact that students from households with low incomes are not targeted consumers. Standardized tests are biased against them.


Another issue related to standardized testing is that higher test scores don’t actually mean more learning. Rather, higher test scores are related to teaching students how to take the test. Students are taught that test-makers rarely will write three questions with the same multiple choice answer bubble in a row. Additionally, they’re taught how to read the question and eliminate the incorrect responses. Yet they’re not taught how to think critically, decipher information, or develop independent thought processes. Instead students learn to spit out the information the test-maker says they should, to the detriment of their worldview. In fact, standardized testing has actually cut the breadth of school curriculum. Teachers spend so much time teaching to the test that the students do not gain the broad knowledge base they should be equipped with before they enter the real world.


Currently, the educational system is beholden to entities that view it as just another way to earn a profit. Students are no longer individuals, but consumers to be generated. As a result they end up  lacking the independent thought and critical thinking skills necessary to decipher positive messages from the negative, strong arguments from their weak counterparts, and consumer-based advertising claims from legitimate studies. It is not the students’ fault. It is that of the system, a system which celebrates mediocrity and doesn’t allow teachers to teach or learners to learn. Instead, the system is designed to indoctrinate students with a particular worldview, the ultimate goal being to turn them into consumers who will continue to fund the corporate machine that made their education, such as it was, possible.

Guest post: We help you learn better

I wrote earlier about how one of my projects for the summer is to improve the UBC Learning Commons website. Sam Wempe, one of the brilliant students on my team wrote a post about what we are trying to achieve, where we have come and what we still have left to do.

Below is the article that he wrote, originally published on the Learning Commons site:


This summer, myself and a team from the Chapman Learning Commons have been working on an epic endeavor; nothing short of a website that helps students learn better. As with any website, the first hurdle is actually getting users to your site, followed by the equal challenge of providing information in a way that is not only engaging but useful.

The current site is a goldmine of resources thats has grown enormously over the years; however, student feedback has shown that this growth has made many of these resources hard to locate or take advantage of. Based on these responses, we focused on three inter-related issues.


so many menus! so many layers!
so many menus! so many layers!

As a result of the large amount growth the site experienced over the years in an attempt to become a one-stop shop on campus, the content outgrew the organizational structure. Due to the challenges that existed in making a website 5-6 years ago, this made perfect sense as there was very little UBC content online. Luckily, by May of this year, many of our partners have developed quality websites themselves, giving us the ability to concentrate on building a solid site centered on the student academic experience.


  • 2 clicks or less intuitive navigation: done through condensing and renaming menus, reducing the amount of potential pathways down to just a few, very logical ones. The design aspect below was also crucial to this.
  • Trim the fat: cut out as much content as possible that does not relate to improving your academic life. For example, if someone happened to be interested in abroad opportunities, they would be referred to Go Global’s own website; as opposed to trying to maintain this content ourselves. This makes the site leaner and more efficient.



One should also know the point of a website by just glancing at it. If a user likes a site’s main feature, they are more likely to stick around and look into other resources; something seriously lacking in the current site. Text-heavy pages scare away users, overly busy sidebars distract and constrain the content and providing users as many navigational options as possible created too many moving parts and points for confusion – all these needed to be refreshed for 2011 and beyond.

concept of new learning commons site


  • Break up content pages: elimination of large blocks of text and utilization of ample forms of digital media, such as youtube videos, slideshare presentations, podcasts, etc.
  • Dropped the sidebar: to free up more digital real estate on the page for content and moved any crucial bits to the bottom.
  • App-Like carousel and landing pages: use the front page carousel to highlight the most common reasons someone would visit the website. Currently this is used to highlight current or upcoming events (which confused the mission of the site, according to student feedback); this has been moved to blog-like feed just below the ‘Welcome to the Learning Commons Banner.’ While the landing pages act as visual launchpad to the various resources within the heading.



Engaging and Interactive Content

There are incredibly valuable resources on the site which took an immense amount of work and research to put together. The problem revealed through the navigation and visual aspect, was that this content was both hard to find and hard to get through. Reading lots of text is no fun, but try getting a stressed, time-pressed student to read five pages on time management; much less find the time to do so! Yet, the transfer of these skills is precisely what the site is about, striving to make exceptional accessible content for all students, by students.

prototype for time management toolkit


  • Vegetables hidden in the dessert: ‘toolkits’ were designed to be interactive, self-reflective, do-at-your-own-pace tools to learn skills, figure out an action plan and provide connection points to the variety of in-person resources, such as peer-academic coaching or the writing centre.
  • Accessible to all students: provide resources that are useful for all types of learners by including relevant videos, podcasts, software, print-outs and interactive activities.


Current Website

Prototype Website:

The Learning Commons is meant to be an evolving project, grounded in feedback from our partners and students alike; we need your help! A few issues in particular we are struggling with:

General Navigation:

how do you find it moving between pages, not just navigation from the home page? Does it seem intuitive or confusing?

Headings and Categories:

We have three main categories that most of our content now resides in. Naming has been one of the biggest hangups, as the more popular headers tend to cause the most confusion about what content exists under them.

What we offer, for services and resources available to students, especially those available in the CLC. This has come across as the most solid heading.

Student toolkits for the interactive skill-building tools. Other options include:

  1. Become a Better Student
  2. Strategies for Students
  3. Learning Strategies
  4. Learning Secrets

Which option are you drawn to? The issue here as that this needs to come across as helpful without sounding remedial. Meanwhile, it has to be narrow enough of a definition to not confuse users as to where content should exist.

Beyond the Classroom as our main referral page to academically enriching opportunities, such as studying abroad, service learning, student directed seminars, etc. Other options include:

  1. Involvement
  2. Enhance your degree

Do these names and definitions makes sense? Particularly, are these headings so broad that you would have trouble placing what goes where and is there too much potential overlap?

Building pages around content, not fitting content into pages: this is where the raw information on the site exists. Using the wider pages offered by dropping the sidebar, we have tried to divide up the content that would make the most sense for the subject; instead of a standardized layout across all content pages.

  1. Take a look at a few different content pages (link, link link). does the idea of breaking up content make information easier to find or understand? Or would more standardization in layout be better?
  2. Consider how are current site lays out this content (link & link).
  3. The end result could be more of a hybrid, selecting one way of dividing up content (question 1), but using that layout arrangement for all the content pages.

Toolkits: go through our prototype time management toolkit. Tip, be sure to hit the print button after you’ve filled in the questions!

  1. Do you know where to start?
  2. Is the rest of the content on the page below the slideshow / reflective questions useful or necessary?
  3. Do you find the toolkit useful? Is this something that could help you manage your time better?

Glaring absences:

is anything missing from our previous site or from what you would expect to be here?

Any and all feedback is welcome in the comments section, on twitter, facebook or by email (

Helping students learn how to learn

nick confused

I am currently working for UBC Student Development / UBC Library as the Student Development Coordinator for the Chapman Learning Commons. My role includes managing the space, the students who work in the space and the learning services that are run out of the space.

What makes this position fascinating for me is the problem that it poses, namely:  how do I manage/create/frame services in a way that actually leads to them helping students be better at school?

This problem is massively difficult, as at a university level, being better at school requires students to break over 12 years of bad habits and replace them with good habits. As anybody who has tried to pick up good habits knows (especially in the time-constrained university environment), changing habits is very, very hard work that takes time to show results. Anything that one creates to help students do this has to be really, really good (if it is possible at all).

So, for this summer, in order to actually achieve this goal I’ve settled on 4 different principles that will hopefully lead to success.

  1. Hire good students. This piece is critical. Having awesome students work on these projects helps keep things in perspective, makes customer development easier and brings a fresh sense of energy and ideas into the field. This piece’s current status is definitely “mission accomplished”.
  2. 1-on-1 peer mentorship is currently the only really feasible solution to this problem. Having a well-trained peer guide you and keep you accountable is a hundred times better than any online resource or workshop that I could create.
  3. Solve the pain. Students experience a lot of pain and the whole point of this is to help reduce that. Wording like “learning services” means absolutely nothing to most students, we need to frame things in a way that shows them how we will help them get rid of their pain.
  4. Be lean and agile. Concepts like “Do More Faster”, “release early, release often” and all the other techniques that I have learnt around successful software development and entrepreneurship apply in this context too. We are here to actually fix the problem, not just follow through on the requirements document.
That’s the plan, 2 months in I hope it’s working. One of the pieces that we’ve made some big strides on is the Learning Commons website. If you’d like to see some of the principles in action compare the current site to my student’s current prototype (principle #1 can be seen in the quality of the work). We still have lots of work left to do on it, but the idea should be clear. If you do take a look, please drop some feedback, they are iterating fast so any feedback helps!
Current Learning Commons site
Current Learning Commons site
New Learning Commons Site
New Learning Commons Site

(if you’re looking for a place to put the feedback, just comment below)

Using Game Design Theory as a Framework for Course Design

Poster on Using Game design to influence course design entered at the UBC Computer Science Undergraduate Poster Competition

A while ago I wrote a post titled “school is just a game, let’s make it a good game“. At the time I thought I was really clever for coming up with it. Unfortunately, the idea was being looked at in other places and this idea now even has a title: “the Gamification of education”.

Gamification is one of those words that just sounds dirty. It sounds like (and just could be) a disease that people want to unleash upon school (this could also be due to the fact that “gammy” was a part of my slang vocabulary as a child). To many it is in fact a dirty word, the sentiment of “wait, what, we’re going to use operand conditioning to get students to learn?”… “This is evil and mindless and corporate.” is travelling around.

Of course, if you apply the FourSquare method of just tacking on “achievements” to a course, this sentiment is justified. But what if instead of turning school into a crappy game, we started with the premise that it is already a game and that a way to improve it would be to make it a better game?

In order to test that premise I spent 4 months working with Kimberly Voll to review the current literature around game and course design looking at what good game design was and seeing if we could apply it to course design. The in-depth hectically cited paper and poster are attached below for those who want to read them but here are the cliff notes:

We looked at 7 different elements (these are not the only 7, just the ones we looked at) that designers play with to create good games and looked for places in course design literature where these elements had been looked at. The 7 are:

  • Motivations: Designing in a way that complements the reason for playing
  • Reward: Providing multiple types of satisfying rewards
  • Punishment: Creating punishment that can be enjoyed (games that never punish you suck)
  • Challenge: Keeping the game just hard enough to be engaging
  • Story: Providing a narrative and sense of mystery that pulls the player forward and gives them a sense of purpose
  • Community: Giving players a chance to interact with other people
  • Freedom: Giving players as much agency as possible (or at least the illusions of agency) within the game’s structure

By tweaking these 7 different aspects game designers create incredibly engaging games. If we want to make a more engaging course, all we have to do is tweak those elements as well. Notice, we don’t have to add the elements, they are already a part of the course, they just need to be fixed. A key thing to note is that this is not a one-size-fits-all way of looking at things, each course (just like each game) would need to come up with a unique way of improving on these elements.

Paper is below and I will be writing much more about this as I go on to work on it over the summer and study it as a Master’s thesis.

Paper on using game design to influence course design

Poster on Using Game design to influence course design entered at the UBC Computer Science Undergraduate Poster Competition