Sometimes when you are waiting for something, time goes by very slowly. But because you are so focused on that one thing, everything else in life moves really fast. I’ve been unemployed since the end of January. During that time I made ZenIRCBot significantly better, I wrote a simple site for tracking your workout stats, I attended two conferences, PyCon and Barcamp Portland. I visited two states that I’d never been to. Flew for the first time and took my longest train ride.
Basically I’ve done a ton in this time. But it feels like it has been a really long time because I’ve been so focused on getting my resume put together with Mozilla in mind. Then once I finally had that to a point that I was happy, I started showing it to friends for them to review and that took forever. Then I handed it off to my friend Jason to apply and write a letter of recommendation for me.
Then I waited another eternity (it felt like at least) to hear back, be flown down and get an offer from them. I was so focused on that, that everything else flew by me and I may not have gotten the most out of things. Which is fine because I’ll be starting at Mozilla on the 29th of May. Working on http://addons.mozilla.org and related sites with the WebDev team.
What that should really read as, is that I am incredibly lucky to be getting the chance to work at a company that I’d only really dreamt of working at before. I’m going to be working with some awesomely brilliant people, for a company who’s mission is to make the web a better place, while working on some really interesting and difficult engineering, doing it in a language I love (Python) with a framework I love (Django). If you know me, then you know how much I love working on interesting hard problems.
I’m writing this mostly as a stream of consciousness because I don’t have a better way to put this stuff together. In the future I’m hoping to take some time, get some peer review for my posts before I put them up and talk about the awesome things I’m doing at Mozilla and in my free time. If you want to be someone to helps me with my writing, let me know, I could use all the help I can get.
GitHub Repo Widget was rejected during its review due to the GitHub library I was using doing JSONP which (quite legitimately) the add-on reviewers flagged as remote code injection. This was a setback as I relied on that library to do most of the work for me.
In response I started writing another GitHub library that used AJAX to hit the API and get the data back I wanted. I was stumped when I was getting a status of 0, status text of “error” and no explanation of why this was happening. Turns out it was being block for doing a cross-domain request. Next, I learned about CORS and thought that might be my savior, until I realized I wasn’t executing from my own context but from my tab’s context so it is that domain that things have to come from.
I gave up and asked in #jetpack on irc.mozilla.org and was pointed to the request module that is part of the add-on SDK. I was a bit bummed as I knew this would require quite a bit of rethinking how I do things. Fortunately it wasn’t too bad, two hours and a whole bunch of message passing later I had a module that would work with v2 of the GitHub API and filled all the needs of my add-on for now.
I’ll toss another update on my blog when it is finally accepted as a full add-on and is searchable.
I’ve spent a considerable amount of time in the last two days writing my first Firefox add-on. I have the pleasure of working with their new SDK for add-on development: Jetpack. So far it has been a rather pleasant experience. A few times I had to ask questions on IRC because something was phrased differently than I expected so it didn’t seem like the thing I was looking for. Other than that, most things have been pretty intuitive.
I’m in the process of writing a little add-on that will sit in the bar, and when clicked will show a window of all of the user’s GitHub repositories with quick links next to them for code, issues, wiki, and home page. This has stemmed from my dislike of the 3+ page loads needed to get to the issues for a given project, which can be pretty bad on crappy cafe wireless. I considered a desktop app, but then I’d have to make it cross platform as I develop on OSX and Linux.
The source is on GitHub, unsurprisingly. It is currently a work in progress, but I have a list of issues for 1.0 and once those are all complete (and any other that come up as blockers) you’ll be able to find my add-on on the Firefox Add-ons site.
One of the parts of the process that made me really get into going with this project was their new Add-on Builder which lowered the barrier of entry incredibly. After a few hours of docs reading and fooling around with it, I ended up moving to local development. Not due to any flaw in their Add-on Builder, other than it isn’t Emacs.
I started using their command line tool cfx which also made it really to change some code, save, then run it in a clean browsing session. I was surprised how nice these tools are, they are head and shoulders above most language/framework development tools I’ve used. I look forward to using the “cfx xpi” command then publishing it to the web, just as easily as I got started. Overall I highly recommend the experience to anyone who has any desire to build a Firefox add-on.