My name is Cesar Oliveira. I am a 24 year old software developer, born in the small town of Murtosa, Portugal and immigrated to Toronto, Canada at a young age and stayed there for about 20 years. I now reside is Regina, Canada.

My passions are stubbornly revolved around the world of technology. Computers and programming are my brush and canvas. Programming is a mix of creativity and design patterns. I am involved in Open Source, mainly around the Mozilla project. I have done several Firefox extensions, and worked on many smaller projects. I regularly hit writer's block and not quite sure what I want to do next, but never have a shortage of things to do.

I blog and tweet like 90% of other open source developers

Education

I have spent 4 years in the Bachelor of Software Development program at Seneca College. The program has both a software developement and a business component. You learn about web development, marketing, project management, usability, and many languages such as C/C++ and perl. It was a practical education, with a little bit of theory. However, I also know that there is much that can't be taught in a single program, and a lot of theory that wasn't taught.

My first major non-school related project in school was a port of distcc to MSVC. distcc is a wrapper around gcc, and can distribute builds across multiple machines. Useful when you have several low-power machines. It was possible to compile distcc in Windows using Cygwin, but was still only compatible with gcc. We ported MSVC options to distcc. Our objective was to distribute a build of Mozilla Firefox, and we met it with success! There were plans to port it to msys as well, but that was never completed.

Doing that project opened up an internship with Mozilla during summer '07 because Mozilla at the time was using Cygwin.

Work

Future

Doing premium AMO editor reviews in a effort to earn some more money. You can find out more about it on addoneditor.com

Dec 2009 - Present

Joined NetSecure Technologies - a small software security company specialized in endpoint communications. Helping port their premier product, the SmartSwipe, to Firefox. And working on identifying possible security bugs in their product and finding ways to patch it

June 2009 - Nov 2009

Joined a (then) small domain monetization company called PPX Services as a Junior PHP Developer. Worked on a in-house project using a custom lightweight MVC framework. Worked on selenium tests and maintaining various company sites, and developed tools to track the various parameters of each website. Worked a bit on Wordpress development, including extending a custom plugin.

May 2008 - Aug 2008

A second internship at Mozilla after graduation under the position of AMO intern. My responsibilities revolved around doing a lot of web work and editor reviews, mostly working on the addons.mozilla.org website.

The main objective was to catalog all the external addons - those not hosted on AMO. This required to building scripts that would examine extensions and be able to catalog them into a database. When that was completed, a crawler was used to crawl though a instance of remora (the web software that addons.mozilla.org uses), to properly configure the web crawler not to download website but only look for extensions. In the process of completeing that, I found out our biggest extension repository - Google - did not allow anyone to crawl through their search results as it was a violation of their terms and service. This was a huge stumbling block. With no suitable alternative, the project was cancelled. While any project failure is a disappointment, I was given a chance to work on some AMO editor tools. And that rocked because it took me back to when I really enjoyed doing web development work.

April 2007 - Aug 2007

My first co-op position was at the Mozilla Corporation under the title of Developer Relations. Developer Relations was a mixed department, consisting of application developers, javascript experts, and even documentation employees. My intern responsibilities was on building tools for developers. My first XUL runner program I made was to provide a GUI to create MAR files by doing a binary diff of two directories. It was a good lesson into a completely different runtime and framework built on the same technologies as the web.

This internship had several positive effects on me, both professionally and privately. It greatly built up my self-esteem and self-worth, and heightened my independance personally. As well, it set the foundation for a long-term relationship with Mozilla and its other contributors. I went on to help with the Prism project and write the Firefox extension for that project. I then went away from XULRunner applications to find my own space in the Open Source world.

I have been fortunate enough to see quite a few places. I plotted most of them down on this google map.

Application Development and Utilities

C/C++

Although I have not done any major projects using C/C++, I still enjoy playing around with it. Some of the utilities that were done include

  1. A C++ hash table

    An implementation of a hash table using C++ templates. There are several other additions that provide a cache to improve performance. Including caching most recently used, caching by most used, and caching the newest values.

  2. A C++, object-oriented wrapper of the Linux Kernel's red-black tree algorithm

    Took the Linux kernel's implementation of red-black trees and gave it a non-template object-oriented interface. Including some tests. All functions except remove work.

    It is fairly useful for sorting objects. But less useful for other data-types.

  3. A C implementation of base64

    Yet another C implementation of base64, from scratch. It is almost identical in useage to coreutil's base64 command, but doesn't assume a 76 column width for output for MIME. You can specify it, however, with -w.

    Although slower to both encode and decode, it does support filename and url safe output, as well as base32 output. Though, there is still some work and test cases to be made for base32 output. It is also possible to do base16 outout.

Perl

I have done some perl in the past for web development and for more advanced scripting. Most recently (and it'll probably stay that way), I have submitted a patch to mozbot to output CIDs.

Java

I don't find myself doing a lot of Java. I have done "The Game of Life" as a project for my OO-patterns course. In total, 6 patterns were used including flyweight, factory, singleton, strategy, state, and prototype. While forcing patterns can be a bad idea, it was the point of the project.

python

Python's versitility and power lets use it for multiple purposes. For example, I have used it to execute multiple tests on C programs (beats learning a framework. And the program was simple enough for the testing to be through). I also used it to examine Firefox extensions to check for simple mistakes using a lexical parser.

Web development

django

This website is done on top of the django framework, using jQuery as the javascript library.

PHP

I still contribute to the addons.mozilla.org remora project, which uses cakePHP as the framework. A list of the bugs that I have fixed is available on bugzilla.

I have also done canvasLOL. A collaberative whiteboard. It allows users to share drawings on a whiteboard canvas. Each modification to a whiteboard gets recorded, so you can have a tree showing the path to a result.

VB .net

As part of a team implementation course, I helped write a project management program that students could submit their timesheets. The project was meant to replace excel spreadsheets as the tool used to record time spent on tasks.

Revision Control

These are the revision control systems that I use

Over the years, I have created several extensions. Many of which I stopped supporting as time went on and new ideas overtook old ones. Many of these extensions are finished, but not polished.

Adventurer

TODO

Safe

This extension was my first attempt out of a niche market and into the greater Firefox community. The purpose of the extension is to make websites that use SSL or extended SSL much easier to recognized. By adding a border around a website and changing the tab colour, it was much easier to identify when a website is using encryption. The extension also attempts to give a subtle hint when trying to send confidential information over a unencrypted chanel. This process is two staged. The first one is a key in the statusbar that illuminates when you hover over a submit button. The second is a alert prompt whenever you try to send a password to a non-SSL site

Saraswati

My first binary component extension. This extension requires Firefox 3.5+. It adds an option on the right-click context menu to show the metadata of an audio imbeded using the audio tag. It did this by analyzing the cached ogg file and reading it for artist, album, etc. It failed to gain popularity because the tag is rarely used. Many early adopters used javascript to inject the tag because a early bug caused the audio to automatically start downloading even if the user never clicked play.