Firstly, we survived and we are awesome. There are few things better than seeing 5 groups send files back and forth over wireless modems on a protocol we designed and then being told that you are the first group in 20 years to accomplish that.

What was interesting for me (between periods of frantic bug hunting) was watching how people worked, how they tried to solve problems, and how they handled things going wrong. From watching that, I’ve realised some things.
I need to be less… controlling about things. I try to always be open to new ideas and new methods, but I always try to ensure that everything is done the way I would do it. This leads to other people feeling useless, and me reaching the point of burnout from trying to do everything. I will always have a need to know how the project as a whole works and how all the pieces fit together, I’m definitely not one for blackboxing. But I need to trust other people to do things, and trust that they can be help responsible for what they’ve done.
Almost as importantly, someone needs to hold me to similar standards. There should be debate about how to do something, and someone’s idea should not be used simply because it’s easy, or it sounds good. I should need to prove my reasons to people before I’m simply given the freedom to implement it.

Those of you who felt like you couldn’t contribute anything, or (worse) those of you who got stuck writing documentation at the last minute: Don’t let me do that to you again.

Gwibber, or “Planning for Plugins”

I have been consistently pleased with Gwibber as a Twitter client over the past year or so, and I’ve seen some very nice improvements over that time (support for new services like Buzz and Digg, support for displaying thumbnails of Twitpics, etc.). Yesterday I was working on a simple prototype for fetching status updates from a web service, and thought Gwibber would be a good place to integrate it.

While I was (mostly) successful, the experience left me with some questions about plans for extensibility by 3rd party modules for Gwibber. Every service is implemented in its own Python file in a directory, adding the class for a new service was easy. Making Gwibber load it was much more difficult.

Gwibber’s client file explicitly imports all of the service modules. This is a problem: if I want to add my own service, I need to edit core Gwibber files. Not to mention, those files are of course in /usr which means I need superuser permissions to do so, and any Gwibber updates will overwrite those changes. I’m certain that there are “plugin” module loaders out there for Python, and if there aren’t any that are suitable it’s easy to write your own (I’ve done so in the past for a different project).
The second part of that problem is that simply importing the module isn’t enough, I also had to edit a dictionary in the client file to add my service to the list of recognised services.

Success… in some ways. The problem now is actually adding the account. Gwibber’s UI stuff seems to be entirely separate from the core, and each service defines its own UI file. I had to create another py file to tell it which UI to use (I cheated and re-used an existing UI, otherwise I would have had to create that as well).

Gwibber is a good program that works well, I wouldn’t have chosen it as my test area if I didn’t like using it. The actual service modules follow a reasonable structure (although some are inconsistent, and there is no documented API). The problem is that everything is hardcoded into the client.
I’ve seen feature requests for other services in Gwibber, but at the moment it isn’t feasible to write support for those as some sort of plugin.

Maybe I’ve been hanging around Pidgin too long, but I think the concept of every service/protocol being a plugin that is loaded dynamically is a very good one; and something that would make Gwibber feel a lot more open to 3rd party development.

Moodle 2.0 Theme Contest: Silvern

Announced at, I decided that this was the perfect excuse to actually finish the theme that I’ve been developing for over a year.

That year has been interesting, since almost every single piece of code related to themes has changes multiple times, requiring a number of theme rewrites to keep it all up-to-date. I seem to repeatedly have this issue with writing lots of code for something that’s in active development, and then rewriting that code to keep up with the API changes. >.>

The theme uses one of the new custom renderer classes to output HTML5, and includes a number of admin-configurable settings such as colours, welcome text, and the site logo.
My entry is called Silvern.

Silvern Moodle Theme

Silvern Moodle Theme

Edit: I almost forgot to mention: All the code for this theme is available on my github account. Enjoy :)


Yes, I know I haven’t updated recently… Here’s a basic summary:
Oh noes! Grad cut-off and chaos!
SSGH fun.
w00t! Graduation!
Geography exams make me a sad llama.
BBQs are awesome.

