The Future is Bright? (Maybe)

The Story

Its Saturday night and all I want to do is watch The Amazing Spiderman. Hey, this should be easy, right? Just put the movie on a USB hard drive and plug it into the Xbox or PS3, eh? Wrong. This is unfortunate, but I’ll figure out another way; my desire for Spiderman will not stop at this speedbump.

My next logical step is to setup a UPnP server on my laptop to stream the movie to the PS3 or, eventually, the Xbox.

MediaTomb can transcode your media and serve it to any UPnP client. It streams to any PS3 without an issue. A clause to the previously mentioned was some “audio playback issues”. Streaming to a Xbox 360 was unsupported. I was faithful that the Xbox would support the de facto standard of media streaming, UPnP 1.0, but alas, no dice. MediaTomb is out.

Next up was uShare. uShare is another UPnP server that offers minimal configuration and Xbox streaming support. After setting up uShare and pulling up the shared content list on the Xbox, the Xbox would not, for the life of it, show uShare and let me stream Spiderman.

At this point I was getting pretty pissed off at these proprietary, closed-source boxes of DRM.

It was time to give up the fancy streaming technologies and settle on using a USB stick to physically plug into the console and watch Spiderman. Five minutes later the movie is on the stick, plugged into the Xbox and the menus are flying by as I impatiently page my way towards the location of the movie.

Lo and behold! Here comes another issue. To watch the video which has AAC encoded audio the Xbox has to download a free codec pack to be able to read it. To get the free codec pack I had to be signed into a Xbox Live account. It was not my Xbox, so I had to remember some Xbox Live burner account I created many, many years ago. My Live account has multifactor authentication enabled (good job Microsoft), so it took me a second to understand that I had to create an application specific password for the Xbox, since the Xbox didn’t have the ability to login using multifactor authentication.

After logging in, the “free” purchase of the AAC-decoder-didn’t go through because I had to have a credit card attached to my account. God damn. The last thing I want to have happen is for someone to steal my credit card info from hacking into some corporations database. I tried a prepaid credit card with no money on it, but that failed, so I then put in my PayPal details and quickly got back to purchasing that FREE codec pack for watching Spiderman.

Then it finally worked.


Where to start. Where to start. Home theatre media devices have only been around for a decade. Being pioneered by hackers trying to get their media onto their TVs, companies soon entered the market. With them they brought brand loyalty and limitations to how you can consume your content. The walls on the walled garden kept getting higher. It is enticing since its simple, but your freedom to purchase and consume content from wherever is limited by what the company thinks is best for maximizing profits.

This is why open-source is ravaging the proprietary, closed-source software and hardware market. The Android Open Source Project is a perfect example. Over its existence, its taken a huge chunk of the cellphone market away from the closed-source systems of Apple and Microsoft. Android has achieved this by (using Linux first of all) providing an ecosystem where electronics manufacturers and end users can completely customize the experience of their devices by being able to edit the source code, if needed. With Apple and Windows products you get a simple system that you’re expected to like and live with for the extent of its use. If you’re not able to change an aspect of how it works, sorry bud, you’re out of luck. Have fun reverse engineering that code. Android users can and are actively participating in creating and modifying their devices to their hearts content, while reintegrating their changes back into the ecosystem, making the Android platform all the more better for every user since they have the ability to choose.

Getting back on track, Digital Rights Management, or DRM, in most cases makes it harder for the consumer to enjoy their content. I had this exact problem when trying to stream Spiderman to the PS3. Nonstandard specifications, and forcing a walled garden onto the device offputs the consumer since their content may be stuck inside without any way of getting it out. The general population doesn’t care about this though.

Android is already making its way to the TV via set-top boxes, and recently the Chromecast, but other open-source projects are making their way as well; Ubuntu TV being one of those. Hopefully the market can flourish and spawn a large community of hackers who contribute and make these open-source projects better.

I just want to be able to watch Spiderman without jumping through hoops.

Of Recent Events

I was going to write a post about looking forward to tonight’s Ottawa WordPress meet-up, but as of today’s events I find that there is a more important topic to blog about.

Today’s attack on Parliament and the shooting of Nathan Cirillo at the National War Memorial reminded me of 9/11. When 9/11 happened, the event seemed so surreal. Broadcasted over the TV or on the internet, it was hard to understand the scene for someone who has never walked the streets of New York or understood what this meant in a geo-political sense. I was only a month shy of being 8 years old.

Back to October 22nd: Never having lived so close to an attack like this, I originally thought this was just a random shooting. As I followed CBC’s live blog though, I started to put things into perspective. This wasn’t just a shooting, this was an attack on the Government of Canada.

Living in Ottawa and knowing the downtown core area very well has made this event more personal than it would have been if it had occurred in another city. Having walked those streets and visited those landmarks on many occasions, it’s hard to believe something so bad could occur at the same place where I associate safety and good times with.

Standing at my desk, trying to get work done as I constantly check for the latest twitter updates, I eventually break for lunch quite late in the day: sometime past 2 pm. Hitting up my favourite shawarma place, the day seems even eerier when the restaurant is dead empty. Here I begin to write this post while chowing down on a healthy serving of garlic potatoes.

Interesting Articles


Goodbye teenage years, hello twenties!

Gone are the years of figuring out what this whole life thing is about, time to finally take that knowledge and have the time of my life shaping my future into whatever I please.

Looking back over the year, I’ve accomplished a lot. I’ve landed an awesome co-op job working at a small company solving issues in the hospitality industry, a much busier freelance web design job on the side, and started cooking healthier meals. Not to mention, its been at least a year having moved out of my parents house into my current Ottawa residence with all of my roommates 🙂

