by Elliott McNary

Building my Extra-curricular Music App

1*QCToWDbOcz14Ga7KnYHVHw

I’ve been quite absent on Free Code Camp since my last post, which outlined my first month going through the program. What went wrong? Absolutely nothing.

I’ve been working on a project for my own personal use. I’m using the skills that I picked up by working through Free Code Camp’s front-end development courses. And I couldn’t be more excited about what I’ve been able to accomplish so far.

I had a problem and I wanted to build something to fix it.

1*CfY_TdI71KQ9VdYlBPvbTA
And use a suitably large wrench in the process.

I’m constantly listening to music. Almost every waking hour of the day I have something playing in the background.

I primarily use Spotify and Soundcloud, and I rarely download anything. I use Soundcloud to listen to tunes from more unknown artists, and I use Spotify for bigger, label-released tunes.

I sometimes use playlists with Spotify, primarily because their recommendation engine is so good and I can get an incredible mood-based playlist based off that. However with Soundcloud I primarily go through my feed and favorite the songs that I want to listen to more. I don’t add them to a playlist because, well, I just don’t. I like listening to the newest songs I find until I can’t stand them anymore.

Traditionally, I’d play through my favorites section in Soundcloud like a playlist. The order wouldn’t be exactly what I wanted, but I could still have a constant stream of good tunes that I liked.

Spotify has a queue function where I can basically create a running, temporary playlist. For example, I’m not going to put Rave After Rave by W&W and Marvin’s Room by Drake in the same playlist, but I may have an itch to hear both back to back when I’m hanging at my computer coding. Spotify let’s me do this, but Soundcloud (which I use more than Spotify) does not.

1*-UcjE2t-YUtFkuoNjPJ2vw

After finishing my Ziplines for Free Code Camp, I got to work on my personal project. I was going to build a queue function for Soundcloud!

When you’re going through your Ziplines it’s fairly easy to find resources to help on a specific problem you’re having. This is because thousands of people have built the same application, and many had similar problems as you.

When building something on your own, there’s a good chance that someone hasn’t done the exact same thing you’re doing. They may have done something similar, but not the exact same. This is a perfect opportunity to hone your googling skills! It’s important to try and think in code and phrase your question in a way that another programmer may ask it on StackOverflow.

1*wfzYpaH3NuQD8I9P0abmtQ

To be honest, I had been mapping out the project for a couple weeks while working on my Simon game and Tic Tac Toe application for Free Code Camp. After finishing my last Zipline I started building my Soundcloud queue app.

I started reading the docs on Soundcloud’s API and reasoned to myself that this wasn’t going to be that hard. To be honest, it wasn’t that hard, but there were a ton of bumps in the road that I had to go through.

The API docs that Soundcloud provides are pretty bare and there are quite a few broken methods. Surprisingly, I feel like this was a blessing in disguise. It taught me that not everything is perfect (and my app sure isn’t), but as a developer you need to be able to work through the hiccups.

I used StackOverflow extensively, and also had to learn some fundamentals about how JS actually works. I still don’t understand how JS works, but I’ll get there. This is a long road, remember?

The feeling when I got one song to play after another was unbelievable. It was the core function of my app, and I was able to figure out how to do it. I literally fist pumped in my apartment for a good 5 minutes, then immediately texted my Mom and tried to explain to her what I’d accomplished (to no avail).

Then I walked to my favorite curry place for a celebratory meal and a Victoria Bitter.

1*nKIJr2TI3J6I-LgVXUrbPg

However, my journey was not even close to done. As many say with regards to programming:

“Fix one thing, break 48 more things!”

That’s exactly what happened, but I knew I could get through it. Plus, I still needed to add functionality like being able to delete a song from the queue, and change the order of songs that were already in the queue.

The bright side was that I was actually able to use the app and queue songs on Soundcloud while I was coding it. In fact, I’m using it as I write this.

1*YxQ-gCSFzIp8-4x_pAtM3Q

I’m still working on getting my app to work on mobile. iOS and Android don’t allow things to auto-play in Safari or Chrome. This makes things difficult, but I know that there is a way.

Soundcloud’s mobile site takes a click input from the user and then is able to play sounds continuously after that. I still haven’t figured out how they do it, but i’m working on it!

Another way would be to make a native app. I’m not going to learn Swift or Java yet. But I may try to learn how Cordova works to port this so I can use it on my phone.

While making this project it reminded me a lot of creating music. Whenever I’d make a song and post it, it was never complete. I would always notice a little too much reverb somewhere, or want some white noise here, or a cymbal there. It was never “finished” and I don’t think this project will ever be “finished” in my eyes either. I’ll always have little ideas that I want to implement so it will be ever-changing!

I feel like I can finally say that I’m a programmer. A very beginner programmer, but still a programmer.

I made something that solved a problem for me and I use it every day.

1*FL21qjWA7JboicY-S2nS0Q

As you make your way through the Free Code Camp curriculum, be sure to keep thinking of personal things that you’ll want to build with your newfound skills.

As you learn new methods and build your Ziplines, think about how you can take what you’re learning and put it to use to make your life better.

Don’t worry about making the next big thing. Just keep learning and building things that you think are cool.

I’m hesitant on putting the link to my app here because SoundCloud has a 15,000/song per day API limit, but I’ll do it anyway because I think it’s cool. And maybe others will as well.

If we can make it hit the API limit, maybe Soundcloud will take note and implement this feature themselves. In the end that’s all I really want.

You can check out my app here. I’m still working on my design skills, and the app is under heavy development, but it should be stable. Here’s hoping you find it useful.

I’ll be moving to Bali for two months and going through Free Code Camp’s back end program. I already have some cool ideas for this app where I’ll be able to utilize my new Node.js skills.

If anyone is looking for a hungry junior developer who is ecstatic about learning new technologies, please reach out to me on Twitter (and follow me, too). I’ll be back in the USA in May.

Until then, keep brainstorm those extracurricular projects. The day will soon come when you’re ready to start building them.