undef1nd · August 18, 2020

Today was my last day as an Outreachy intern with Mozilla. To say the least, it was an amazingly rewarding experience. I vividly remember how anxious I was to fail the project or fail to meet the deadline three months ago. There were ups and downs, but I guess it’s safe to say I achieved the initial goal.

Evolution of sfv crate

I wrote about my project before. To those who have not read my previous posts, I was writing Rust crate, sfv, for structured HTTP field values parsing and serialization. Here’s the post where Mark Nottingham explains what structured field values are and why they’re needed.

The first month I spent solely on implementing the specification draft and adding specification test suite. In hindsight, I think it was great that my project plan was flexible enough so I had some time to play with rewriting API a couple of times to see which one I like the best, adding fuzzing that never got merged (strike font), setting some basic CI for my repo.

During the second month of the internship, I worked mainly in Firefox codebase. With a tremendous amount of my mentor’s help, I wrote XPCOM bindings for sfv crate to allow using it from C++ and JS. It was the most difficult part of the project for me, but fortunately, I was not alone and my mentor Valentin spent quite a lot of time pairing with me on the problems I struggled with.

My plan for the third month was to work on documentation and publish sfv to, which I eventually did 🥳 Just when I decided to add benches for sfv, an unbelievable thing happened: we’ve got our very first contribution! Many thanks to Hoverbear who showed me how to use Criterion for benchmarking. Surprisingly, sfv’s performance was not that bad. As there’s always room for improvement, Valentin came up with an idea of alternative API that potentially could help reduce the number of allocations. This is pretty much an experimental functionality, I’m still working on.

It’s my first experience writing a library in Rust from scratch, so for sure, there are still some rough edges. And I foresee major refactorings when I get more experienced. Overall, I’m happy for having had this chance to practice Rust full time. And I’d be more than excited to continue.

Meeting people

One of the goals of Outreachy internships is networking with people outside of one’s team. Even though I’ve been working remotely for years, I still find it difficult to introduce myself to new people. Outreachy did their best to help us, interns, break the ice and bond during our biweekly Zulip chats. We also had a few interesting workshops organized by Mozilla coordinators and it was fun!

Rather early in my internship, one lovely person suggested that I go ahead and ask people I find interesting to have a short informational interview. I won’t lie, it was not easy for me to reach out to people and ask for a chat about their experiences and stuff like that. But my curiosity won :) So I started doing informational chats with Mozillians. I met awesome people! I got some very valuable, stimulating ideas from the people I chatted with, which was priceless and is exactly what internships like this are - at least, in part - run for. These talks are of the most memorable moments of the whole time at Mozilla. Talking to others and making connections turned out extremely enriching to me.


I can’t finish without giving props to all those who were there for me during this internship, who I learned from and who were sources of guidance and encouragement.

To Cyryl, who has been my mentor long before Outreachy, since the time I started learning Rust a year ago. Not only he helped me to get started with Rust, but also taught me about software development in general. Thank you, Cyryl!

Huge thanks to Necko team who hosted me so nicely :)

To Outreachy organizers and Mozilla coordinators, who’re doing a stellar job and give folks from under-represented groups a chance to gain invaluable experience.

It’s hard to find the right words to express how grateful I am to my always patient mentor Valentin, who guided, advised, and cared. I don’t think it would’ve been possible for me to make such huge progress if it hadn’t been for his mentorship.


Best summer ever.

Twitter, Facebook