Programming can be an absolutely time consuming process, especially when you’re doing it when you’re a full time student and working a part time job. So how do I manage that?
The Timeline
A lot of the projects that I work on are small, relatively simple, and sporadic. Looking at my GitHub, you’ll notice that I’ll commit to a project for a few days, then switch to a different one altogether. Sometimes new projects will take up to 6 months to start working on, seldom returning to the old ones. This is, unfortunately, one of the consequences of being a student and taking up programming as a hobby. In fact, it wasn’t until a story broke out that Flo was caught selling user’s data to companies. That was the inspiration for me to start building my own period tracking app
Starting the Project
While I have data that goes back as early as May 9th 2022, I started theorizing this project as early as late April of that year. I realized that, since I was a transgender woman, I never needed to use a period tracking app and didn’t know what was wanted in one. As such, the most responsible way I theorized to get accurate data was to ask my peers to take a survey. Questions consisted of what period tracking app they currently use, what they liked and didn’t like, what features they wanted integrated, and things that may have affected a cycle, since not everyone has consistent cycles. It was this data that I used to start the project.
Hello World
Starting a new programming project has always felt the same way for me: excitement of starting a new project, followed by me wondering what I got myself into five minutes into the project. But with this, there was a third feeling: the excitement of being able to have made a significant change in someone’s life. Under the code name foss-period-tracker
1, I opened up my IDE2 of choice and began building a proof of concept for a period tracking app. It didn’t need to be fancy for a proof of concept, nor did it need to be perfect. But it needed to have some sort of functionality. I built my own date format class3 to be able to translate Strings into dates and vice versa. After prototyping something, I created a repository on GitHub, and ran some terminal commands.
git add .
git commit -m "Initial Commit"
git push git@github.com:/TotallyMonica/foss-period-tracker
Sure enough, my first commit was done. But this time, I knew I wasn’t done. I knew that this proof of concept was just that: a proof of concept.
Time Management
As this project started, I ran head first into a major hurdle. Finals was just about to start, and I needed to study for that. While yes I could’ve studied by working on this since I was taking a programming class, I determined it wasn’t worth the time, effort, headache, and the likelihood that I’d get too focused on the project to study for some of my other classes. So just as quickly as it came, my interest in continuing the project had left me. I didn’t start working on it again until July 2022, when I’d take a road trip down to Mammoth Caves that I would continue working on it. I tethered my laptop to my phone’s hotspot, and began working on the project a ton on that drive down. One of my friends noticed that repository and how much I was committing to the project and pitched in where she could. However, when I got to where I was going to be staying for the vacation, I put my laptop up and forgot about it again. In late July, I picked up the project again, and made some leaps and strides with one of the major hurdles that I had, which was actually debugging some of my classes.
Debugging
I wouldn’t be shocked if a majority of programming comes from debugging, which is where the head banging kicks in. And with the debugging comes the pain of having ADHD. Since I have ADHD, I tend to get sidetracked easily. So when I have a project that keeps telling me that 10+20=1020, suddenly it becomes very appealing to step aside for a while. My first proper prototype was built on August 4th, 2022 where I was able to successfully define that I had a consistent period that took place every 28 days lasting for 4 days, acting as if I had just gotten off of my period. While there’s more to go from that, the first major debugging obstacle was taken care of. Right before this first major prototype had been built, I had been admitted to Southeast Missouri University, and I had been scampering around getting everything sorted out. Clearing this obstacle made it clear to me that, while not perfect, I was on the right path to making something good.
Definitions
FOSS1: Free and Open Source Software. Free, in this context, doesn’t necessarily mean $0, but rather free as in freedom
IDE2: Integrated Development Environment. While my IDE of choice for this project is Eclipse, there are many IDEs in the world, notably Visual Studio Code, Atom, and Sublime Text
Class3: A blueprint/template for a data type. Sort of think of it as a program within your program