Week Twelve – Moodify Hack
What did you do this past week?
This past weekend, I went to Austin’s Indigitous #Hack, a Global missional hackathon that tackles challenges to help those in need and allows Christians to find out how technology, missions, and faith are directly linked.
This was a MIND-BLOWING experience, because participants from Singapore, the Netherlands, Ethiopia, Taipei (my parent’s home) and 24 other World locations (including small town Austin) collaborated and created projects that solved similar worldwide missional problems.
This was different than other hackathons. The workshops/info-sessions were about volunteering and seeing the connection between tech and faith. Worship sessions were held every several hours, giving hackers a time to worship God while they programmed or took a break. Most of all, the challenges were faith-based and focused on missional needs rather than a generic “best” hack (though that was implicitly part of judging).
And of course, going to a hackathon, I took on a challenge with several other hackers! With 2 business and 2 CS students, we took on the MusicFinder challenge in order to find meaningful ways to discover Christian music. Our goal was to find a way to detect the mood of a song, and schedule more neutral or positive songs to help a person become more at peace with themselves if their initial song was negative.
We decided to try and solve this through sentiment text analysis. Getting the top 100 secular hits and popular Christian songs (about 200 songs), we extracted the lyrics and put them through a whole bunch of Python algorithms and IBM Watson’s Tone Analyzer API to get a progression of moods from lowest to highest. We put the processed data through several more Python algorithms and a Latent Dirichlet allocation topical model in order to group song lyrics by topics, extracting a group of words to a single topic. This was finally put onto Flask with some cool web dev techniques in order to make it display graphs that show a progression of song lyrics with emotion values from low to high.
We ended up finishing our hack, (a goal every hacker always hopes to achieve) and was awarded People’s Choice and Best Technical award. Furthermore, we got nominated to compete in Indigitous #Hack’s global judging, which means our hack would be judged against 27 other nominated hacks from worldwide locations… which was totally unexpected. I never thought I could win, and these hacks we made would only be locally addressed, but it seems like we’re now going to face off against developers and hackers worldwide who have way more experience than us and potentially better hacks…
So the past few days have been spent cleaning up the hack, documenting our code, and putting together a nice short presentation that gave an overview of the impact, details, and sustainability of our project. We also put together a really nice google doc the gives an overview of the project…. If you’re interested, you can check out the code repo here. Hopefully with all this preparation, we can meet our match against the other hacks. All in all though, no matter what happens, this hack was really inspiring and worthwhile, and through a lot of backend Python coding, it led me to distinguish the benefits of Python over Java.
Other than the hackathon, I spent a good amount of my days trying to finish my Operating Systems project. Once it was done, I would be free to go to MLH Prime, a regional hackathon held in Austin. Unfortunately, I need to finish design docs for the OS project, so I won’t be going to the hackathon sad face. Hopefully in my free time though, I will be able to work on a FB Messenger Bot side project that I’ve been procrastinating on though.
Additionally, I have OOP Life project to finish. I met with my partner on Wednesday, and we believe we got most of the design finished, and just need to implement it. Against what I previously believed, creating designs helps sort out what your code needs to do, outlining how you implement your code reducing the number of bugs exponentially.
What’s in your way?
Operating Systems. I had an epiphany today where I found out that I never stayed at home to chill, but practically spent all my day out or in the CS lab, and the rest of my time at home, sleeping for approximately 5-7 hours… tis the PintOS life.
Also, I got my bike stolen so there’s that. It’s harder to time getting to places after going on a quick commute time for a good while. Now it’s back to stepping on concrete till the UTPD finds the perpetrator, or I buy a new bike.
OOP Class Impressions
OOP has been quite fun. Downing recognizes who I am… which is amazing. I do enjoy having the ability to ask questions in class and through his teaching, learn about the concepts that I needed clarification on.
What will you do next week?
I plan to finish my OS and OOP project, and get started on the Facebook Messenger Bot app. My hope is to understand what Webhooks are, since that’s a big portion of how events and trigger points occur for a messenger bot.
Furthermore, I plan to get my sleep schedule together, since OS Project 3 should be done. I will have to start Project 4, which is over File systems (and I heard it was difficult), but I should be able to devote more time to it since I won’t be focused on too many projects… other than OOP Life and a Comp Arch. Performance project….
Most of all, I need to spend time preparing for interviews and ultimately getting my game on for the end of recruiting season for Fall. After this past hackathon, I feel more motivated and renewed in my faith and energy on programming, and I hope to be able to show that to others and be an inspiration.
Tip of the Week
If you ever want to work with a very easy to use sentiment analysis API, IBM Watson’s Tone analyzer is the way to go. Not only does it catch the tone of voice text evokes, but it can also discern language styles and take note of the social tendencies the text can have. It can be easily implemented in Python, and I would not be surprised if it was the same for the other languages that it supported (Curl, Node, and Java).