Monday, April 13, 2015

Goose Cam

In early April this year, I stepped out onto my balcony one morning and was taken aback by the Canada goose that perched on the edge, staring back at me.

Initially, nothing thinking anything of it other than "this is neat", I tried to shoo it away.

However, the goose came back several days in a row and decided to keep an unusually protective stance on my tomato planter.

A few days later, I discovered that a goose had decided to make a nest and lay eggs on my balcony!

I got in touch with the Wildlife Preservation Society of Edmonton, hoping that someone might be able to come and relocate the nest. The Wildlife Society's information along with the research that I had begun to do for myself led me to learn that Canada geese nests are federally protected under the Migratory Bird Act of 1918. There would be no moving of the nest, I'd be having a new roommate for the next month.

I soon set up a webcam so that myself and others could keep an eye on the goose and her eggs. I tweeted out to Global News and within a few hours I was being contacted by Global, CBC Radio, Virgin Radio and Sonic Radio who all wanted to have me on the air to talk about the goose! Here are some of the segments:

Global News
CBC News

In the following weeks, I decided to put a poll up on my blog where people could vote on what to name the goose. A number of popular names popped up including Gertrude, Bertha, and Juliet, but after nearly 1000 people voted, Lucy was ranked number one.

As Lucy sat, incubating her eggs, the webcam I had set up gathered over 40,000 views with people tuning in from over 80 different countries! Lucy became somewhat of an international sensation. I had people contact me to tell me they'd watch Lucy every morning before work. The kids in my mom's special needs class would have the webcam up during the day. Others would say how they'd check in on her each night before they went to sleep themselves. Although as expected, Lucy was very cautious and protective of her nest at first, she seemed to get used to the idea that she was not the only occupant of the building. Though my appearances on the balcony would be met with an initial "warning hiss", once she realized that I wasn't going to harm her or her eggs, she would simply keep a watchful eye out and would even pose for a few pictures with me.

After enduring a freak snow storm and putting up with the occasional magpie vandalizing her nest, Lucy's eggs began to hatch late in the evening of Saturday, May 9th. With the most amazing timing anyone could have anticipated, the remaining eggs were hatched throughout the night and by the following morning, which just happened to be Mother's Day in a large part of the world (including here in Canada), Lucy was a new mother to a full nest of little goslings!

For the next 24 hours, Lucy closely guarded her new babies and kept them warm while they began to chirp and pop their heads out through her wings. The father goose, who could be seen on the opposite roof for the last few weeks, eagerly watched as his young ones wriggled around their nest.
First thing the next morning, Lucy decided it was time to leave the nest and dove off the balcony, 10 stories down, encouraging her babies to follow suit.

Fearlessly soaring down 10 stories to the roof of the parkade below, the goslings were reunited with their parents and began to waddle around for the first time.

With the aid of the Wildlife Society, an attempt was made to capture both the adults and the goslings from the parkade roof in order to transport them all to a local park. The attempt proved not to be as easy as one might think however, and it was clear that the family was becoming very stressed with the male goose even flying away at one point. It was decided to leave them be for the time being so that they could regroup. Later in the afternoon however, a second attempt was made, this time to capture just the goslings and release them on the street level where the parents could easily fly down to. This effort proved to be successful and the goose family set off to began their own adventure.

Several media outlets picked up on the story once again and asked me to share my story:

CBC News
Global News
CTV News

Though it was an interesting and unique experience, it was also unplanned and unexpected. Having just moved into my condo last summer, this spring was my first goose nesting season and it had not crossed my mind that the tomato planter on my balcony could be chosen as a nesting spot. Unfortunately due to the federal regulations in place, there was nothing that could be done to move the nest once the eggs had been laid. The whole experience, while entertaining and while I'm glad is something I was able to share with the world, was also very educational, and it's with that in mind that I would encourage anyone with similar locations on balconies etc., where a nesting could occur, to cover or remove those options for birds during the spring nesting season, so that the birds may pick a more suitable location such as a tree.

I've learned a lot about geese throughout the last month and while I'm no expert, I've certainly been in touch with a few and can pass on any knowledge I've gained should you have any goose related questions. I'd like the thank the Wildlife Preservation Society of Edmonton as well as all of the helpful residents of my condo building and the surrounding buildings for all of their assistance.

Friday, January 2, 2015

Scrolling LED Licensing Sign

Part of the responsibilities taken on by my team at the U of A include maintaining the software licenses for dozens of different software pieces installed in the smart classrooms and instructional computing labs throughout campus. It's necessary for us to know when software is expiring so that we have to opportunity to update those licenses before too many students and professors start to complain. In discussion with my team lead, we identified that our current system alone (inputting license expiration dates into a Google spreadsheet) was not enough. I set up a script to email out to our team 10 days in advance when a specific license would expire, hoping that could help solve the issue, but with the many hundreds of emails the team receives each day from various reports and incident tickets and logs, the license emails easily became lost in the mix. We needed something more visual, something more "in your face", and then I stumbled upon a blog post by Pavel Shved.

