Weeks 1-2

This summer I was accepted onto the Outreachy 2015 programme and invited to participate in an internship with Mozilla, working on their crash-stats web tool, which stores and processes Firefox crash reports to help crash hunters find and solve problems. My task over the next three months will be to work on the front-end, enhancing the user experience and hopefully building some new features too.

The first two weeks have flown by. I spent them learning how the site is used, getting to know the code and fixing bugs. The site uses the Django framework, but I’ve worked mostly with JavaScript so far, so it’s been a steep learning curve getting my head around Python. I’ve spent a lot of time looking things up and reading articles and code snippets.

One of the first weird things I noticed in the code was a bunch of curly brackets all over the HTML, containing what looked like Python. It turned out this was the templating engine Jinja. That was relatively straightforward to understand; more tricky was understanding Django’s system of apps, views, models, and so on, but thankfully the Django documentation is famously well written.

I have also been learning more general Python concepts, for example the best ways to raise and re-raise exceptions (this summary is handy), mocking in unit tests, and my favourtie so far: decorators, responsible for those funny @ signs in front of many of the functions. I’d used them before, while using this very cool profiling tool, but didn’t really know what they did. This article is a great read, holding your hand and walking you through the topic very clearly.

The first couple of weeks has also been largely about settling in. I’ve gradually become more comfortable with working on a big project, where all my code, pull requests and comments are visible to anyone who cares to look. (I’m having to sharpen my Git skills, in particular when it comes to rewriting history.) Luckily my wonderful mentor Adrian has been great putting my nerves at ease: he’s always willing to answer my questions (apparently there’s no such thing as a stupid one) and his guidance and constructive feedback have been most helpful.

My next task is to work on some of the graphs that summarise the crash data, to make them more interactive and be a bit more consistent with the graph libraries we’re using.