Zachary Lopez

The Overdue Hack Reactor Update

Hey folks, it’s been about a month since I last wrote. This has been one crazy period. The final thesis project is a grueling, amazing, wonderful experience. For the last month, up until yesterday, my group, Eric Benson, Sasha Bayan and I, have spent each and every day working on Q-Rad.io.

##Q-Rad.io

Q-Rad.io is a rapid music discovery engine powered by Machine Learning. I would love it, if you checked it out and let me know what you think. As a group, we are planning on continuing development on this project. It has been a great learning experience and it’s actually a product that we all enjoy using.

Learning by failing

While planning our Hack Reactor final project, we ended up pushing ourselves to take on quite a few challenges. We are working on a music player application that is backed by a Machine Learning recommendation algorithm. During the scoping phase, we pushed towards learning as much as we could during this period.

One of these choices was the choice to build the back end application server using Ruby on Rails. As background, it’s important to note that Hack Reactor is a full-stack Javascript immersive. So, for the past eight weeks, we have been intently working on Javascript. From servers, to front-end, and all manner in between, the focus has been on JS.

These are the lessons we learned by choosing Ruby, and spoiler alert: ultimately switching away for the time being.

Machine Learning & Prediction.io

Over the last 48 hours, I have taken a first dive into Machine Learning. At Hack Reactor, the final thesis project is the culmination of all your work. My group – Sasha Bayan, Eric Benson, and me – has decided to build a music recommendation engine focused on new music discovery.

Machine Learning quickly became the focus of how we would do this. At its core Machine Learning is about software that can learn from data. It can show you relationships between data (what things are alike and what things are not) and how relationships change based on user action.

Division of Labor in a Group Project

Working on projects in groups can be very powerful. The extra brain power, hands, and computer time mean that you have the possibility of achieving more.

This is no different than multi-threading on a multiple core CPU. You are offered a tremendous benefit of additional computing power, but this comes with the caveat that you must harness that power by dividing the work.

In a group project, one of the key considerations must be the division of labor. Immediately, it makes sense that you cannot have all of the group members working on the same task. This won’t help you achieve anything greater than what you could on your own.

Dividing the labor is the way to go, but it takes careful planning and thought. Here are a few considerations that you must make and account for.

Bitwise Operations in Javascript

Bitwise Operations are a way of manipulating data at the most basic level of individual bits. This introduces some complexity as the data representation isn’t as clear, but the tradeoff is a massive gain in speed. The speed gain comes because the operations are native to the processor and are some of the most basic commands that a computer must be able to execute.

Over simple applications or programs this may not mean much, however, when your program is computationally heavy and speed is a factor this approach will save cpu time. An example of this is the work that Andy Coenen and I did on the NQueens project.

Switching to bitwise operations allowed us to reach a higher and higher number N on a single computer.

In this post, I will cover what the basic bitwise operations are and how to use them.