Anyways, I’m heading off camping again. :D Tofino for a week (leaving tomorrow), and then Barkerville for a week after that. Both are a lotof fun, and both should yield some amazing textures :P

Victoria, Day III

The 3rd day is always the least eventful, and involves a lot of travelling. We walked to Timmies early this morning, and then got on the bus to head to Fort Rodd Hill. We spent close to two hours at Fort Rodd before heading to the ferry to get back to the mainland. The best part of these trips (especially Connections trips) is sitting up near the front and listening to the teachers talk. This is how one learns interesting things, such as the taste-saturating abilities of ketchup.

Overall, the trip was great, and I had a lot of fun again :D

Victoria, Day II

Woke up early this morning (although not quite as early as yesterday) in preparation to head out to visit Frances Kelsey, the only other self-directed school in the province. Stopped at Timmies for breakfast (<3) and went to FKSS. Got a tour by some of their leadership students, played a bit of capture the flag, and then ate pizza with their grade 12 cooking students. I was also introduced as an “invaluable and crucial developer of [my school]’s website” and gave my name to some teachers at FKSS who were hoping to start their own website using the Moodle Project. FKSS is very different from our school, and yet so similar. They have two blocked classes for every subject, and then fewer “flex” times. While our school has a number of very large work areas, FKSS has many smaller work areas, and many more seminar rooms (interesting politics behind that… very interesting politics, that I often see mirrored at our school). We headed back to downtown Victoria afterward, and the grade 11s started the Amazing Race. Jessica, Maggie, and I walked up to Craigdarroch Castle and spent about an hour touring it. Still as wonderful as ever, and still where I one day dream of setting up my residence ;). Then we caught a bus up to UVIC. Not just any bus… a double decker bus! It was amazing to feel so high and superior to all of the other cars on the road, while actually using public transit. Jessica loved the bunnies at UVIC, and she spent 10 minutes or so futilely trying to pick one up in hopes of taking it home. We caught the bus back downtown and grabbed a snack before meeting Godfrey in Bastion Square. Ah, the annual “Food Eating Contest” where each team tries to find something absolutely disgusting and eat it. One team this year had gone to a market in Chinatown to buy their foods, and misheard the cashier say “semen fungus” in place of “persimmon fruit”. I swear Godfrey was howling with laughter for almost half an hour. After the contest, which was filled with its own surprises (btw, congrats Mallika for eating her own, and everybody else’s concoctions). We went to Earl’s for dinner, which was good food, but rather slow service. Then Mallika, Maggie, and I went to take more photos in HDR :D. Came back to the hotel and had a small, short-lived game of football, before heading in for the night.

Victoria, Day I

Woke up at an entirely unreasonable hour (4:30) today to be at school for the bus. Trip to the ferry was rather uneventful, although filled with delicious candy. Ferry trip itself was a bit boring, a number of us were hoping for wireless Internet on the boat, but unfortunately there was none to be found. A few of us played cheat for a while after heading up on the deck. Arrived in Victoria and had some free time for lunch (food court of course! :D) and then a tour of the legislature buildings. The tour this year was much better than last, and I learnt a few things that I hadn’t known before. Then we headed back to check into the hotel, and get things organized. We went out for the group dinner, which unfortunately was to a Chinese buffet-style restaurant. I, alas, am not a big Chinese-food eater. We then walked around downtown for a bit, where Mallika and I took some of the most amazing photographs with Mr. Biggar’s D300 camera. HDR is so definitely FTW! Ghost tour started soon after, and was much like the tour last year, although slightly less exciting IMO. Got back to the hotel, and did a quick Timmies run before bed.

Random fact time: There is only one flavour of ketchup, because ketchup reaches all of the taste areas of the tongue, and in fact saturates them entirely. Ketchup cannot be more “ketchupy” because it’s already overloading the taste sensors in your mouth. This is also why ketchup is so perfect for disguising foods that you don’t like.