Thursday, November 29, 2012

Proof Overtime Is Bad

I am against overtime. I do as little of it as possible. And now I have proof that this philosophy actually makes sense!

The Sleeping Geek Kitten - Angers -
The Sleeping Geek Kitten - Angers - / Nathonline-Beta

Before any potential future employers find this and take my resume off the pile, let me explain.  Knowing how long I can work before getting tired is important to me. If I go too long, then I'm likely to just make things worse.  Plus, if I know I only have a set amount of time to get things done, I can focus better - there is no later.  The standard 8 or 9 hour day seems to work perfectly well for me.

That's not to say that I'm not willing to put in some extra time around a deadline, of course.  I have stayed late a few times during my co-op terms and I've worked into the evening on school stuff more than once (though I've only ever done one all-nighter, and it wasn't even strictly necessary).  I just ensure this is very much the exception and not the norm.

So, back to this proof I mentioned.  The IGDA has a great article on why perpetual crunch modes just don't work.  Most other industries started figuring this out 100 years ago (hence why the 40 hour work week is fairly standard).  Research literally proves that after a certain number of hours worked in a single week, output goes down when compared to a more regular work week.  Working more just doesn't pay.

High tech can be a brutal field when it comes to overtime expectations.  My strategy? Don't make working longer a precedent.  If you do, then that amount of work will be expected of you.  But, of course, the more you work long hours, the less you'll do over time, making you want to work longer to make up for it, making you accomplish less... and so it goes...

Monday, November 26, 2012

Resources for Testing Game Story Ideas

I will soon be trying out simple nonlinear narrative ideas for my thesis research, and wanted to find (freely available) tools that will make doing so much easier.  Here are a few, some of which are great for beginners and non-programmers.  (Know of any other great tools? Let me know in the comments!)


If you want to create branching stories quickly and easily, this free graphical tool might just be for you.  It's not likely to be useful for me without access to its source code, but non-programmers should have some fun with it.


This is how Ren'Py describes itself:
Ren'Py is a visual novel engine that helps you use words, images, and sounds to tell stories with the computer. These can be both visual novels and life simulation games. The easy to learn script language allows you to efficiently write large visual novels, while its Python scripting is enough for complex simulation games.
I like that beginners can use its simple scripting language to create interesting stories, and that I will be able to use Python to make more sophisticated games.  This is probably the first tool I'm going to download and try since it should be really fast to get going on the simplest of ideas.


As per the Fabula website:
Fabula is an Open Source Python Game Engine suitable for adventure, role-playing and strategy games and digital interactive storytelling.  Fabula can be used as a library to develop your own games. As an alternative, you can use the Pygame-based graphical editor and the default game engine that come with fabula.
With this tool, you get into programmer's territory, but still get a lot for free.  I like that the engine was designed with storytelling in mind, and that like Ren'Py it uses Python, which should make it fairly easy to work with. I will likely give this one a try early on as well.


According to the Orx project site:
Orx is an open source, portable, lightweight, plugin-based, data-driven and extremely easy to use 2D-oriented game engine. It has been created to allow fast creation of games and prototypes.
The reason I include this project is because I think 2D is the way to go to test story ideas, and such an engine would make creating a 2D game much easier.  If the other tools aren't flexible enough to customize things as much as desired, then this might be the way to go (assuming you understand C/C++ programming).  I probably won't use this one right away since I don't need the power, but I have a feeling it could come in handy later on.

Wednesday, November 21, 2012

Things I Like About Python

Back in May I wrote a popular post about which was a better beginners language: Processing or Python.  Although I concluded that Processing was better for the audiences I tend to have in mind (that is, nontechnical members of the general public), that doesn't mean I think Python is a bad language.

I finally had the opportunity to use Python for my own project.  I have been making a simple iOS QR code scavenger hunt / story game as a (very) side project for a while now, and am trying to give it the final push to completion.  The game is defined in a plist file. I wanted to generate the QR codes automatically from the data in that plist.  I also wanted to arrange the generated images into contact sheets with the text associated with each code written underneath.  I figured this was the perfect opportunity to use Python for a real purpose instead of just as a teaching language.

The very best thing about Python is the fact that no matter what singular unit of work you need to do, you can almost always find freely available code online that does it.  QR generator? Check.  Contact sheet creation? Check.  Help with the imaging library, including drawing text? Check.  Put the pieces together and do some customization to suit my purposes, and I was off to the races.

I also like the 'scriptiness' of the language.  I felt that I didn't need to work hard to make robust and reusable code. So long as it worked for my purpose here, that was good enough.  This is a rare feeling for me.  I usually feel compelled to make the code as general and 'nice' as possible.  I loved being able to do what I wanted quickly and not worrying about what the result looked like.

