Thursday, September 4, 2014

6 Months @ Mozilla

Exactly six months ago I started working as a remote contractor for Mozilla. The only way I can describe it? AWESOME! And not awesome as in "This burger is awesome". Awesome as in "Wow, I'm working with some of the greatest engineers in the world on something that will make the world a better place!".

So, first of all, what did I work on these past 6 months? 

  Per app offline for Firefox OS (786419):
This was a large chunk of my time. It involves providing a way to set each individual Firefox OS app offline while the entire operating system is still able to connect to the internet. It is very close to shipping, but I keep finding bugs and weird ways it interacts with other code.

  Resource Timing (1002855):
I took over this bug from one of last year's interns. At the moment resource timing is preffed off in Firefox (dom.enable_resource_timing), waiting for bug 936814 to be fixed. It was really interesting to work on this, especially since I managed to identify a bug in the spec.

  URL parser
I got to fix several bugs in the way Firefox parsed URLs, especially in the way IPv6 URLs were considered - bug 960014. This was a lot of fun. I got to dive into some pretty old code, and change it a bit. There is more work to be done on this, and hopefully we will soon be able to do it in a smarter way, by using a lexical analyzer.

  Captive portal detection (Wiki)
This is a really difficult thing to get right. Captive portals (the login window you get redirected to at hotels) can do a bunch of really nasty things, such as injecting content into HTTP pages, provide bad TLS certificates and behave in really odd ways. Having Firefox detect such cases, and make it easier to login into a captive portal while preserving your open tabs would be great. At the moment I got sidetracked by other things, but this is one of the big things I'll keep working on in the near future.

  Leaky websockets (983243)
A race condition in the WebSocket code made it possible for a TCP socket to leak, and stay alive until the browser was closed. Since the socket was normally closed at shutdown, it couldn't be picked up by our automated tests, so figuring out the problem was tricky, but it proved to be a worthy foe, and an interesting learning opportunity.

There are just some of the most recent or note worthy things I worked on. I don't even remember most of them, but the really cool thing is that my bugzilla report for the past 6 months is publicly available, for anyone to look at.

Apart from the awesome work, there are other perks of being a remote engineer for Mozilla. I mostly work during the night and early morning. It's a habit I picked up at university, an I'm extremely happy I'm not constrained by a 9-5 work schedule. Also, the fact that my office is roughly 15 seconds away from my bed, and that there's no required work attire, safes me tons of time that I can spend more productively.

Interesting fact: I've constantly felt like a n00b for the past half year. And it's really hard not to be one, when surrounded by some of the smartest people in the world, true legends that have helped build the web. I can only hope that being around them will rub off, and thank my colleagues for all their help and advice in the mean time.

Another great thing is that I have a say about what I work on. My preferences, interests and skill are always taken into account when assigning tasks, and although I'm relatively new here, I still feel that my opinions are valued.

Even though it's growing to be quite a big company, it still feels like a startup. With employees all over the world, thousands of volunteers, a strong commitment to Open Source and the Open Web, it feels like the greatest workplace in the world. And it probably is.