tweet: @fwenzel Hooray! But the site uses broken SSL :(
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 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.
Joined NetSecure Technologies - a small software security company specialized in endpoint communications. Working on release management and Testing for their main product the SmartSwipe.
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.
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.
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.
Note: Some of this is outdated (such as Perl).
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
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.
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.
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 output.
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.
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'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.
While far from any powerful scripting language, and feels like scripting in assembly as opposed to javascript or python, NSIS provides the tools to create both simple and powerful installers thanks to its community created plugins. The major advantage when using NSIS over a easier software installer such as WISE, is that you have more control over the installation process.
This website is done on top of the django framework, using jQuery as the javascript library.
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.
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.
These are the revision control systems that I use, though I usually only know enought to checkout, create patches, and check-in.
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.
TODO
Puts a relevant title in the awesomebar for tinyurl.com and bit.ly
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
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.