But that's sort of a downside, too.  When I stepped back to look at the code from a beginner's perspective, I noted how messy and likely difficult to understand it had become.  I remember reading that Python inherently helped developers write good code (thanks to, for example, indentation to signify blocks of code).  But this experience made me believe the opposite - it's so easy to write fast code that it can quickly end up being kind of ugly.

I also had a heck of a time getting everything set up on my Macbook.  Python comes installed on OSX, but it's usually kind of old.  So I downloaded and installed Python 3.  After wrestling with the OS to get it to actually use that version for most Python-related things, I quickly found that the libraries I was trying to use didn't really work with this version.  After several hours I ended up reverting back to the newest release of version 2.  If I was a beginner trying to accomplish some relatively simple task, I would have been turned off the whole thing pretty quickly, if I even understood how to set up the environment in the first place (and I doubt much of the general public would, given how much time you are likely to spend at the command line).

So, all in all, I really like Python for my own purposes as an experienced programmer.  But I'm still favouring Processing (or, even better, something like Scratch or some not-yet-existing language theorized by Bret Victor) as a beginner language.  I could see Python being really handy once the basics are taught and some confidence is built, but I am still fairly sure I wouldn't want to begin with it if I had a choice.

Monday, November 12, 2012

Indie Game: The Movie

I am very grateful that I will (hopefully) be lucky enough to see my vision for my Gram's House game developed professionally with research grants.  After watching Indie Game: The Movie, this sentiment has only increased.  Though the documentary only presents one experience of independent game production, it's not an experience I particularly want to have.

I thought that this documentary was really well done.  The filmmakers did a great job of finding a good story with tension and drama in the development process.  I felt such relief when good things finally happened to each of them.

The elation experienced particularly by the Super Meat Boy creators got me thinking: what happens to those who spend a few hellish years trying to finish their masterpiece, but end up with little to show for it? I wonder how often the risks pay off? I'm sure not everyone drops everything to work on their game, and even those that do probably don't always forego any sort of life balance to do it.  But I would not want to see anyone experience risking everything and losing.

Of course, great success doesn't always bring happiness.  Braid's creator was shown to be fairly (even deeply) disappointed even after his game broke indie records.  People loved his game, but they didn't get it.  The reviews focused on superficial mechanical elements, but not the deeper meaning.

Which brings me to the issue of games as art.  After listening to all the game creators talk about how much their games reflect themselves, how the games express what they think and feel, I don't know how how anyone could say that games can't be art.  If you aren't yet convinced yourself, watch the movie and listen for those moments.

Overall, I definitely recommend this movie, and hope more like it will be made to show a variety of indie game creation experiences.

Friday, November 9, 2012

Seeking Nominations for the 2013 Women of Vision Awards

I serve on the Advisory Board of the Anita Borg Institute, an organization focused on increasing women's participation in the technology workforce --- as technologists, and as technical leaders. One important aspect of our work is recognizing the contributions of amazing women technical leaders all over the world. We do this through the Women of Vision program.

We are now accepting nominations for the 2013 Women of Vision awards.

We could greatly use your help identifying women who deserve recognition, and facilitating their nomination. These women are incredible achievers whose stories inspire us, and whose example can be held up as a role model for thousands of other technical women. A bit of background:

These awards recognize outstanding women for Leadership, Social Impact, and Innovation. See the full descriptions of these award categories online.

Last year we honoured these amazing women:
  • Sarita Adve, Professor of Computer Science, University of Illinois at Urbana-Champaign, for Innovation.
  • Sarah Revi Sterling, Faculty Director, ATLAS Institute at the University of Colorado at Boulder, for Social Impact.
  • Jennifer Chayes, Distinguished Scientist and Managing Director, Microsoft Research New England, for Leadership.
You can also see the complete list of past winners online.

Please think about a woman at your organization or school (or anywhere, really) who deserves to be honoured for her career achievements, and nominate her! Please contact me if there is any way I can help you with this action.

The deadline to submit a nomination is December 14, 2012.

Also be sure to save the date for the 8th annual Women of Vision Awards Banquet on May 9, 2013 in Santa Clara, California. Registration passes and table sponsorships will be available for purchase soon.

Monday, November 5, 2012

I'm Going To Be a TEDx Speaker

I'm happy that I'm starting to get noticed when it comes to my public speaking abilities. My latest speaking request was for a local edition of TED on December 2: TEDxSandyHillWomen.  A fellow speaker had been at my Processing workshop and thought I'd enjoy talking about women in tech.   

I haven't decided exactly what I'll talk about yet, but you can be sure I'll be following my own strict presentation policies (including having little or no text on my slides).  I might go with the "It's Not About the Numbers" theme I sometimes talk about.  More to come!