Research happens at Google everyday, on many different teams throughout the company. Elena Kirilenko conducted a research internship with both the Chrome team in Paris and the Compression Research team in Zurich. She shares what it was like to intern virtually with teams across multiple countries, and how her internship led to publication of her research and open-sourced code focused on making the internet a faster place.
How did you first get interested in technology?
I’m from Moscow, where I graduated from high school, got a bachelor’s degree and am now doing a master's program in applied mathematics and Informatics. Computer science was my number-one passion starting in ninth grade. Since then I’ve explored different areas of computer science including backend, data science, natural language processing and frontend. My main interests are now machine learning and software engineering, although I’m always open to learning new technologies and picking up new skills.
What was it like to intern virtually?
It was quite hard and unusual in the beginning, as you can’t walk through the office, engage in personal conversations or go to the canteen with your coworkers. At first it was harder to communicate because messaging or video conferences could not replace a real conversation.
However, when I got to know Google's culture and became more confident with my project, this problem totally disappeared because it became clear that each person in Google is really responsive and there is no need to be afraid to ask questions.
Moreover, there were a lot of exciting activities you could participate in online, like sports and dance classes, virtual lunches, games and speaker series.
What project was your internship focused on?
Efficiently delivering Web applications is a hard problem to solve. Compression technologies play a crucial part in solving that problem, by reducing the size of the resources that need to be downloaded over a network. Web Bundles enable servers to avoid sending to the browser resources it previously downloaded, by only sending to parts of the bundle the browser doesn't have.
This is where my research fit in. I was working on achieving fast and efficient compression for WebBundle subsets with Google’s Brotli, a general-purpose compression algorithm. High-quality Brotli compression creates small files, but takes a lot of time and processing power. As a result, it’s only feasible to apply to content ahead of time, as opposed to compressing resources as they’re being sent to the browser. .
Brotli compresses content by calculating artifacts about it (an artifact is a piece of information, like how the content should be divided for optimal encoding), and storing them in the compressed file. High-quality compression invests time and resources in calculating the ideal artifacts for the content, resulting in smaller files and faster compression rates. My project reused the ideal artifacts for an overarching piece of content when compressing just a subset of the same content, achieving both time and processing benefits compared to regular dynamic Brotli compression.
What was the outcome of your internship?
My code has been fully integrated into a branch of Brotli and is now ready to be deployed by users at Google, or anywhere else! We also published a comprehensive design doc describing the work done and result we achieved. If you want to learn more, there is ablog post explaining it at a higher level.
What key skills have you gained from your time at Google?
During my internship I’ve learned a lot of new things about compression algorithms and Web Bundles, which I knew almost nothing about before. I also got a big experience in writing in C and found out many interesting tricks and things you can do there that I didn’t know about. Besides that, I learned how to present the work you’ve done, structure the documentation and how to write blog posts which people may find interesting and useful.
Another thing I picked up is to take initiative. Once I became confident with my project I developed the intuition on what will work and what probably won't. I wasn’t afraid to share my ideas with my host and co-host or even tried to experiment with them on my own.
Any advice for potential intern candidates?
Don’t hesitate to ask. It’s totally OK if you can’t understand the technology you don’t know. People at Google are really open to help you and it’s really important to ask them for help, otherwise you may spend hours or even days trying to figure out something instead of doing some great work. I think communication is one of the most important aspects that drives Google.