It's finally the end of semester. This also marks the end of the second open source course for me. Looking back, there are a lot to reflect on.
Looking at my entire program thus far. I can comfortably say I've learned much more in these two courses than everything else combined. As I mentioned in last semester's recap, learning to code from school feels very "fragmented". It's like you collected all these puzzle pieces but don't have a reference picture to follow. Open source was just the epiphany I needed to make sense of these concepts as a whole.
I've learned so much from these two courses. And it goes way beyond just coding skills too. I can't possibly cover everything here, but I'll go through some of them.
🦀 My Rust Journey
I started learning Rust about two years ago, way before I took this course. However, I was mostly following YouTube tutorials and copying whatever they did. I loved the language, and it was a lot of fun, but without actually building something with the language, it was hard to get a sense of the hows and the whys of the mechanics.
It wasn't until the Mastermind project which I created for the previous course, that I really started to understand Rust. Because I was starting a project from scratch, I had to pay attention to things like design patterns, modules, access control, but also details like memory management, pattern matching syntax, where I really learned to appreciate the ownership system in Rust.
Working on something tangible gave me the incentives to keep learning and improving my code, instead of just aiming to finish an assignment. During that couple of months, I studied more about traits and generic types in my own time, so that I could use them in my project. I also familiarized myself with the Rust ecosystem, like rustup
, cargo
, and clippy
. All these wonderful first-party tools that made Rust a blessing to work with.
The second push was me getting into the Hurl project. This was where I got to know Rust in action. Looking at the GitHub search result, I have submitted 15 PRs in Hurl's repo, with more to come in the future. For each of them, I went all in with code reading, researching, learning. I was exposed to all kinds of technologies like Rust, libcurl, and the HTTP protocol. This is not only a much more valuable experience than learning at school, but also more rewarding.
⚒️ Working With Git and GitHub
Another great skill I learned was Git. I used to have this mindset (I'm sure many others do too) that Git was just there to make your life more miserable in exchange for a respawn point when you completely f*ed up your code. According to my professor, most programmers are not comfortable with Git, some of which claiming that their code is "lost" in it.
Throughout these two semesters, I worked a lot with Git. For my own projects, for my teammate's projects, and for other projects I contributed to. I went from "pushing and pulling from main" to having git checkout
, git merge
and git rebase
in my daily vocabulary. Using these commands now feels like a second nature. Of course, there are still situations where I feel lost, but I learned not to panic about it. With enough patience and some digging with git log
or git reflog
, I can always find my way back eventually.
I also got quite comfortable with GitHub. Whether it's creating issues, making pull requests, or reviewing code, or making followup changes to a review. I learned to communicate asynchronously with maintainers: Always provide enough context, and respond with actionable comments. In addition, I worked extensively with GitHub Actions to set up CI/CD pipelines on my own project, and to test my code for projects I contributed to.
All these are valuable lessons I could never have learned from lectures and assignments.
❤️ Personal Takeaways
This semester definitely had its ups and downs. There were times I felt like I achieved a lot, and times where everybody seemed to be stuck or distracted. But overall, I am very proud of my continuous work on Hurl, as well as the efforts I put into maintaining Starchart.
Getting into a project was the hardest part. You had to assess the project enough to make sure they welcome contributions, and read the issues enough to find something you can work on, and then understand the code enough to work on these issues. Finally, you had to fight your inner demons and work up your courage to submit your first PR - Then it gets easier from there, but it's always hard at the beginning.
Despite some improvements compared to the very beginning, I still don't feel good about my demos. Something about talking in a conference call makes my thoughts incredibly disorganized. I forget to slow down, forget to breath, and sometimes forget my lines completely.
Last but not the least, I want to say thank you to my wonderful professor David. You have your way of inspiring your students by encouraging us to work on what we're interested in. You gave us freedom to explore and experiment on our own, but also support when we needed it. It's not an exaggeration to say these two courses have been life changing for me, and none of this was possible without you!
That's it folks. See you again in open source!