5 minutes
Hackbright Week 8: Projects Week 3
This week felt slower and more frustrating than the other two weeks. Mostly because I felt like I invested a lot of time reading and going through documentation as I start hitting more complicated road blocks. Normally I would find this interesting and somewhat relaxing, but trying to go through large portions of complex materials quickly and efficiently in a limited amount of time was a little bit stressful. With that said, here are my stand-ups for Week 8:
- Monday: Over the weekend, I did some refactoring and worked out some bugs with voting. The votes are now rendering properly. Today, I am finishing up votes and getting updates to write on both the admin and guest side when a vote goes through. Also, working on a bug around deleting jukeboxes and cleaning up data. No blockers.
- Tuesday: Yesterday, I got the votes to update (the vote count would change when a new vote came in). Today, I am getting the playlist to re-render when a new vote comes in. After that, I will work on setting up testing and also getting ready to work on the next feature – streaming audio. No blockers.
- Wednesday: Yesterday, I got the playlists to re-render when a new vote came in. I also worked out some bugs around the sorting and re-rendering. In addition, I also met with a mentor and looked into ways of streaming the audio. Today, I plan on writing some tests and continue to learn more about streaming audio to the client. No blockers.
- Thursday: Yesterday, I wrote some tests, which took longer than anticipated because of implementing testing for WebSockets. I figured it out by implementing AsyncHTTPTestCase through Tornado. I have some tests up and running, will continue to write them as the project moves along. Today, I will be looking further into the streaming and attempting to find a JavaScript solution in the frontend to play music. I’ve split this up into three steps: (1) review what types ways clients can play audio, (2) setting up a buffer on the server side, (3) bridging the two audio formats through sockets. No blockers.
- Friday: Yesterday, I looked up different ways to solve the music streaming issue. It was time-consuming but I feel like I have two or three leads that I want to work on. I also set up a mini Flask app to test these theories. Today, I will work on implementing server-side music playing first so that music playing is working. No blockers.
- Saturday: I took Saturday off, no news to report.
- Sunday: On Friday, I started to work on server-side music playing. Today, I refactored out the playlist as its own class with a queue using deques from the python collections library. This is essential to setting up the music player. No blockers.
This week, I feel that my accomplishments were similar to my struggles. One of the things I am excited about is that I refactored my code (again!) to have a global playlist class. It was an important design decision and it makes everything flow a lot better (still much to be desired around variable naming…) and the code is now more maintainable, readable, and scalable. However, I really struggled with the implementation. It wasn’t the actual process of writing the code that I struggled with but more so overcoming the fact that it needed to be done. When I started working on it today, I was angry with myself and the work because it felt like something I should have identified a couple of weeks back and planned better for. That being said, it was also a key learning point and it makes things much clearer, so ultimately I am happy with it.
This leads to my second learning for the week: testing. I’ve finally begun writing tests and not all of that is sorted out yet, but one of my struggles with testing is not really knowing where to begin. It is difficult to design tests that are revealing, comprehensive, and clear on their objectives. Given that we are now entering our last week or so for projects, I wanted to make sure that I’ve at least started on the foundations of testing so that I can continue writing tests after our feature freeze on Friday.
Overall it’s been a slower week as I dig into the music streaming portion in depth. That was my main struggle this week, learning how to implement the streaming in a time crunch. It’s frustrating that I can only go through so much information at a time. However, I think I now have some direction to take this, even though I ended up investing a large chunk of time Thursday and Friday learning by going through books, tutorials, and documentation. It was also uncomfortable not coding much on those days, mostly setting up the testing grounds for streaming, but it paves the way for progress in this upcoming week. I think that I am feeling the pressure as we head into Week 9, but the best way to deal with that is to keep busy and working through what needs to be done.
So, with all of that said, onwards to Week 9! 🚀