Getting started with my #100DaysOfCode Challenge
Tags: 100daysofcode, linux, opensource, bash
Published: 2020-03-15 16:57:13

I've been fascinated by the unix system as a whole, working in the terminals, and feeling like a "hacker" while installing programs on a linux operating system ever since my first year in college. I even downloaded a lot of apps on my phone; a lot of pdfs on my laptop to get more familiar with using the command line interfaces, and being an "expert" on it some day. But like a gazillion other things I wanted to learn more during my four years in college, it got lost somewhere, somehow. Of course, I used Linux Mint as my primary operating system, and I absolutely couldn't stand using Windows after I got into mint, but still, I hadn't been doing anything on that OS as I had planned to, or as one should. This fact always irked me, but I also felt the instant gratifications while those big commands rolled on the terminal while installing any new application, and even just knowing the most basic `sudo apt-get update` after adding a package. I mean, how stupid and naive could I be, right? 

There was also this wave of open source in my college when I first joined it; I could see seniors everywhere advocating for it, but while I got lost in the pool of having to learn things, it somehow got fainter and fainter and got dissolved completely. I'm not sure if it was me who got far from the right circle, or if it was the community that itself got not-so-active over time, but it looks like I had completely forgotten about it soon enough. There always used to be like a hundred things on my to-do/learn list, but it wasn't one of them. It wasn't until I started working with Open Knowledge Nepal as a Fellowship Co-ordinator for the Open Data Fellowship that I got reconnected with the idea of openness, and embraced it for myself. But that was just it. I still hadn't really known about actually contributing to open source projects, or let's say, not given it a thought. It was until I got the opportunity to attend the ApacheCon EU 2019 in Berlin, where I met so many developers and contributers from all around the world, binded by one main idea, "open software, open source, software freedom". Lucky for me that it was The Apache Software Foundation's 20th Anniversary, because of which I got to watch the documentary about how it started and how it went on to be one of the biggest non-profit organization with hundreds of projects and thousands of committers over the years. And then when I came back and started looking at some of the job descriptions of the companies worldwide, I could see a few projects from Apache that I knew of from the conference listed under the desired skills. It felt good to have known what that is after that, because I'm sure it would have felt like an alien language if not for the ApacheCon!Oh, by the way, you might or might not see me in the next documentary of it coming twenty years from now! ;)

After getting back here, I promised myself that I would start contributing to open source projects too, but you know how it gets, between exams, internships and other projects, it was always put off, and stayed on the wish-list. Also, while in ApacheCon, I heard about this program called Outreachy, which is like a Google Summer of Code Program, but for underrepresented groups in tech, where you participate in a remote internship and contribute to open source projects. I was especially happy about this because I only heard about GSoC last year, which was my final year of eligibility as an undergrad student, and didn't put in much effort, because I didn't have much idea of how it worked.Outreachy didn't require you to be a student, and my roommate while in Berlin had also been a past Outreachy intern, so I heard a lot about it and decided to apply in the next cohort; and I did, and got past the initial screening; but couldn't continue because I had already started working. It was a bit sad because I'd been looking forward to it since October, but what better way to get disqualified for something rather than by being employed, right? So, I looked on the bright side, and thought about how I would get on this journey regardless of it and maybe, become an Outreachy mentor someday, instead!

Okay, enough rambling about history and unrelated topics. Also, that's how I got into the idea of getting started with open-source projects; but how I decided to pursue bash is a short but different story altogether. So I have a fairly new laptop; but it has had problems with wifi on ubuntu and linux mint, and I have been using an external adapter for my use, but I also tried to fix it every now and then with some research, and I have been able to learn a fair bit about how those commands work and what they do, and for someone who got excited about knowing `sudo apt-get update`, it felt good knowing the other not-so-commonly known commands, and fixing the problems, even if just temporarily. I even joked here and there about exploring a career as a linux sysadmin, but since then, I've had this huge thirst of getting deeper into it, and actually doing something rather than wishing. And now that I finally have a job that I love and enjoy, and more time since I work remotely, I thought I would learn something I've been so curious about since so long, and actually explore all the areas that I've been meaning to explore!

Since I'm quite new to this, I haven't planned anything specific, and thought I'd figure it out as I move ahead, but here's a simple breakdown of what I mean to do in the upcoming #100DaysOfCode Challenge starting today!
Well, today, I'll install Fedora on my PC, and explore the OS. And I'd be trying out more OSs in the coming days if the wifi issues persist. (I have Ubuntu on my work laptop, so I'm free to experiment as I wish).
Over the next days, here's what I'll do:
- Complete the Bash track from exercism.io in the first 33 Days
- Complete the Unix Workbench from John Hopkins University in Coursera in the next 33 days
- Complete the "Advanced Bash-Scripting Guide" by Mendel Cooper over the last 33 days. (Though I'm fearing that this last one will take longer than anticipated).

I'd be learning these for two hours each day, and tweet my progress every single day. And also document my learnings here in the blog every once in a while. Besides, I would be exploring how I can contribute to open source projects as a beginner on this topic over this week, and will contribute to those projects during the weekends. 

I hope to have fun in the next 100 Days. Thank you for going through my not-so-interesting histories and monologues if you've made it this far! See you soon!!