Monday, August 31, 2009

Someone on Twitter posted an article about some dirty coding tricks some game developers were willing to admit to making. The story covers little hacks, shortcuts, and desperate attempts to 'just get it done.' This made me think me of a time I made a dirty hack to fix a bug, and how guilty I felt about it.

This story from the article reminds me the most of my own:

10-Tative Code

Back at [company X], I think it was near the end of [the project], we had an object in one of the levels that needed to be hidden. We didn't want to re-export the level and we did not use checksum names. So right smack in the middle of the engine code we had something like the following. The game shipped with this in.

if( level == 10 && object == 56 ){HideObject();}

Maybe a year later, an artist using our engine came to us very frustrated about why an object in their level was not showing up after exporting to what resolved to level 10. I wonder why?

- Anonymous

In my case, I had this bug I really really needed to fix during one of my past co-op jobs. I had been working on it for a few days, and that was pretty much the max allowed. I had gone through hundreds of lines of code tracing the math transformations involved for what seemed like many hours. But I could just not pinpoint what was causing the behaviour I needed to fix.

I did figure out the conditions of that behaviour, though. And by adding a little extra check just before the actual rendering of the object in question, the bug appeared fixed and no other bad behaviour came up. Case closed?

The fix was accepted, but I felt unusually guilty. I knew it would be better to find the root cause of the problem, but I also knew the time spent in doing so wasn't really worth it.

While I tried to forget about it and move on to other things, a coworker approached me saying, "I think I found a fix to the problem while figuring out my own bug. It's in that transformation code. Is it ok with you if I take your fix out?"

Wednesday, August 26, 2009

Canadian universities are all, by and large, equal. This allows Carleton University, for example, to have the same opportunities for funding and such as the larger and better known schools like University of Waterloo. For a school that was once known as Last Chance U, this equality was probably the only way to rise above the reputation.

Carleton recently passed the one year mark of having its first female president, Dr Roseann O’Reilly Runte. My experience with her has been positive so far; she even spoke for CU-WISE last November! She recently wrote an opinion piece for the Globe and Mail (available online via the Carleton newsroom) regarding the talk of a two-tier university system in Canada.

Canada’s five largest universities recently proposed a new system for classifying and funding universities, arguing an elite group should focus on research and graduate education. Their proposal places all the other universities in a second tier, removing their ability to compete or collaborate equally.

But wait - isn't this how things work in the United States (and probably elsewhere as well)?

It’s common for Canadians to look to the United States for models. In many states, universities receive more government support and students pay more tuition in general. Donors are more generous, bolstered by favourable tax laws. But unless our conditions are comparable, imitation is inappropriate. Without increased government support, more fee revenue and amended tax laws, we would seriously disadvantage Canadian universities by attempting to import this model.

A two-tiered model would likely stifle competition and collaboration. It would increase the divide between lesser-known schools and the big five in terms of prestige, and consequently quantity and quality of students wanting to study there and faculty wanting to work there.

Competition is good for the system. Collaboration is also good. We cannot achieve a collaborative environment when there are clearly established “haves” and “have-nots.” Small universities should not be colonies of the large; they should be intellectual partners. This will occur only when policies favour such partnerships.

I sincerely hope this does not happen here in Canada. Even with the changes Dr Runte suggests above, I don't like the idea of a two-tiered university system. (In fact, I wonder if anyone outside the big five would like the idea.) I was always a little uncomfortable with the whole Ivy League concept, or at least what I know of it. Who wants to feel like their chances of success will be less because they obtained a lesser known but still high quality education?

Friday, August 21, 2009

There's no doubt that the latest generation of students has grown up with technology, understands it, and makes very good use of it. But I had never before stopped to think that technology has become an educational need.

"Today, students are coming to campus with certain expectations. They are dealing with technology on a daily basis — they don't even refer to it as 'technology.' It is just a way of life," noted Kreider. "To prepare for their educational needs, we at WIU need to become more equipped with and conversant in technology, as well as how we apply that to the education of our students, dissemination of content — all of these things that students are expecting today," he added.

Once this connection was made in my head, I started to realize how true it is. Looking back at my high school years, which were (mostly) in the nineties, I craved more technology to use in school. Although I actually never learned to program until I started my computer science degree, I was always a very proficient user of software. The only problem was that I didn't have a whole lot of opportunities to enhance my learning with computers and other cool technology. I remember the computer labs having pretty old equipment with little interesting software, for example.

