This summer, Cristian Bodnar was a Software Engineering intern at Improbable on his second three-month placement. Here, he walks us through his day.
Having just graduated from the University of Manchester with a degree in Computer Science, I was wondering how to spend my summer before I start my MPhil in Advanced Computer Science at the University of Cambridge. So why did I choose to do a second internship at Improbable? Well, I knew I could do meaningful work here, even as an intern, and I liked the environment. I was also excited to try another setting – after seeing what the Runtime team was doing last summer, I knew I had to come back. This is my day in the team:
7:55 am: It’s a weird time for a wake-up alarm. I used to wake up at 8 AM, but since I moved to a new place a couple of weeks ago, my commute to the office increased by five minutes. Routine is very important for me, hence the new time. My team is doing the stand-up at 10:15 which is usually the case for most of the teams at Improbable. This is quite convenient as it leaves enough time for me to go to the gym in the morning.
8:30 am: The gym is 3 minutes away from the Farringdon office. I arrive there around 8:30. I sometimes meet there with other coworkers: Apu and Tony from Infrastructure where I used to work last summer and Ben who is working in the Company Intelligence team. I am doing my best to go to the gym every day of the week. During the working days, I keep my workouts short so that I can be a bit earlier in the office.
9:30 am: I am arriving at 30 Farringdon Road. On the way to my desk, I am passing through our kitchen to have breakfast. There are many delicious ham and cheese croissants on the table which means it’s a Thursday. Wow, it’s Thursday already! I sit at my desk and I start my Dell XPS15. Like every other morning, I go through my emails and check my calendar for that day. I sent a couple of PRs yesterday and I am going through the comments left by the code reviewers, addressing them. In the meantime, the rest of the Fabric team is slowly starting to show up.
10:17 am: Run is the team developing the core of SpatialOS, also called Fabric. One can think of Fabric as the kernel of an OS: it manages the resources, it does the load balancing and scheduling, and so on. Building an operating system in a distributed setting is not something you have the chance to work on in many places – operating systems are difficult and distributed systems are difficult and distributed operating systems are very difficult! The challenge itself makes it exciting. I also like the intersection between fields. It’s a good place to try new things cause both OS and Distributed Systems are both very well studied and relatively old fields but this intersection between them is new – there are many unexplored paths at the intersection between these areas.
We gather for the stand-up. Recently, Fabian has introduced into the stand-ups a real-world equivalent of a token ring based multiple access control protocol. Concretely, we have a shovel which we pass around and only the person who has the shovel is allowed to speak. It’s weird and I love it. It lasts for a few minutes then we all go back to work.
11:00 am: This summer I am working on adding distributed tracing to Fabric. We hope that this will help the members of the team to solve bugs especially related to the new version of Fabric which is now in the works. Now I am working on a smoke test which would guarantee that the tracing data is indeed sent to the server when tracing is enabled.
12:15 pm: It’s lunchtime. I love our lunches. They are a very good balance of tasty and healthy and also an opportunity to socialise with other people. During the summer, we usually go to the rooftop to enjoy the sunshine. During the World Cup and Wimbledon, we even had a big screen there where we could watch the competitions.
1:30 pm: I am attending a presentation by Leo on Disruptors, some multi-threaded high-performance message buffers that he’s been playing with lately. There are a couple of cool tech talks like this every week.
4:00 pm: One of the last steps needed to release the distributed tracing in Fabric is the deployment of a proxy in our Infrastructure. I am now writing the configuration YAML files for the Kubernetes pod where this proxy will live. This is one of the many situations in which I found the experience from last summer when I interned in Infra incredibly useful.
5:30 pm: I am attending a presentation on PH-Trees, a cool data-structure discovered at ETH. I am amazed by the very weird bit-masks used to do operations in O(1) on it.
6:00 pm: It’s usually when I go home but today many of the engineers are going for drinks at Lazy Bones. It’s happy hour and everyone is having the classic Long Island Ice Tea. While chatting with the other interns I realise again how many we are this year. We used to be a little bit more than a dozen last summer and now we are thirty. The NetEase deal was also publicly announced today. The company is growing. Fast.