Hello everyone!
This post is going to be dedicated to technologies used for my group’s development of an NES Emulator. Honestly, we have set up a very simple tech stack. On top of that, the components of the stack that I have had to develop or interact with have been somewhat familiar anyway.
First, I’d like to discuss the technologies that we use for our development. Our emulator is written in C++ and hosted in a repository on GitHub. My involvement with the project consists mostly of interacting with this repository and adding/removing/editing C++ code. Our project utilizes makefiles, but I was not the one who ended up implementing this. Our project also utilizes some C++ GUI libraries, but again, I was not the one who ended up using these. My workflow consists mostly of fetching the most recent state of the repository into a feature branch, contributing my content, and then pushing my updates to the feature branch and submitting a pull request. This is a workflow with both familiar and unfamiliar aspects.
Regarding the familiar aspects, I have some experience with Git, mostly through previous classes though. I’ve only experimented with Git outside of OSU on a few occasions. Regardless, most of the core of Git and GitHub is recognizable from past experiences. However, there are multiple unfamiliar aspects as well. First, I had never written any C++ code before this project. My most comfortable languages are interpreted ones like Python, so working with a compiled language came with a small learning curve. However, thanks to a teammate who designed a makefile for our project, compiling the code is as simple as typing “make” into the terminal. On top of this, this project has required much more interaction with Git and GitHub than previous assignments have. I’ve learned many new functionalities of this version control. Most importantly, through group conversation, I have learned how to “rebase” branches which makes submitting pull requests and merging much simpler. Along with learning a better understanding of Git, I have also learned how to utilize the built-in functionality of Git with my IDE of choice, VS Code. VS Code has a source control section that can allow a user to sign into their GitHub account and work on repositories using an easy to navigate UI. This UI allows for pulling/fetching, rebasing, committing, pushing, etc. I have heavily used this VS Code feature for my development.
Overall, C++ has been a fun language to work with and GitHub has been an interesting learning experience, but important, nonetheless. I feel that I have greatly improved my abilities to work in a group and my abilities to work in unfamiliar environments. Our first sprint went very smoothly. We have a successful MVP implementation of the NES CPU. Next sprint, I will be working with a group member on the PPU. I am very excited and look forward to future development!
Thank you for reading my post! Catch ya next time.