Whole lot of heat, not a lot of maps
By: Chigozie Nna
Tags: Internships, Remote Working, S3, Sqs, Work Culture

Hey guys, my name is Chigozie Nna and I am going to give you the insight on my experience of Strava’s first remote internship. I am originally from Framingham Massachusetts, and am a CS major at the University of Maryland College Park, where I’d like to call myself “Your Typical Entertaining College Student”. This summer at Strava, I worked on the Geo Team as a Platform Engineer.

On Monday April 27th, San Francisco’s Mayor London Breed extended their shelter in place orders until end of May, which marked Strava’s decision to shift the internship program to a fully remote, virtual model. At first I was shocked to hear that my internship would be remote, however I am happy now to know even remotely this ended up being one of my most enjoyable experiences and summers of all time.

Strava, I choose you!

Starting this new internship and experience felt like the pilot episode of a TV show. The first week of the internship felt like the beginning of a new life with all the new software, interns, coworkers, lack of knowledge, and laughable struggles of trying to process everything at once while also experiencing my first internship ever.

Within the first week of the internship, I was already working on my first project that was going to be deployed into live production within the next week. Although the changes were not massive, it definitely felt like a race against time, and I was hyped to be working on a project that people would directly see and notice. I could say, “I did that”. The first change I worked on was one in which I implemented a Pride map treatment triggered by certain keywords used on athlete’s activities during the month of June. By the first Thursday, I was able to have my first pull request opened on Github for my coworkers to review. I was hyped. Within the first minute of the PR being made and announced, I immediately closed it in mistake and was panicking on how to reopen it. I wasn’t surprised, but I also was laughing since it added some humor to my first PR. Clearly, my Github wizardry was at an all time low and my mentor Emma was determined to make me a Github wizard by the end of this internship experience.

Book Two: Heatmaps

As I started to become more situated with the company and my role, about six weeks in, I finally began my major project for the internship. My job was to work with the rest of Geo Team in the process of re-invigorating personal heatmaps for the public and making it a more useful tool for athletes on Strava. Heatmaps is a service provided by Strava that shows aggregated data of an athlete’s activities in a visual way. There is the Global Heatmap which shows your activities along with the users around you as well as the Personal Heatmap which shows only your specific activities. Personal Heatmap has two types of storage — warm and cold.

When a user requests their heatmap, the server merges the two storages together in order for the visual display to be sent and created. This two-storage structure lowers the computational and monetary cost of creating and updating an athlete’s personal heatmap. The cold storage is Amazon’s S3, an object storage system, is often not looked at or touched (hence making it cold). Updating S3 for every single update an athlete has would be cost heavy, so the warm storage is in place to reduce this cost. The warm storage is a Cassandra table where we keep the athlete’s immediate updates. A heatmap is massive and requires an abundant amount of storage space which is why we need S3 to store the majority of the data. However, with the warm storage, we can keep around thirty or more updates from an athlete and then bulk transfer them to S3. Thanks to the server’s merge step, we won’t need to update S3 as often, but the athlete will still be able to request their heatmap and view all of their activities.

This is where my part of the operation kicks in. I created two new components to the Heatmaps service: an SQS message consumer and an updates sentinel. Amazon SQS (Simple Queue Service) lets you send, store, and receive messages between software services at any volume. The sentinel’s purpose is to consistently check Cassandra to find which athletes are at thirty updates or so and send an SQS message queue to recreate those athletes’ heatmaps in S3. Once the request is in the queue, these requests will be taken in by the SQS message consumer. This component’s purpose is to receive SQS messages and parse those messages to send a recreate athlete heatmaps with the information in the message.

I loved being assigned to the project, one thing I find important in internships is that I want to consistently be learning and improving myself as a software engineer; this project perfectly set the goal

Culture Hidden in the Peace

Aside from the technical parts of my internship, one aspect that stood out to me the most was the culture of Strava. Having J as my manager and Emma as my mentor made me really feel as if I got lucky, as I progressively gained so much intuition and help from them. Aside from guiding me through my internship, they really did make great friends. From peer programming with Emma and learning our many similarities, to having the dynamic of J’s stern personality with my droll personality, it made the perfect fit. It may have been my first internship experience, however, I truly believe that not many companies have the same type of family-like culture that Strava has. The amount of support each and every worker gets from one another is like no other. I am constantly amazed at the generosity the company has for its employees when it comes to stipend offers supporting WFH and those who have children during this pandemic as well as providing multiple PTO days for the stress that comes along with these hard times. I always felt like I could ask anyone anything and I would get a positive answer back with some kind support.

Aside from meeting great people throughout the company through the many AMA meetings (Ask Me Anything), I loved that I was able to make great friends across many of the people I met through the company. Even from Day One I was able to be a part of Stand By Me (an employee made group of people of color in which we can stand for and support each other through racism and police brutality) in which we were able to comfortably talk about the systematic racism that goes on in the country and personal experiences we have had during this summer.

In general, this summer has been one I will never forget in which I’ve made great memories with the people I’ve met in and out of this company. Overall, this internship has been amazing, challenging, informative and fun. Believe it.