Outreachy: Struggle, Learn, Grow!
Have you ever found yourself stuck on a problem that seemed like a piece of cake at first? And did you hesitate to ask for help because you thought it was something so simple? Did you regret spending too much time being stuck on that problem?
If any of this sounds relatable, this blog post is just for you! Today, I'm going to share my experience along with some technical challenges that I faced during the initial weeks of my Outreachy journey, and how I dealt with these kinds of situations. So keep reading!
Challenging surprises
In my first meeting with my Outreachy mentor, there was a surprising and challenging twist to our project idea. The initial project idea was "Secure Integration of TEEs with Other Hardware-based Privilege Separation Mechanisms". However, then it changed to something different based on "How privilege separation is achieved in virtual machines through VTLs and OPTEE" (I'll explain more about this in a later blog post). For the first two weeks, my task was to set up the development environment and get the existing code up and running. Now, this involved some serious stuff โ setting up an Ubuntu VM with Hyper-V, compiling a secure Linux kernel, an OPTEE kernel and a driver module. It may sound complicated, but it was like putting all the pieces of a puzzle together.
The Obstacle Course
So, let me spill the beans about my adventure with setting up the dev environment. I had this very well-defined doc explaining each step and I was like, "Easy peasy, here I come!" ๐. Plus, I had some prior experience building the Linux kernel and working with VMs, so I was all pumped up and ready to conquer this task in just a week. However, what a colossal mistake that was! Turns out, the setup wasn't the breezy ride I thought it would be. Let me share a few instances where I struggled the most -
First off, I had no idea about the concept of Virtual Switches in Hyper-V and it took me a great deal of time and effort to figure out how to get my VM to have internet connectivity due to some wrong configurations that I did while creating the VM. I even ended up creating multiple VMs to get it right which was indeed a lengthy process.
Then, things got even more interesting when I had to build a specific version of the Linux kernel from a zip file. Now, you might think, "What's the big deal?" Well, let me tell you, this task was like diving into the depths of kernel compilation mysteries. I did learn a ton about what happens behind the scenes while the Linux kernel gets compiled. Oh, and here's a little secret: zipping the kernel (yes, in a .zip file) can mess up its file permissions!
Building the driver module was the most difficult part since it had some architecture-specific bugs and little did I know that the setup also required fixing that bug alongside. You can probably guess what happened next โ time flew by, and my initial time estimate went right out the window.
Those few initial weeks taught me a lot about debugging kernel errors, file permissions, computer networks and many others.
Treasure of Learnings
This whole process was a bumpy ride. I was stuck at the above-mentioned places for a long time struggling to find a solution. Some of them were easy, while others were not and here are some valuable learnings that I'd like to share -
Ask for help: A lot of times I was hesitant to ask my mentor for help because I thought I would go on the expedition to find the solution myself. However, I didn't realize that doing this for every little thing can take up a lot of time. I learned that reaching out to my amazing Outreachy mentors for guidance was a game-changer. They are always ready to help, and it's important to ask for their guidance and support at the right time.
Switch to another problem: When you hit a wall, don't bang your head against it endlessly. Sometimes, you gotta switch gears! If you're stuck on something forever, take a breather and work on another problem. It's like hitting the reset button for your brain. Once you tackle the new challenge and gain some confidence, you can come back to the original problem with a fresh perspective.
Write it down: When my mind was a jumbled mess, I started jotting things down. I documented every blocker I faced along with its solution. Not only did it help me keep track of my progress, but it also made solving future issues a breeze.
Struggles are just a part of everyone's journey! We all make mistakes, and sometimes, we even goof up on things that seem to be the most obvious thing in the world. However, the key is to learn from those blunders and keep growing each day. We're all a work in progress, and that's the beauty of it!
Subscribe to my newsletter
Read articles from Ankita Pareek directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by