I've covered a few topics on this blog that would have been really great to use during my own public education, and there are so many more awesome ways to incorporate technology in both obvious ways and not! Here are some examples:

Tuesday, August 18, 2009

It took me an awful long time for several reasons, not least of which is getting a lot of experience in teaching and outreach during the degree, but I'm finally done my thesis draft. I'm printing it today and bringing it to school tomorrow morning. My defence will likely be the first week of September.

I will post the final version of the thesis after the defence and any resulting revisions are made.

It's no secret that I did not emphasize research during my Masters degree. This will change for my PhD. I love the fact that I have accomplished many goals during the Masters and thus don't need to be distracted from research in the future.

I also love the fact that I will be able to work on projects I am much more interested in. I learned during the Masters that I don't really love working on the purely experimental side of things. I enjoyed the theoretical portions of my project, but while testing the image matching implementations, I just kept thinking, 'darn, there are so many cool applications of this, and I won't get to any of them!' When I switch my focus to augmented reality, I want to look into using it for educational entertainment. The focus on people and interesting applications this will have excites me!

By the way, I also had a low point or two (as most grad students seem to have) while getting through this thesis. I plan to make a post about impostor syndrome and all that once I figure out how to capture my feelings.

Thursday, August 13, 2009

Today I (hopefully) inspired the next generation of computer scientists. ;)

Carleton University hosts Virtual Ventures summer camps each year, and within these camps, there are a couple of special opportunities for girls to participate in Girls@VV. Because one of the instructors is from CU-WISE, she asked if any of us would be interested in mentoring or even doing some fun activities with the girls

As was the case for my mini-course, these girls had amazing insight into the reasons girls aren't very interested. The title of this post represents a major theme: they want to learn about what computer science really is early on in their school lives!

Students who have access to computers at school, it seems, learn how to use them, but nothing beyond that. They don't learn how to make HTML pages or make games with Alice or Game Maker or anything deep at all. They just learn how to find info for and write up projects and that sort of thing.

Some of the girls said that the growing populations at their schools caused the computer labs to be taken over as regular classrooms. Then, the only computers left were for the teacher to use in the classrooms. So not everyone even gets a chance to use computers at school in their younger years.

Another common suggestion was to have after-school programs. They reasoned that you can do sports, which won't help most people in their future careers, but not computers or electronics. They said they would love a club like that, and think their friends would go, too. They want teachers who are more knowledgeable in the topic (rather than the unfortunate souls who get assigned to teach computers simply because there's nobody else), and role models to show girls that computer science can be fun, exciting, and cool. (For instance, they loved the videos I showed them from the Why Choose CSE collection over at the University of Washington.) Finally, they want to know more about how computer science can be connected to the things they already enjoy doing.

There are many camps and programs being run that are supposed to address exactly these ideas given to us today, and yet we still hear that the girls are left wanting. Are the programs not far enough reaching? Are the activities not engaging enough? (I can tell you our CS Unplugged activity sure was!) What's going on?

Monday, August 10, 2009

I remember hearing about a law that Norway had put in place a while back. It had something to do with mandating that a certain number of women must sit on boards of corporations. Could the same be done to improve diversity in the computing industry? It seemed like a tricky thing - I often don't really think quotas are a good thing. Yet many businesses were not hiring women for these positions despite that fact that there were enough talented and qualified candidates to choose from.

Two years ago, most publicly-traded Norwegian boards themselves had to be forced by law to accept women in any sort of real numbers. ... [M]en in charge of corporations everywhere who have genuinely tried to on-board women and either 1) not found them, or 2) found them lacking will have to re-examine how well they actually tackled that task.

The most interesting thing about this article is that it uses the perspectives of men on the boards to explain how women have benefit them. Here's one summary of how women help:

Women, in sufficient numbers, change board dynamics for the better. Why? Because as a group, women tend to display a different set of characteristics from men as a group — characteristics that broaden discussions, reduce unnecessary risks that a corporation takes on, and punish people who would increase foolish risks.

Even if this is a generalization, there are definite benefits of this change in dynamics for any team, including technical ones. As one former CEO and current board member put it:

