These are some of my side projects. I'm looking for full-time work and part-time gigs.
I made this in a day as a proof of concept for a hackathon to disrupt the current US government. The app asks voters their for some preferences and shows them a list of campaigns to take part in.
Used Ionic 2 to build a login screen, questionaire that guides users, a feed that shows voters relevant campaigns/propositions, and a detailed view for each campaign.
A text based reminder/habit forming app. It will remind you to learn something new, form a new habit, or do something important. Just text "Remind me to do something awesome every morning at 8 am" to +1 (510) 683-5361
Used heroku, Node.js and Express to create API routes, user authentication and backend logic. Used twilio to send/receive SMS.
There is a nice article about tetris game design architecture from Stanford
Watson is just awesome. One of the amazing things it does is solve constraint satisfaction problems in an intuitive way with a simple interface. The constraints and their weight are shown graphically and can be manipulated by the user. Our hack will probably not be up for long but you can see a demo from IBM that calculates the best phone given constraints like weight, screen size, battery life, etc.
We built a service that recommends charities to which you can donate. We pulled data from databases like Ammado and GuideStar who were extremely helpful and accomodating. A user give you a simple questionaire that assesses your personality. We chose some constraints and weights based on some common sense asumptions. We then matched you to a handful of nonprofits among hundreds. We use IBM's Tradeoff to find the optimal among several competing factors.
Built in 24 hours with a team of 4 for the TechCrunch Disrupt Hackathon. You can find the source at GitHub
This is the first version of the then new RiteTag browser extension I made in November of 2014. Clicking the extension button made the modal popup in the current webpage. The modal was draggable yet constrained to the window so you didn't lose it by dragging it out of the screen.
The modal was created by injecting very little content into the webpage. This was to allow the header to be draggable. The content was loaded into an iframe hosted on ritetag.com so it remained unaffected by the current website's css. The header had a lot of !important rules to have it look uniform across websites.
Lead developer for a cross-platform mobile app using PhoneGap.
Check it out on Google Play
Elements get highlighted as you type. Not many open source projects supported this. They lost the selection position while typing. With a contenteditable div, I saved the selection position, modify the structure of the html by adding spans and anchor tags and then restore the selection. This is instantaneous and unnoticable by the user.
Starting in december 2013 I started working on a program that would summarize product reviews on Amazon.com. The goal was to reduce the amount of time customers spent reading through reviews by giving them a summary of the most relevant information. I decided to take the approach of other independent aggregators out there that give ratings to a product in general and its specific features. E.g. Vikon Camera: 4/5 Lens: 3/5 Usability: 2/5...
I had to first parse the reviews using Java from their web page because they don't offer the review information in their API. Seems that they want to keep the data for themselves even though its directly accessible through their website.
Initially I used Alchemy API to get a list of words the people expressed opinions on. The rationale for this was that reviews most likely express opinions about the product or its features. Unless a majority of the reviews complain about their dog which is unlikely.
I had to switch to Python now because even though Alchemy had a Java framework, the documentation was limited and I decided it better to switch early. So I converted my parser and data structure to Python. But I was limited to a certain number of API calls under the free license and it didn't give me enough tools to get more information out of the reviews.
So I decided to start from scratch and build my own opinion miner. Switching to Python was a good decision because now I had access to NLTK. I first tagged the words using the Stanford POS tagger beucause the NLTK default tagger kept telling me that “extremely” was a noun. Then extracted relevant features (noun phrases) using a frequency based approach, cleaned up irrelevant features. Then used a default opinion miner to find the sentiment for these features.
The next step will be to create a browser plugin and display the results within a product page on Amazon.com
Created in April '14 during a 3-day campus startup challenge hosted by 1871. Our team of 6 students created an MVP for a team based fitness app geared primarily towards the business sector. The idea is based on research supporting team based fitness activities for improved performance. Our proposed app would track a users' fitness activity, put them in teams that compete for prizes. Visit the GitFit landing page.
A utility for the Mac OS that solved a persistent problem with my computer. It makes sure there is an active internet connection by pinging websites. As soon as the computer is disconnected, it restarts the WiFi which fixes the connection.
Employee scheduling Algorithm. Input is a set of employees and meetings with certain duration that they have to attend. Modeled as a constraint satisfaction problem (CSP) and programmed in java.
Read this report for more info.
A program to predict the label for images of numbers. Given a training and test data set of correctly oriented scaled images of numbers, the program uses a Naive Bayes Classifier to learn the likelihood of an image being a certain digit.
Created in python using basic machine learning techniques. Read this report for more.
Except for the starting template I was forced to make this website from scratch for a class project. But now that I have the freedom, I decided to use the right tools to make a portfolio in less time and with more stability.
Didn't want to make the class assignments public so some of the content may not be available. Also I moved majority of the content and no longer maintain the website. However if you're interested to know more, here is what I did with handy how to links at each step:
Stacked commenting (can reply to others) with MySQL.
Displayed project code by fetching content from SVN and displaying it with some syntax highlighting.
Implemented several different pathfinding algorithms and compared their performance (with and without heuristics) in solving any given maze. Algorithms programmed in python, GUI created with Pygame. See the report for more information.
Maintain an Airline network database by store airports, airlines and flights. Create, access and modify the database through a command line interface.
A two player chess that keeps it simple. No special moves like en passant, castling or promotion. Play with a friend on the same computer or over a local network and keep track of the winner.
Written in Java using the Swing api for UI.
During fall 2010, I worked on a project to understand the Mechanisms of Self-Regulation of Internal Distraction at the University of San Francisco's Gazzaley Lab.
My task was to develop an iOS application that was given to test subjects to monitor their responsiveness to stimuli (sound and light). The app monitored certain performance metrics before and after asking the subjects to perform some tasks. This was repeated several times a day over a period of a few weeks and the results were uploaded to the University.
The app was made with the iOS SDK and uploading data was done through the Dropbox API.
A 2D vertical scroller that shows only a pair or shoes. You are in charge of making the shoes run by using your fingers as legs. Currently on development hiatus due to challenges in modeling a natural running motion.