Friday, May 18, 2012

Working out of Mozilla's offices

I've spent 2 days working at Mozilla Toronto's offices (MoTo) and I've found it to be a really effective space for getting work done.

The building itself is secure, meaning that I don't have to pay any attention to preventing my stuff from being stolen, and (unlike CDOT) I also don't have to ask wanderers what they are doing here or direct them to a prof's office.

I like the aesthetic of the office- wood flooring, support beams, and ceiling combined with brick exterior walls creates an atmosphere that ranges from cozy in the lounge area to professional in the meeting rooms.

There are many places available where I can work. A number of meeting rooms with sliding glass doors are available on a first come, first serve basis. These can be grabbed to do large meetings, pair programming, or even just solo work when you need absolute quiet. There's also a small lounge area, a kitchen, and a small dining area.

Supplies are quite plentiful. All of the spaces are equipped with Apple power adapters, so that I don't even have to unplug my adapter to move to a new space as wanted/needed. The entire office is also blanketed with wireless internet access that doesn't have any restrictions on it that have impacted my work ability. It's also clear that Mozilla employees have high priority placed on the supplies and equipment that they need, and there are resources in place to get those things to them quickly and reliably.

There's also a lot of food and snacks available. Various fruits and nuts, a wall of snacks, a cooler full of drinks, and (I'm sure) more are freely obtainable.

The combined effect of the things I've noted has been to remove obstacles from my workflow and substantially reduce the number of non-software development related tasks I have to think about in my day.
Aside from getting lunch I don't have to worry about making sure that I have a steady supply of food available to keep me thinking effectively throughout the day.
If I want to move and work at a new location I don't have to spend time unplugging my laptop and unlocking it and then dragging it plus my backpack with me to the new spot.
If I need to have a remote or in person meeting or do pair programming I don't have to take the time to reserve a meeting room or find someone with keys to unlock an office, nor do I have to manually reconfigure my network connection for the new wired connection because I can't rely on the wireless.
I don't have to spend time thinking about the security of my belongings because the doors to the office close and lock automatically, always.
The office environment also makes me feel valued and trusted, things that I want to return to the company in the form of lots of hard work, and I'm not even employed by them!

This has all made working with Mozilla on the gladius engine a very productive experience. I should mention that we're always looking for more people to contribute to or use the project- please don't hesitate to hop into #games on irc.mozilla.org and talk to dperit or ack or dmose about gladius!

Monday, May 7, 2012

I made a game!

I made a game! It's called Uprooted, and is part of the set of 4 Turtlesback games made for Native Earth by me and some other people. It's written in processing, and ported onto the web browser using processing.js
You can play it at http://turtlesback.ca/creationgames/
Enjoy!

Gladius introduction


I have been assigned to work on Mozilla's gladius game engine project!

The processes in use with this team at Mozilla are quite effective. They use trello for keeping track of and assigning development tickets. This makes it very easy to keep track of what has been done/needs to be done on a project, and if the tickets are small enough then you can clear out multiple ones in a day. This is a tremendous morale booster as it reminds you of everything that you complete every day, giving a real sense of accomplishment.  It can also serve as a reminder of how much work is left to do on a project, and how much has been done.

Trello is synced manually to github- new tickets are entered into github and then placed onto Trello through a process that I haven't witnessed yet.

Google Hangout has proved to be a good tool for doing group conferencing. Interface features, like automatically switching to show the viewpoint of the person who's talking, are the kind of subtle effectiveness that marks good UI design. It's also somewhat reliable! It sucks at notifying you that you've been invited to a hangout, though.

We've done daily standup meetings (performed sitting down, of course, this is the internet, we do things differently here) through Hangout. They're useful for letting people know about problems and what your plans are for the day, so that you have an ideal chance to fix problems, and it forces you to hear other people's plans. If you forget what a person is working on you can check on Trello. It would be easy to forget to check Trello and lost touch with other people on the project, but then the daily standups put you back into contact again.

Screen sharing has been working well for doing pair programming on Hangout, which has been extremely useful in getting me up to speed on javascript and the gladius engine. It's definitely been the most effective way I've seen so far of introducing a new person to a programming project.

As always github remains an effective source control/lazy backup mechanism. Though the actions that make up a typical workflow in git remain pretty arcane. Seems like a limitation of the whole command line interface in general- I remember having similar frustrations in old adventure games that took text input- the syntax of what you want the program to do won't always match up with what it is trained to recognize.

Webstorm continues to be an awesome IDE. A great deal of care has obviously been taken with its UI and design- it streamlines all of my processes, I've never had to fight with it very much to get it to do something, and it has all sorts of nice features (like github integration) built in. Getting started with it is quite simple, too- I just drag the project folder onto the icon in my dock and it just works.