"If I had to generalize about the differences between men and women on boards? Women are more interested in getting the facts. Much more prepared; ask many more questions. Men tend to shoot from the hip. Women on boards are also more interested in how the organization will actually work. ... Women tend to see the organization as more of a living thing." (emphasis added)

I suppose this might be what some people describe as the more 'social' nature of women. One might also surmise that the extra preparation women take could be related to the higher prevalence of the impostor syndrome. Either way, the result is that problems get tackled from new angles, and perspectives shift. On a software team, this could mean anything from finding better ways, to organize requirements to improving relations between team members, to bringing the end users closer to the product. Perhaps all things that might be accomplished by an all-male team, but more likely with more diversity.

Here's an interesting one:

Women are less about jockeying for position in the group, and more about understanding and solving the problem with as much information as feasible: "In my observation, women don't drive for prestige as much as men do," said one experienced male board chair.

Perhaps this means fewer women will be cowboy coders, trying to save the day in a blaze of glory, and more will be the types who believe that slow and steady produces higher quality results? Having a good balance between the two types seems to be the best idea for success.

One section of the article discusses the fact that women need support in order to enter their board positions successfully. Sound familiar? What was also pointed out, though, is that many men need a little help getting comfortable with the addition of women. Perhaps we need to pay attention to this fact when joining all-male technical teams. Many of the men want to make the women feel welcome, but don't want to misinterpreted. We should help put them at ease!

There's even more in the article, so be sure to check it out.

Now, in terms of whether I'm convinced about quotas...

It certainly does seem to have helped in this case. But I'm still not comfortable with the idea that X number of women must be hired by such-and-such date. I'd rather see a policy that states a goal rather than a rule.

Because there have been studies suggesting that the name at the top of a resume can inadvertently influence hiring decisions (by both men AND women), it might be a good idea to implement blind resume reviews and perhaps careful training for recognizing talent and ability during interviews. Then, in the end, if it comes down to a set of completely equal candidates, then choose the female to improve diversity.

I hope this topic will stir up some strong opinions - please leave a comment and let's get a discussion going!

Wednesday, August 5, 2009

I'm already excited to get going with my new area of research for my PhD. Although nothing is set in stone, I would like to work with augmented reality, and am interested in applying the technology to educational entertainment. This will allow me to take a more people-oriented approach and learn a bit more about the psychology of human-computer interaction. I've started to collect stories, links, and papers on the topic, but wasn't sure how to best organize them all.

I started by putting some links together in Google Notebook, which is no longer being developed, but still available for current users. This is fine for some basic, unchanging links, like lists of software, conferences, etc, but isn't very good for organizing academic papers. I tried this during my Masters, and it's hard to make notes and find info using this method.

So I set out on a search for research tools. I got a few ideas through some basic searching, and got some pointers via my Twitter contacts. For example, check out this detailed article at The Byte Baker. A lot of the promising software seemed to be Mac only (I use Windows), but I eventually stumbled upon a few that seemed to fit my needs.

I found the following software that is either for Windows or is cross-platform:

Some of these are not research-specific, but general note-taking programs. Evernote in particular looks really slick, and apparently works well on all devices, including iPhones. It's not quite what I was looking for in terms of organizing papers and such, but could be worth trying for other applications in the future.

JabRef is a reference database that I used during my Masters in conjunction with LyX to write my LaTeX papers. It runs in Java and is very easy to use. Highly recommended for making bibliographies, but not my first choice for general organization of potentially interesting papers.

Idea Rover "absorbs and crystallizes your research ideas and new sources into outline-structured notes, releasing your brain from monotonous switching and searching for relevant information." I haven't tried this yet because it seems that it would be more useful at a later stage, but I think I will give it shot eventually. At least it is targeted to PhD research specifically.

The one piece of software from this list that I have installed so far is Mendeley. It is "a research management tool for desktop & web." There are a few features that I really like so far. First, it has a PDF viewer that, while it seems to crash a little too often, does allow you to annotate your PDFs pretty easily. If you don't have the PDF, that's ok - you can still track the source and write notes about it. It connects to online citation sources to fill in missing info and can manage your PDF files if you want it to. You can synch your sources to your online account, making them available anywhere. There is a social network of academics that you can use to share your sources with if you want to (could be useful for a particular research group). Finally, it allows for some decent searching capabilities within your source list. So far a winner for me!

If you know any excellent tools for organizing PhD research and online PhD program research (at any stage of the game), tell me about it!