Friday, May 31, 2013

Working With Google Spreadsheets Data Directly

On Wednesday I talked about assigning numbers to my princess-and-dragon story.  I have all my data in an easily parsable format in a Google Spreadsheet.  I decided to use Python to do my story-related computations because of the fast start-up time and the existence of the Google Data Python Library.

Things started well enough thanks to a decent quick start guide, even though I've only used Python a few times before.  I was able to connect to my spreadsheet without issue and start working with the spreadsheet's feed.

But from there things got... complicated.  The quick start guide didn't cover what I needed to do, and I kept getting referred to the spreadsheets API that made mention of other languages, but not Python.  This isn't the first time I've found documentation by Google to be lacking in some way.  I could probably figure things out eventually (perhaps by looking at the source code), but I didn't really want to spend that much time on getting the data - I would rather spend time processing it!

Luckily, @ArcTanSusan and @sharonw gave me a great suggestion on Twitter: gspread.  It was made for Python specifically, has good documentation, and offers much simpler code for doing what I needed to do.  Sign me up!

Making the switch saved me a bunch of time in the end.  The moral of the story: use gspread to work with Google Spreadsheets in Python, and search for alternatives before just using Google's stuff.

Wednesday, May 29, 2013

Princesses, Dragons, and Assigning Numbers to Stories

I've been working on a prototype story for my thesis project ("Coherent Emergent Stories").  Although I have a couple of stories on the go (such as the one I made for my GRAND poster), the one I am working with now was loosely inspired by The Paper Bag Princess.  This is an informal representation of some of the nodes:

In addition to these nodes are many more satellite nodes that, at the very least, further the story's themes or develop its characters, but that are optional and can be seen in any order.

My task now is to turn the ideas behind each node's availability (where should the player be? What knowledge should they have? etc) into numbers.  We are currently using a modifier system to calculate suitability of a node at any given time.  This means that I need to represent things like mood and knowledge as numbers.  This is much easier said than done!

I will also be writing some code that will represent formula(s) for computing a scene's score so that we can test what scenes will be available for various game states.  I decided to use Python, since its quick and easy scripting nature is just the thing needed here.  It also seems easy to connect directly to a Google Spreadsheet, where my story data currently resides.

Tomorrow, we plan on spending the morning playing with the prototype and adjusting the data and calculations as needed.  I'm really curious to see how far off the mark my numbers end up being!

Friday, May 24, 2013

Feynlabs Has the Right Idea: Start With CS Concepts

I received an email from Lee Omar of UK-based Feynlabs this morning.  It opened with the following:
Feynlabs believes that current IT teaching in schools which is aimed at children is not fit for purpose.  Current courses are unable to teach the skills our digital native generation need or provide the vision and passion for them to develop a career in high level digital technology.
After looking through their website and their Kickstarter campaign, it's clear that Feynlabs, named in honour of Richard Feynman, wants to solve this problem by starting with computer science concepts rather than specific programming skills.

Personally, I think this can be a very good approach to teaching computing.  It's how I try to approach many of my own courses and workshops.  It's even the main inspiration of Gram's House, since there are many games that aim to teach programming and logic, but few that focus on CS principals.

Feynlab's vision describes a three-part approach to their curriculum, which they are beginning to test in schools.  They "start with how the computer views us ... and explore the basic principles of computing,"  including problem solving.  Data structures and algorithms are covered next.  Finally, a product or app is developed.  This is all done with a focus on physical computing "which involves building interactive physical systems which can sense and respond to the Analog world – especially applications that can be created by the Raspberry Pi and Arduino."

I'm unsure of how well all of these things have been or will be accomplished given that little detail is provided (and the website's wording could be better), but this at least seems like a project worth watching.

Wednesday, May 22, 2013

Review / Python for Kids: A Playful Introduction to Programming

There are many resources out there for Python, but I've recently had the opportunity to enjoy a fully colour printed book on the topic.  Sure, it's called Python for Kids, but that doesn't mean the young at heart can't benefit from it, too.

The book follows the traditional trajectory for learning programming by introducing the fundamental concepts individually before putting them together in two game projects.  The first chapters briefly introduce Python itself, variables, data types, control flow, functions and modules, drawing, and even classes and objects.  None goes much deeper than 'need-to-know,' but perhaps that is a good thing given that the most fun stuff comes later.  The second half of the book guides you through making a game where you bounce a ball on a paddle (like breakout without the bricks) as well as a stick man game.

Where this book shines is in its language.  Tyler DeWitt encourages science teachers to make science fun in his popular TEDx talk, embedded below.  He emphasizes the use of simple terminology and the use of stories.

Jason Briggs achieves just the right tone in Python for Kids, explaining programming concepts with words everyone can understand, and throwing in jokes and amusing references wherever he can.  It doesn't come across as childish; it's just plain fun.  The full-colour illustrations also add a lot to the overall aesthetic.

Although I do like what is actually in the book, I can't help but feel like Briggs missed some huge opportunities.  Too often in the first half of the book there are tiny, isolated examples that feel meaningless.  Why not motivate the concepts as you learn them? He could have started with the games, or better yet, connected the what better to the why using real world problems that kids can still relate to.  Another criticism is that the pictures, while fun, don't do anything to illustrate the concepts being discussed.

Regardless of the downsides, I will most definitely be hanging onto this book to work through with my (currently 1.5 year old) daughter when she's older.  I can't wait.

Monday, May 20, 2013

Stories and Games at GRAND 2013

