Skip to main content

DPS 909 - Release 0.2 - Hacktoberfest Week 3

I'll admit it right off: this week, I did not have a lot of time to spare for Hacktoberfest, so I was unable to tackle a new goal (out of the ones I set for myself at the start of the month). Nevertheless, I did not want to jank up the weekly momentum I had by missing a contribution, so I simply opted for a simple one instead. I found a nice project, by GitHub user vichitr, that focused on encouraging amateur contributors during Hacktoberfest, not unlike the last repo I contributed to. Instead of focusing on design patterns, vichitr's project contains a variety of issues that programmers are invited to tackle.

I decided to contribute to issue #6 on the repo, which is to implement a data structure in the language of your choice. Since I was short on time for the week, I decided to contribute a threaded tree by overhauling a previous project I did as a school assignment. A threaded tree is a binary search tree that supports easy, in-order traversal of its values. Normally, a node in a binary search tree will have a null reference if it does not contain any children (either to its left, right, or both). A threaded tree converts these null references to point to the next, in-order successor.

Visual example of a threaded binary search tree (image from Wikipedia)

I decided to make this augmentation to my original, much simpler binary tree class, as well as implement an iterator that would help traverse and find specific values. However, this decision turned out to be a bit more work than I anticipated. First of all, the binary search tree from my old assignment was severely outdated (and admittedly, rather poorly written!), and I had improved in my programming skills since I'd written the original code. I had to take the time to carefully analyze the code, correct bugs, memory leaks, and make additional comments in order to bring it up to my own current standards, as well as the standards of a public contribution. It isn't easy getting into one's own headspace from years ago! After I'd spent almost too long fixing my own, old code, I affected the changes necessary to augment the BST to a threaded tree.

All of the work made me wonder if it would have been more efficient if I simply wrote the entire implementation from scratch, rather than trying to build off of my old code.

In the end, I was able to submit a pull request to the project as a contribution to their collection of C++ data structures. Hopefully I will have a lot more time next week to make a far more meaningful contribution!

Comments

Popular posts from this blog

DPS909 - Lab 2 - Git Practice: Simple Noter App

Once again, I am continuing my journey to become a full-fledged member of the open source community. For this small milestone, I am practicing the creation and management of a Github repo using git bash on my local machine. For test material, I have created an incredibly simple, browser-based sticky note app, appropriately called Simple Noter. For those interested, the final product is hosted on Github Pages, and can be found here: https://jerryshueh.github.io/simple-noter/ The app itself is very basic - simply type a note into the text space and hit CTRL + X to save. Your note will be saved between sessions until you clear your browser's local data. It uses a number of open source and free-to-use resources, such as Kenny Wong's Hotkeys.js , and Google Fonts. By the way, something I've learned is that all Google Fonts are distributed under the SIL Open Font License, which allows anyone to use and modify them for personal or commercial purposes. As for the learning proce

DPS909 - Lab 1 - Github Trending Research: WebGL Fluid Simulator

The WebGL Fluid Simulator is a small application that allows the user to play with simulated fluids right in their browser, and works on both PCs and mobile devices. The visual effects follow proper fluid dynamics, and can be manipulated in real time by pointing and click, as well as several available options such as quality, density, and velocity.  The app is written in JavaScript, and as the name suggests, visually renders its effects using WebGL. It was created by Github user PavelDoGreat based off another Github project:  Fluids-2D , and is distributed under the MIT license. As of September 8th, 2019, WebGL Fluid Simulator is trending with 2,307 stars during the month, and 6,070 stars in total. Main interface of WebGL Fluid Simulator by Github user PavelDoGreat I was interested in investigating this project as it demonstrates the breadth of open source resources on Github. Users can find projects that range from complex systems and APIs, to small plug-ins and simple applica

DPS 909 - Lab 3 - Hacktoberfest, and the Very Scary Repository

It's that time of year; the mornings are getting chilly, the leaves are turning, the pumpkin spice is flowing, and open source developers are getting all worked up over something called Hacktoberfest . Not to be confused with the other , similar-sounding (though arguably no less beer-filled) celebration, Hacktoberfest is a chance for open source enthusiast to truly flex their projects and contributions. Hosted by DigitalOcean , Hacktoberfest 2019 is an event running throughout the month of October that encourages activity in the open source community. It is completely free to sign up, and participants can even link their Github accounts to use as their Hacktoberfest profiles. As you may have already guessed, I will be participating in this event as my next major milestone on my journey into the world of open source. Through the miracle of APIs, even my profile picture was imported! While the prospect of diving headfirst into such a large, open source event as a beginner may s