fbpx
Nicholas Ross Image
Nicholas Ross, Engineering Partner at Commit

Feed Me Music: From Mode to Node, My Hackathon Onboarding Project

July 14, 2022 in CHOP

In their first week with Commit, each new Engineering Partner takes on a hackathon onboarding project. They build a project, present it to the Commit community, and write a short summary of their experience. There are no restrictions, no limits, no jokes.

Nicholas Ross is a Commit Engineer who specializes in engineering leadership and developing web applications. He sees beauty in designing systems and making sophisticated requirements and technologies evolve into simple solutions and unique user experiences. Mentoring other developers to grow in skill and take joy in their work is equally important to him. He enjoys spending time with his girlfriend Kate, spending time in the wilderness, swimming in oceans and lakes, traveling, and studying jazz guitar.

Prelude

I love listening to music and have for most of my life. I am 55 years old now. My journey through music is also a technical journey. Not just with the changes and evolution of music over the years but also with the changes and evolution of the technologies we use to listen to music. My journey has taken me from the caves and pools of analog vinyl and cassettes to the present digital day and the streaming services which create an endless shore of sound for us. 

As a software engineer, this musical journey also goes from a time where I developed my tastes and interests by reading and going to record stores to this day where the algorithms of streaming services constantly analyze my tastes and feed my playlists. 

Opening & Main Theme

When I joined Commit, I quickly realized my interest in music and music matching algorithms would make an interesting HOP project. How do all the major streaming services choose music for you? Is this choosing passive or active? Do these apps have their own algorithms? What are their data sources? Does each streaming service use one or more data source?

Could I make an open-source application that connects to musical information APIs and allow the user to make, refine, and structure their own matches? I decided to make an app that would attempt to do these things and give the user complete control over the matching. 

My most immediate engineering goal is to learn Node, React, Vue.js, and Typescript. These are my training priorities for Commit and our Engineering Partners. 

Before joining Commit I was at the very beginning of learning Node and Vue through a powerful, data-driven, headless CMS open source project called Directus written in those languages. Directus’s primary strength is its ability to structure and extend relational database tables through a powerful form-builder interface. When you create content, it creates tables, API endpoints, and Rest and GraphQL interfaces to that data. Wow! That sounds like exactly what a music matching generator app needs at its heart! 

A Work in Progress

I hit the whiteboard and designed a basic system that would complete phase one of the app by connecting to music data APIs to be listed and searched and return results by keywords and music data sources chosen. Phase two of the application would refine the matching results, allow them to persist, allow them to be cross-referenced, and allow them to be exported to music streaming services.

I installed Directus to my local development environment and reviewed its documentation and API. Much of what I would need to build my app could be supplied by Directus. But I would still need to create a custom module to contain this functionality within the app. I installed the shell of a custom module to my Directus build. I connected to the app’s internal API and sent some results of these tests to views and routes I created within the module. All of this work furthered my understanding of Node and Vue.

Coda

As I worked, I realized the full scope of what I hope to achieve was beyond the time limits of the Commit HOP and my evolving Node skills. I also ran into limitations with the Directus documentation available at that time. The Directus install and start of the module allowed me to write both Node and Vue.js code and see how both are used in a very powerful and complex system. 

An old engineering maxim states: begin with the end in mind. Reading the source code for Directus and learning to use it provided incredible insight into Node and Vue working together in a system that evolved over 14 years. As my skills progress, I’ll keep in mind what I learned beneath the hood of this very flexible, well-built data engine. 

I will continue working on my Feed Me Music app and contributing to the open-source Directus project. I will always love music and music technology!

###

Interested in joining our waitlist? Sign up now. We hire Software Engineers to build their careers with promising early-stage startups. Apply today!