Introduction
The month of October has come to a close, and Hacktoberfest (plus release 0.2) along with it. It was probably the busiest month of my life as well, and I’m sure the next one will be just as rough. It was also an extremely rewarding month, both mentally and phy- okay I might have gained some pandemic weight so maybe not physically… but mentally, it was rewarding, exciting, and challenging.
Ever seen Kitchen Nightmares? It’s a reality TV show In which world renown chef Gordon Ramsay is invited by the owners to spend a week with a failing restaurant in an attempt to revive the business.
I’m not much of a TV fan these days, but my girlfriend Hope loves it so we started watching it every now and then. There’s usually one episode per season that serves as a “where are they now” for the previous season. This blog post will essentially be that. Except with programming done poorly, not to be confused with cooking, something I also do… poorly. It’ll also serve as a view into the mind of a novice (i.e. College) level programmer, such as it is. So without further adu, onwards to catharsis!
Release 0.2.1 - Rambox
This was my first PR for Hacktoberfest, and also my very first Open Source Contribution! A relatively relaxed SLOC contribution, the hardest part by far was getting the app to properly build- I certainly didn’t expect that building an electron app was so involved. I learned about all sorts of neat stuff I didn’t know of prior: Electron, Sencha, and Ruby (A lot of people seem to really enjoy Ruby, maybe one day I’ll check it out.)
Looking back, I’m proud that I got the app to properly build and work with my addition. I even changed their API to point locally to test before submitting, something that their documentation doesn’t even mention to test. I also got a nice shout out from my Open Source Development professor for documenting my resourcefulness by researching prior commits to see how exactly this feature was added.
My PR was merged the following day, which is really nice now that I think about it. Isn’t that neat? Some random person asked if two features can be included to this program they use, and some other random person went out and made it so. I think sometimes it’s easy to forget the human aspect of computing, when you’re too busy getting caught up and absorbed by the convoluted intricacies of software development.
Also the project is licensed with GNU GPL v3, which criticisms aside, tickles my RMS fancy.
Release 0.2.2 - Shoulders
Original post here. Damn, surprisingly I really didn’t write much for this blog post.
My second PR (and tied with 0.2.4 as my favourite PR this month), this PR really meant a lot to me. The project creator was pleasant, knowledgeable, and caring, even going so far as to give me feedback on how he’d like the PR structured (although ultimately he changed it slightly, more on this below.) This feedback alone meant more to me than all the rest, as the project creator is a principle software engineer. Anyone can write garbage, but having my garbage reviewed and accepted into his personal project was insightful to say the least.
I’m proud that my silly idea was not only received positively, but merged into his project, albeit with a twist. This was my original commit, and this is the commit that ended up in the project. Ultimately the same code, but he moved my contribution to a separate file for better organization. This minor change was a brief insight into how an experienced programmer would take my otherwise spaghetti mess, strip away the abstraction, and leave the meaty goodness behind. This PR also helped jog my otherwise lazy-loaded JS skills.
His warm demeanour was as unexpected as it was welcomed. 10/10, would recommend to a friend.
Release 0.2.3 - Dictionaries
My third release and my fan-favourite of the bunch. Yes, I am a huge Star Trek nerd. Yes, this is as funny as it is weird. Another interesting PR that gave me a brief introduction to the world of browser extension development. This release taught me how to move forward from a set back coupled, with poor time management due to deadlines. And as my intro to Unix professor once told us before our midterm, failure is indeed always an option.
Not a particularly challenging or lengthy contribution- though I did learn about browser extensions, CoffeeScript, even some minor CSS, more than I imaged I would have. Similarly to 0.2.2, this release was also slightly changed after being merged. This is the original commit, and this is the updated commit from the author. He simply changed up the CSS override that I provided him, eliminating the search bar (I actually assumed before the original commit that he would have wanted the search bar included), and removing the padding for a more zoomed in experience.
Before (Ignore the large “whitespace”, I misleadingly had the window maximized in the screenshot):
After:
All in all, the author was great guy based out of China, demonstrating me the wonders of asynchronous open source development.
Release 0.2.4 - Plain Old Recipe
My fourth and final contribution might be my favourite, mostly because I actually use this web app to scrape away all the unnecessary junk that typically accompanies recipes from recipe websites. Because of this alone, I immensely enjoyed working on this PR. I also got to learn about Flask, a Python based web framework that I’ve been wanting to check out for a while now.
I’m proud that I figured out how to set up and run this app locally (although running the setup file and typing python main.py
isn’t particularly accomplishing). I’m also particularly proud of my sleuthing ability, as I deduced that the original library used was not the culprit causing the bug. Furthermore, not only did I solve this bug, but added something to the project that wasn’t present too. I also tested it against numerous sites and it passed every time. I also learned about the mess of working with other code, by other code I mean seriouseats.com, but you can read the original post for more about that.
So far I have not heard back from the author, but I do look forward to it.
Closing
Reflecting upon everything, I think the most surprising aspect were the people. From the few people that I did interact with, everyone seemed really down to Earth and friendly, the complete opposite of what I essentially assume most people are like on the internet these days.
Thus far all my contributions have been merged, except for the final one which is pending a response from the author, which I have to say I’m particularly proud of. If I could give myself some advice for next time it’d be reach higher. I think I can offer more, I’m just unfortunately strictly limited on time, which is going to be my ultimate take away of this class: it would be even greater, if not for all this other silly crap.
Progress looked like a steady stream of small commits leading to one big (relatively speaking) PR. I may not know how to fix the more annoying or intricate of bugs in larger projects with many moving parts, but above all else this month has taught me to push past hurdles with determination. But nonetheless, learning git was pivotal throughout the month, without it none of this would be possible.
I can’t say I was expecting much beyond an immense challenge, what surprised me the most about open source contribution was that I could do it. This alone proves that you don’t need to be the best to get something merged. you don’t need to be the best to make good software, and you don’t need to be the best to do this. Imposter syndrome may be as insurmountable as the challenge, but given enough small chunks, even a mountain will turn to sand.
tl;dr My first Hacktoberfest was a wonderful experience that I’m truly hoping I make time for each year. The shirt too makes it even better… speaking of.