These are some of the coding projects I've completed, including descriptions and links to code.
Website: www.turftalk.us, (view source): Ruby-on-Rails
A location based social network that connects users with others around them.
I developed the Ruby-on-Rails backend and worked on frontend design for Turftalk, a location-based social network. Turftalk lets users create social networks tied to physical places, and only people within a given radius can join each network. I worked with Nithin Tumma and James Ruben on this project - we had a great time as a team, and we're continuing to work on Turftalk and future projects together. We initially created Turftalk as a final project for CS50 at Harvard, and we're planning to soft-launch in Spring 2013.
Website: www.butucu.com, (view source): Ruby-on-Rails
A platform for brick-and-mortar stores to connect with in-store customers.
Butucu stemmed out of a pivot from Turftalk; again, the team included Nithin Tumma, James Ruben, and me. We were part of the HackHarvard Winter Incubator, and we were recently named Long Term Residents at the Harvard Innovation Lab. Butucu lets brick-and-mortar stores push custom content to in-store customers. We currently support creating custom coupons, surveys, and live chat/help desk. Our value proposition includes:
- For businesses: We let small and medium businesses engage with customers without the cost of developing an in-house app. Plus, we have an easy-to-use dashboard to manage all content in one place.
- For customers: We give customers relevant content based on location, without having to download a new app for each individual store. We make the experience easy and consistent, while giving customers accessible help and relevant coupons.
- Analytics: We're bringing analytics to physical stores, a space that hasn't changed much over the past decade. With Butucu, we can analyze and profile customers while measuring customer engagement, net promoter score, and other key metrics. We can also A/B test products and coupons for stores and provide real-time feedback.
Collage/Photomosaic Creator (2012)
View source: Processing/Java
A simple photomosaic creator I made in a few rainy hours.
This is a relatively simple program that takes a folder of images and uses them to recreate a larger image, thus creating a photomosaic. My previous implementations included color matching to find the best match for each picture, but I found that there wasn't enough diversity in my sample group of pictures to color match properly. Instead, the current algorithm just randomly assigns pictures to locations and applies color shading to ensure that all pictures occur an equal number of times. If you're interested in having me make a photomosaic for your group, shoot me an email!
Simple Summarization Algorithm (2012)
View source: Python
An intuitive and lightweight summarization tool.
I've always been interested in summarization and natural language processing, but NLP summarization algorithms can get pretty complex and heavy. My goal was to create a simple, intuitive, and lightweight algorithm that could summarize text while providing ranked "importance scores" of each sentence. This algorithm was based on work by my younger brother, Nikhil Patel. It uses an intuitive method of ranking sentences based on the relative importance or frequency of each word inside the sentence. It is significantly less complex than most summarization algorithms, but Nikhil's research shows that reader comprehension of the summarized output is sufficiently high. Since this algorithm is very lightweight, it opens applications for "summarization on the fly", and dynamically summarizing text based on scrollbar positions. I'm working on an app that combines OCR and summarization to make reading... easier.
Sonification Software (2009-2012)
View source: Embedded VisualBasic
Software developed to create sonifications (non-speech auditory patterns).
The majority of my research from 2009 to 2012 focused on innovative human-computer interfaces. My main interest was in sonifications, or the use of non-speech sound to represent patterns in data. Instead of looking at a line graph, a sonification could use changing pitch, intensity, or tempo to convey the same trend in data. As part of this research, I developed software tools to convert a dataset into sound (represented in MusicXML format). I also developed supporting software to study listener comprehension of sonifications, which were primarly Processing-based data collection tools. I developed the code as a personal research tool, and I don't have time to package it or clean it up. The code probably isn't very reusable, but I'd love to chat about sonification software if you're interested.
Speech Emotion Analysis (2008)
View source: Java/VisualBasic
Algorithms for extracting emotion from recorded speech, created in 8th grade.
Sometimes, how something is said is more important than what is said. Beyond the words, people’s perceptions of a speaker are framed by variability in intensity and pitch. This research, performed for the majority of 2008, focused on extracting and understanding emotion in speech. Rather than focusing on the content of the speech, I focused on its delivery, studying characteristic patterns in pitch and intensity that lead to certain types of perception. I used Praat to perform speech analysis on 100s of famous speeches. I then wrote programs to calculate the skew, diversity, and average of pitch and intensity for each speech. Finally, I found patterns between speech type (disaster, inspirational, etc) and patterns of pitch and intensity, which I then used to gauge the emotional content of a speech. The programs I wrote at the time were very simplistic, but I'm thinking about applying the same algorithms to provide speech feedback in real time as a training/evaluation tool for public speakers.
Automated Essay Grading (2007)
View source: Embedded Visual Basic
A heuristic for automated essay grading, created in 7th grade.
This was my main research topic in 2007. At the time, both FCAT (Florida Comprehensive Assessment Test, or Florida's standardized test system) and the SAT were putting more emphasis on essay writing. I developed this project to provide quick feedback and grade prediction on essays. I used only simple and intuitive algorithms for this project, without relying on any complicated machine learning. Based on research and experimentation, I developed and tested leading and trailing indicators of essay score (performing basic data mining before I knew what it was called). I then used simple regression analysis to combine these scores into a prediction. Finally, I provided automated feedback on each essay based on the lowest-scoring indicators.