My original plan was to blog each day of this week, updating everyone on my project progress. As I started writing posts each day of this week, I found myself writing things like “and then I scribbled lines on some graph paper to make wireframes. And then I did it again. And again…”. While each moment was a riveting learning experience in itself and I will look back fondly at my simple self in a few months time, the message really boiled down to “I did things that constituted working on my project”. So instead, I decided to pull the scrum stand-ups from each day this week and highlight the main challenges and learning experiences. A wise Hack13right cohort mate said “it’s important for a developer’s blog to have a message for your readers, it’s not just a glorified Github”, and she’s right. Here are my scrum stand-ups from week 1:

  • Monday: Over the weekend, I finalized my data model and put together some rough wireframes. Today, I am working on the first iteration of model.py. No blockers.
  • Tuesday: Yesterday, I put together my first iteration of model.py and wireframes. I also met with a mentor to talk about my model.py, sockets and streaming for audio, and review my wireframes. Today, I will be hooking up my database to model.py today, testing it, then starting to plan out my routes. I will also be meeting with a mentor today to look over model.py. No blockers.
  • Wednesday: Yesterday, I got model.py and my database to talk to each other and work. I also set up some Flask routes that I will need to populate. I met up with a mentor and we worked through creating and logging a jukebox into my database (yay!). Today, I need to work on building out my templates and Flask routes. Also, Twilio field trip with the cohort, yay! No blockers.
  • Thursday: Yesterday, I built out the skeleton of my templates and hooked a route for creating guest users when they open up the public link for a jukebox. Today, I need to continue on this trajectory and set up a route for deleting jukeboxes, admins, and guests. No blockers.
  • Friday: Yesterday, I ran into some issues testing AJAX requests on deleting jukeboxes, admins, and guests. I resolved that issue by remembering a mentor told me to always test Javascript incognito to ensure my browser cache is always clear. The route now works. Today, I will be going off-site to a mentor office for lunch along with three other cohort mates and I will start work on search and adding songs to playlists. No blockers.
  • Saturday: Yesterday, I was a bit crunched for time between the off-site and study hall for class, so I just set up the route and had it submit properly. Today, I plan on continuing search and song add, then move onto votes if there is time. No blockers.
  • Sunday: Yesterday, right after I said “no blockers”, I ran into a blocker. The Metadata API is discontinued for libspotify, so some test code I ran a couple of weeks or so back no longer do what they used to. I fixed the blocker by migrating the search portion of my project to the Spotify Web API. Today, I intend to complete song adding and also set up voting on the playlist. No blockers.

To clarify, I don’t actually have a scrum stand-up with myself out loud on the weekends, but I find myself making a little stand-up statement before I start working (once again, in my head, not out loud).

In terms of accomplishments this week, I’d say “getting started”. None of the code I’ve written this week is particularly challenging or far beyond the scope of our classroom (the Hackbright instructors do a great job of going over everything with us weeks 1-5), however, one of the biggest learning points has been “getting my shit together”. There are a lot of things that go into the planning stage but at the same time, it’s hard not to get sucked up with project management and not start coding. Some ways that I’ve stayed on top of this:

  • I write code everyday. This is a software project so something needs to be built each day. While there is a lot of research to be done and things to be planned, there is always the potential to code something at every stage.
  • I keep a “to-do 2x2” instead of a “to-do list”. There is the unfortunate truth that life is constrained by time, so I plot all my to-do’s on “time needed to complete something” vs. “urgency”. This helps optimize my time on things I need to finish each day, instead of finding myself trying to finish multiple unimportant (or even somewhat important) yet extremely time-consuming things. It also helps me make tough decisions when it comes to balancing what the right things are for me to complete in one day.
  • When I find myself asking the question “what’s happening right now?” in the middle of doing something, I stop immediately. I don’t have time to confuse myself. I usually consult either my to-do matrix or a relevant document to bring myself back on track (e.g. I’m working on hooking up some routes this week, I’ll check my wireframes or this chart of API endpoints I put together for reference).

As for things I’ve struggled with this week, it’s the idea of dealing with “unknowns”. There is no absolute, or rather, as logical thinkers, we “know” that there “should” be an optimal solution and we “think” we hold that solution. Going into this project, I tested the API’s I wanted to use early and thought I “knew roughly what was going to happen”. Of course, I was very much incorrect, there is still a lot to learn and new and mysterious problems were constantly popping up (I’m looking at you browser cache). When I found out that the Spotify Metadata API had been completely discontinued, I had to quickly learn how to migrate my previous work to the Spotify Web API. I am lucky that the team at Spotify had written a useful post on how the previous endpoints mapped to the Web API. However, I still had to take some time to figure everything out and read through the docs thoroughly, especially since this was a new experience for me. Coming out of week 1, this was a rewarding experiences for me and while I am frustrated it happened, I am also glad, because I had the opportunity to dig deeper into the technologies I am using for this project.

Lastly, some quick notes on the blog: if you are reading this from an iPhone 6 plus, no I have not fixed the footer issue. I will be looking into changing the layout soon, so these issues will hopefully be addressed with the full layout change.

As usual, thanks for reading and yay, projects! ✨