Here’s a few other miscellaneous achievements:

  • Made and barbecued the perfect homemade burger
  • Read more fiction, non-fiction and computer science books and articles
  • Found my love for Cherry MX blue keyboards
  • Commute to work every day via bike
  • Expanded my music tastes

Some things that I’m looking forward to this year are going back to school after my co-op term to take some advanced third year courses, work on some personal programming projects, and cook more delicious food. But who knows? Much more notable events will definitely occur in the next year. Those unknown events are the ones I’m most looking forward to!

Just like what Matt Mullenweg, the creator of WordPress has been doing, I like the idea of writing a post on your birthday for reflecting on the past and future year. Here is it’s first form on my blog.

A Path To Justice

apathtojustice-clipI would like to announce the completion of one of my latest website jobs: A Path To Justice.

A Path To Justice is an upcoming documentary based on Humberview Secondary School’s law class that brought forth new evidence to the wrongfully convicted Steven Truscott case. The new-found evidence warranted a retrial, ultimately leading to an official pardon by the Canadian government.

Over time this website should grow to serve the purpose of complementing the progress of the documentary: from planning, to production, then finally distribution.

The website may be visited at

Moving a Jenkins Instance From one Server to Another

During my time converting ZDirect’s SVN repo to Git, we decided to move our code from a server in Florida to a server in Ottawa. The same server also hosts our Jenkins build server. To keep bandwidth bills and build latency down we’re moving the Jenkins server over as well.

Trial and error led me to copying the entire Jenkins directory, which is either at the JENKINS_HOME environment variable or ~/.jenkins as the default. Launching the Jenkins executable while setting the JENKINS_HOME environment variable will bring up an almost perfectly configured instance of Jenkins. I say almost because the Jenkins configuration should be looked over for any settings that are wrong for this new system. Some Jenkins configuration options that I had to change was the JDK home, Ant home and the external url of the server. An example launch script looks as follows:

$ JENKINS_HOME=/path/to/jenkins/home/folder
$ java -jar jenkins.war

The Jenkins Wiki outlines how to move specific jobs as well.

Svn to Git Migration

At my workplace ZDirect, we have a decade old SVN repository hosting about twenty projects and totalling about 13 000 commits. Recently, we’ve decided to switch over to using Git from SVN because of SVN slowly becoming antiquated and its various productivity slowdowns that are not seen in new version control systems.

Some immediate goals
  • Speed up the time it takes to clone a repo
  • Simple branching and conflict handling
  • More code reviews

That last point about pull requests is actually a feature of the web-based software hosting system. We chose GitLab as our solution, but more on that will come in a later post.

Some long-term goals
  • Move towards continuous integration
  • Use advanced Git workflows

Since being the most comfortable with Git, I volunteered myself as the “Migration Lead”, where I coordinated both the technical side and the human side. There is an incredible amount of articles out on the web talking about how company X or average Joe Y moved their SVN codebase to Git. What has really helped me along the way so far is Atlassian’s Git articles and tutorials; outlining a standard workflow for the process really makes it trivial for anyone else to do the same.

Hacking Banshee

Since syncing music to my Samsung Galaxy S3 doesn’t work with Linux (for the most part), I’ve constructed a method of transferring the music over ssh from my laptop to my phone using a cool little program called Unison. The solution is flawless and allows two-way syncing.

One problem, (or challenge depending on how you think about it), is that the playlists that are managed inside of Banshee Media Player on my laptop have to be exported individually and manually to a file when I want to transfer them over to my phone. Having a way to automatically export all of your playlists to some predefined directory would be very helpful for automating my music syncing. After some Googling it seems like no one has solved this problem yet.

I grabbed the Banshee source and started looking over its files associated with playlist exporting. Bingo! Shortly thereafter I found in the file Banshee.ThickClient - Banshee.Gui.SourceActions.cs the method OnExportPlaylist() which has the user interaction for exporting a playlist and the holy grail, the playlist.Save() method call.

The next logical step for me would be to figure out whether this functionality can be encapsulated into an extension, or if that’s not possible, a patch. I’ll definitely be following up on this.

Job Update and a Concurrency Rant

Well, it looks like the early bird catches the worm. After my roommates and I took this inconvenient online course introducing us to Carleton Universities Co-op program and multiple presentations and resume workshops later, I’ve finally done it. I’ve landed myself a prestigious 8-month co-op at ZDirect, a global company that produces hotel marketing automation software. Development is exclusively done in their downtown Ottawa site and sales offices are around the world.

Since Carleton’s Career and Co-op department uses a web-based job portal by Orbis Communications, and the fact that students like to procrastinate and leave everything to the last day that things are due, the résumé and cover letter uploading process has a flaw where if there are many users trying to concurrently upload their documents, this “document converter” would stall and not let you progress through the application process. My roommates and I started panicking and thinking of ways to fix it. One of my suggestions was to call up Carleton’s Computing Services (CCS) and order them a pizza in exchange for having them reboot the server. Unfortunately after giving CCS a call, they said the servers were managed by the Careers and Co-op department. Dead end there since it was already 9:30 pm and no one would be at the office.

I decided to compromise and find emails of hiring managers for my top 10 choices. Long story short, I emailed ZDirect that night, had an interview with them the very next day (that went very well), and got a phone call the day after with a job offer.

Lesson of the day: have a backup plan and design and test your concurrent systems very well!