Last week, I attended the annual meeting of the GRAND (Graphics, Animation, and New Media) research network, held in Toronto.  Although the research and discussion presented and held at the conference spanned much more, the focus for me was on games and stories in games.

The presenter I was most excited about seeing was Jane McGonigal of Reality is Broken and Superbetter fame.  She believes that gamers are actually practicing some rather useful skills when they play.  For example, they learn to be hopeful and creative, two of several things that we should want people solving the world's greatest problems to be.  I reviewed her book a couple of years ago and still find that it influences my thinking on games.  Although I already knew most of what she talked about at GRAND (having been a fan for a while), I loved seeing her in person, and loved even more that my friends and colleagues now buy into her ideas as well.

A surprise for me was how much I loved Terry O'Reilly's talk.  I admit I'm not much of a CBC follower (unless they're airing an Ottawa Senators hockey game), so I didn't know who Terry was ahead of time.  He spoke about the power of stories, mostly with respect to marketing and advertising.  One of my favorite quotes:
Make people feel your message, not just understand it.  -Terry O'Reilly
Besides being an extremely good talk, it was fascinating how much I connected with his message with respect to games.  In particular, I found myself being convinced by him (and less directly by Jane McGonigal earlier) that stories can truly make a difference in learning with educational games.

On Tuesday night I presented my nicely designed research poster.  I was quite pleased to see a few other really great posters.  My favorite poster (possibly of all time) described Tiffany Inglis's research on pixel art in the form of a comic strip.  Check out the poster on her project page.

Finally, on Wednesday, the last day I was at the conference, I attended the Women in Games panel.  The panel featured Grace from Fat, Ugly, or Slutty, Cecily from Dames Making Games, Anita of Feminist Frequency (which is most recently focusing on tropes vs. women in videogames), and Brenda of Silicon Sisters, a women-lead game studio in Vancouver.  The discussion was fascinating, and I saw a lot of what I do with women in CS shine through, even though involvement in games can be much broader than programming/CS.  It was also really neat to see what Brenda and her company have been working on, since I had been chatting with Brenda about stories in games the previous evening at my poster.

Even though I had less than two days between trips (poor baby Molly!), and even though I could only stay for two days, I'm really glad I ended up coming to GRAND.  I feel energized as I move into my attempt to get a lot done research-wise this summer...

Wednesday, May 15, 2013

In Which I Am Tempted to Move to California

Blog posts have been sparse lately: I have been traveling.  Last week I spent five days in Palo Alto, California.  The visit was primarily for the Anita Borg Institute Advisory Board meeting, but I also had the opportunity to take a break from being a mommy and grad student (too often at exactly the same time) as well as visit and network with friends new and old.

The problem is, the more often I visit, the more tempting it is to live there!

The Advisory Board meeting was fruitful for the Anita's Quilt project.  I don't want to say too much yet, but suffice it to say I think the Quilt's stories have a bright and exciting future.  After the meeting I had the pleasure to join fellow board members Kathy, Kitty, and Carol (who hosted us).  Besides a most excellent meal, I enjoyed sharing what insight I could into Canadian politics and the like.

On Thursday, I had lunch at a tasty Italian pizzeria with my friends BJ and Valerie, both of whom I know through work with ABI and the Grace Hopper Celebration.  It was so great to catch up with them.

Thursday night I attended my very first ABI Women of Vision Awards.  As expected, it was highly inspirational.  I especially fell in love with Maja Matarić.  Without us realizing who she was at first, she had started chatting with a group of us in the pre-banquet reception.  She mentioned how she should probably wear some makeup even though she doesn't usually; otherwise, her mother (who was in attendance) might scold her.  So she pulled out the lipstick her mother had given her and put it on.  As another woman who never wears makeup, I felt like we might be kindred spirits.  (Her award speech was also absolutely incredible.)

Finally, on Friday, I met up with my friend Carlos, whom I met after a cold-email to tell him how much I loved his book Lauren Ipsum.  I visited him at Facebook, where he worked.  We walked around while we chatted, and although I got a great personalized tour of the Facebook campus, I was admittedly enjoying our conversation too much to properly pay attention.

I did take a few photos, though.  For example, this is the front entrance of the campus.  It is surprisingly nondescript!

There is a whole different look and feel once you step outside the lobby into the "walled garden." The aesthetic of the architecture, landscaping, and all the small details is really appealing.  You will also see a hacker motif showing up everywhere, but not in an obnoxious way.  See if you can spot it in the next two photos.

I made sure to leave my mark before heading out...

With all the wonderful people and beautiful places to live and work in the Bay Area (and that's not even mentioning all the amazing tech events to attend), it is certainly tempting to move down there.  But not to worry, fellow Ottawans: it's not going to happen anytime soon! Having family here is too important.  I do have to admit I am thinking it might be a good option in 20+ years when our kids are all grown up... ;)

Thursday, May 9, 2013

My Beautiful GRAND Conference Poster

I'm a strong believer in creating conference posters that look good.  If they have a striking resemblance to printed papers, in my opinion something has gone really wrong.  With that said, I have to say I had a lot of fun designing my most recent poster.

Although this image is slightly out of date from the final print version, it gives a good idea of what I was going for.  You can get the gist of the research by looking at it, but it does not contain all the information a paper would.  That's what the poster presentation itself it for: I will have the opportunity to discuss the work more deeply.

There is no reason whatsoever that a poster can't be both beautiful and functional, so I encourage you to see what you can come up with the next time you create a poster! If you have an example to something you're particularly proud of, I'd love to see a link in the comments.

Edit: You can now check out the high resolution PDF of the poster if you'd like.