Sprint 1 Journey and Roadblock – File Input Validation

Hello everyone! Since my group has recently concluded our Sprint 1 goals, I feel it is an appropriate time to share how Sprint 1 went and, in particular, share an unexpected roadblock I encountered.

As a good general statement, Sprint 1 went well and our project has a very solid foundation to build off of. The main program displays information to the user, it takes user input and validates it, it calls a skeleton function that will later be the actual calls to the pipeline and CNN, and it uses a linked list structure to print the genres to the user. Over all, that is a success.

While developing the user input and validation functions, I did encounter issues with my original plan and had to adjust it to work with the program. I will explain below.

Originally, I planned to check the file content and the file extension when validating the user input. There is a library called “filetype” in Python that uses the OS-assigned mime type to perform a quick check on what the contents of the file are. My plan was to use that module in tandem with checking the extension (which was also possible using that library).

After trial-and-error of implementing this library and trying to debug the issue, I came to the conclusion that the library is no longer compatible with the most recent version of Python 3.12. The “filetype” library is compatible with older versions of Python, but after discovering the aforementioned incompatibility and deliberating (and considering another unsupported library called magic that uses magic numbers assigned by the OS), I decided that our project did not need this sort of dependency if I could help it. Therefore, I diverted to using the “pathlib” built-in Python library that is still supported in the latest version of Python. In this way, the external library dependency is eliminated and should continue to be supported if using a later version of Python in the future.

The solution using the pathlib built-in library:

The only real set back this provided was (1) time spent researching the issue and (2) now the program only checks the file extension when validating the input. My thought is that, if we state to the user the format we accept (which the program does) and we do not allow incorrect extensions (which the program prevents), then the issue of a corrupted file is one that is relatively unlikely and can be ignored for now. I may try to implement additional validation later on, but the program performs enough validation for now.

I will write soon about further developments,
Kelsey Shanks

Posted in Sprint Reflection | Leave a comment

Starting the Project – Roles and Sprint Goals

Apologies for the delay in posting! I wish to explain the past two weeks of planning and the beginnings of our project development, but let me first start with catching up on the beginnings of our group planning.

After our groups were determined, our group set up a Discord channel and met virtually to discuss our thoughts on our project. There were many ways to tackle our project, but after much discussion, we determined parallel development would be the best use of everyone’s time. After laying out our project plan, our roles, and planning our our Sprints, we started our progress towards our Sprint 1 goals!

To better outline my role in this project, I am the main program developer and the UI/UX designer. Outside of myself, there are 2 other group members in my development team. Emiope Mimiko is the audio pipeline developer and a CNN developer. Katherine Collier is the main dataset developer and also a CNN developer. Given our skillsets, since I have experience in UI/UX and Emiope and Katherine have experience with dataset development, this was the best delegation based on what each of us could provide to the project team. We all three have done extensive research to learn more about Tensorflow, Librosa, and NumPy arrays to best prepare for the future of this project (and those technologies will be used throughout).

In regards to the main program, here is a general breakdown of each Sprint goal:

Sprint 1–Build the structure of the main program. (CNN/pipeline development in parallel)
Sprint 2–Implement the CNN and audio pipeline in the main program completely.
Sprint 3–Develop web application user interface. (CNN/pipeline improvements in parallel)

For those who are interested, here is a general flowchart for the 3 sub-programs of our project:

Our group began on Sprint 1 a week and a half ago and just recently met our goal. I will discuss Sprint 1 in another post, but this post is to simply explain the start of our program and the decisions we have made to move forward.

I will write again soon,
Kelsey Shanks

Posted in General | Leave a comment

Welcome to the blog!

Welcome to my blog for my Spring 2026 Computer Science capstone project (CS 467)!

My name is Kelsey Shanks and, as part of my last semester at Oregon State University, my group and I will develop a project for our capstone requirement. This blog’s purpose is to reflect on my group’s project as we traverse planning, development, testing, and implementation of our software, so hopefully this is an enjoyable developer’s journey to witness!

As an introduction to what we will be doing, the name of our project is called “Top-n Music Genre Classification Neural Network” and, like the name of this blog, means that we will be training up a neural network to recognize and identify genres of music audio clips. Overall, we will build datasets, import clips, train the CNN, and develop the main program itself.

That is all for now, but I will post again soon.

photo of Kelsey Shanks

Posted in General | 1 Comment