Other than the grades, the past semester went great. I managed to meet a lot new friends, learn a lot, and at the same time accomplish a lot. There is just one thing, however, I need to point out here before making a plan for this summer, is that I got through my grad level programming class: distributed computing, with 3 other seniors who pushed through like I did. It was the reason that I did bad in many of my other classes, but I did really enjoy learning such software engineering topics. It gets me excited. My final project was on Distributed Similar Image Search, it worked (see the picture at the end). Basically what it does is that it performs a search with the search term the user provided (e.g. square) and get the results from various search engines including Google, Bing, and Flickr, then the user can choose an image (or even provide an image in future releases, if I ever decide to come back to it) to match the image with the rest of the set. The system uses Hadoop Map-Reduce framework to distribute the image matching job and the search engine querying job to different mappers and reducers so that the job is performed quickly and efficiently (for those who don't know, Google also uses a similar Map-Reduce system to allow us to search the entire internet and return the results in less than half of a second). The program framework that I wrote can be easily extended and be made into a real reverse image search engine provided that there exists a good image hashing algorithm and a large image database for me. I spent about three weeks on it, starting from writing a original Java algorithm, playing with search engine APIs, and then learning how to deploy it with Apache Tomcat and Hadoop within/out of an Eclipse environment. I really learned a lot.
Ok, before I talk another few hours about that project, let me go straight into the real topic of this post: my plan for this summer.
It is much simpler than past: (TWO INTERNSHIPS + START MY OWN BUSINESS + FOR REAL)
1. Internship with Tidal Labs. -I will be working there three days a week this summer. I would say that this is an engineering startup that aims to help the marketing departments of big companies and the marketing firms to data mining people off social network. I choose to work for them because see potential from the growing social marketing companies. It is also php and python based, so I can learn more about those two and at the same time learn about how to handle different situations for a startup company.
2.Internship with Indorse Technology. -I will be working there two days a week this summer.
This is the company of my professor who taught me distributed computing this semester. I'm looking forward to learn a lot more with him on both managing business and coding. We will see how it goes this summer.
3.Start my own thing with friends.
Information about this will be released in a future post while we are still discussing our business plan. It will be a huge thing (<--no jokes please lol).
After all, this summer will be very fruitful for me and should make me stay away from getting use to leisure so I would get killed in Fall.
4. If time allows, I will be able to push Bmark.Me to the next stage.
A distributed get image job result:
A distributed compare image job with efforts to find the ones that are similar to the first one