Pavel's post details a project he took on to create a transit timetable sign for his home. The signs which in many big cities hang at bus stops, display information about the upcoming routes and the time until their next departure. This project itself it something I'd love to do, however, Edmonton Transit busses are not currently equipped with real-time GPS devices and/or the GPS data is not available publicly. Alas, Pavel's project was a great inspiration for mine, but instead of using a sign to display bus times, I'd use it to display software license expiration dates and I'd hang it in the office!

Pavel's project was written in Ruby; a language which I have limited experience working with. Thankfully though, Mike Metral seems to have also been inspired by Pavel's project and made a Homemade Sports Tracker by first porting Pavel's code to Python. Thanks Mike!

I had a spare Raspberry Pi device sitting in my desk and I now had Mike's code as a basis to work from, so all that was needed now was an LED sign. After proposing the project to my team lead and getting approval to go ahead, I ordered the same sign that Pavel and Mike both used and was ready to go.

After configuring the Pi and the LED Sign, I ran the test script which enabled me to hard code messages into the script and then display those message on the sign. Cool!
The next step was to write a script that would allow me to send multiple messages, and then scroll between them. In order to do this, I did eventually need to delve into the Perl portion of the script and play around with the MiniLED perl module. But, after some modifications to the existing scripts and learning a thing or two about perl, I managed it.
The last step was to pull the data from the Google spreadsheet we were using, and interpret it to display information to the sign. I wrote a script to pull all of the license info and then compare the expiration date for each software piece to the current date. If the software is due to expire within the next 30 days, it gets added to the list which will be displayed on the sign. After many hours of debugging and testing, I was finally finished.

The sign is hanging on the wall of the office now where everybody can see it. It updates every 10 minutes to pull the latest license information and now scrolls through any licenses that are set to expire soon so that we can go and update them in a timely manner and prevent any outages.

Overall I would say this was a great project for me to work on. I enjoy projects where I get to be innovative and "create" things. Though I did gain some valuable experience with perl from this project, I think the most value I got was from learning how to use python to interact with Google docs. We are Google-heavy at the U of A and I'm sure the knowledge I gained from this will come in handy again in the future.

Tuesday, January 1, 2013

Pump It Up!

Pump It Up is a unity web game developed in javascript that I helped to make. Pump was my first real collaborative project that I'd ever been a part of and was a great learning experience for me!

The project got started in the summer of 2012 as a result of meeting my friend and co-developer Deon at a DemoCamp event hosted by Startup Edmonton. We got talking and Deon began telling me about an idea he had for a video game and asked if I'd be interested in helping to develop it. I'd always been interested in video games and as I was looking to pursue a career in that industry, I jumped at the chance!

We met up again soon after and Deon introduced me to his brother, Don, who would be doing all of the artwork and animation for our game. All of the artwork in this blog post was created by Don!

The previous semester while I was studying at Grant MacEwan University, I'd just completed an introductory course on video game development. It was in that course that I learnt just how much goes into making a game beyond just writing lines of code. I wanted to include my recently gained knowledge about design documents and project schedules etc. in our project and as it turned out, Deon already had begun to work on those. For the next few days we hashed out concept documents, design documents, productions plan and art documents, even a business model! Deon then spent some time turning our rough ideas and excel sheets into professional looking documents, the type you'd expect the Google's and Facebook's would be creating for all of their projects.

With lots of the documentation in place and a schedule of tasks to be completed, it was time to get coding. I'd briefly work with javascript before, mostly just from playing around in creating websites, but this was my first opportunity to really apply what I'd learnt so far and to learn a lot more along the way.

We were fairly good at keeping to our schedule and within a month and a half, had a working product that people could actually play! We had discussed plans to release the game as an app on the iOS app store but upon researching the logistics of doing so, we realized that there would be quite a bit of cost involved. Not only would we need to purchase a Unity iOS license to publish the game as an iOS app, we'd need to purchase an iOS Apple Developer license, and if we wanted to publish the game as a company as opposed to just one of our personal accounts, we'd need to register with the City of Edmonton as a company and have business permits and partnership registrations and all sorts. In the end, we determined that as this was just a beginner project for all of us and was mainly just a learning experience, we'd just treat it as a project to add to each of our resumes and perhaps looking into releasing it again in the future if we had future games to also release.

Pump is a sport that has been played for generations. The goal is to keep the ball off the ground. However, one major rule makes Pump an entirely new beast to conquer: you can’t be in contact with the ball and the ground at the same time! Master timing and technique to force your opponent(s) to mess up, and you could be the next Pump King or Queen!

You can find our initial beta release of the game here.