We came for my cousin’s wedding. While not the first Indian wedding I’ve been to, it was the first since I’ve been an adult, and really paying any sort of proper attention to the world around me. The wedding was a lot of fun, with the as-seen-on-TV dancing and delicious food, family and festivity.

Dharavi Slum

We toured the Dharavi slum, the largest slum in Asia.

At first, I was apprehensive of the whole idea: “visiting” a slum seemed intrusive to the lives of those who lived there, as if the homes of over 1 million peoples were a tourist attraction to be gawked at.


Actually touring the slum changed my initial sentiment. The organization giving the tours, Reality Tours, is an NGO geared towards bringing more revenune to the Dharavi community (and the communities of other slums around the world). Our tour guide, Mayur had been born and raised in Dharavi, taught himself english and was now giving tours and studying computers.

The proceeds from the tours went towards community programs such as classes (including computer classes!) and sports organizations for the children growing up there, as well as some for the adults. They provide basic computer skills (office, web browsing, etc), and also sports equipment (footballs (soccer balls) and kleats for the kids). They were recently donated a 3d printer that Mayur (our tour guide) was in charge of figuring out how to use.

Through recycling and other industries, Dharavi moves over $1 billion / year.


We weren’t accosted by beggars at all throughout the 4 hours of being there. Tour-ers are advised against giving to people begging, since it encourages a counterproductive mentality of getting something for nothing.

At one point I picked up a retinue of children who were interested in my watch (I sport a Pebble Steel), asking me questions about it and pulling on my wrist to press its buttons. I was actually surprised by the fact that they were truly interested and not trying to steal it.

The gap between the rich and the poor in Mumbai and across India is much greater than it is in the US, with the wealthy being at the level of the American upper class, and the poor far below the (eg) American poor. For instance, my grandparents’ apartment (where I’m sitting currently and where we stay when we come to bombay) is on the same road as the Ambani house which is the most expensive private residence on the planet. (there was a media wave about it when it was built, not sure if you caught any of that) And it overlooks basically slums, in certain directions.


Although all this being said Bombay has come a long way in the last even 2 years. I’ve noticed a lot less abject poverty on the streets, and a lot of the slum shanty-dwellings have been renovated into low cost apartments. The roads are better. The old Hindustan Ambassador taxi fleet has been largely replaced by new Mitsubishi Santros burning compressed natural gas.

Muslim Street

At Mumbai’s Muslim street we ate kebabs, partridge… I tried goat brain, which has a slightly squishy texture and a taste similar to liver/kidney but not quite as strong.


I fell into the eyes of a young muslim woman standing down the street, probably around my age. She was wearing a full burka, only her beautiful, grey-green eyes were visible at all. I on the other hand was in a button-down and jeans, my RayBans on my head. For whatever reason, time seemed to stop as we gazed at each other for a while, until her (presumably) husband returned and ushered her away. Sappy imaginary pseudo-romance? Probably. Bridging cultural divides? Hopefully.

We also saw a man mysteriously taken away by a cop, who arrived outside his shop-stall and demanded he get in the back of the police jeep. After some back and forth he got in, handing off his wallet to his friend out of the back of the jeep as they pulled away.


Anyway, here are some more pictures:



MHacks III

This weekend, I went with the Purdue Hackers club to MHacks Winter 2014 in Detroit, Michigan. This was the first major hackathon I’d been to, and it was an awesome experience.

The four person team I was a part of created a hardware and software solution for mobile ordering and checkout which we dubbed Spark. Check out our submissionhere.

We won the “Most Technically Impressive” and “Most Viable Startup” awards!

Cube, the chat bot

My most recent project (besides surviving the 2013 Summer of Math) has been writing a chat bot for the room my friends and I hang out in. It’s called Cube, and is written in python (using sleekxmpp).

Here’s a github link

Cube is a markov chain, pseudo-random text generating bot who can say some pretty ridiculous things.

A markov chain takes input text – in this case, directly from our human speech in the chat room – and ‘slices’ it up into key-value pairs, where the key is a 2-word tuple, and points to a single word value. Cube appends END tokens so we know where to start and stop generating, and stores the resulting python dict.

For example if someone were to say “The quick brown fox”, it would become:

END the -> quick
the quick -> brown
quick brown -> fox
brown fox -> END

Over time, there’s overlap in our speech, and these are added to the dict. For instance, if someone were to then say “The quick brown cow”, our updated dict would have

END the -> quick
the quick -> brown
quick brown -> {fox, cow}
brown fox -> END
brown cow -> END

When prompted to generate a sentence, we starts a markov chain with a random key where the first token is END, and follow it until we encounter another END token, two words at a time. If there are multiple values for a given key tuple, we choose at random. Each new word is appended to the list of words that will comprise our bot-generated text.

It’s worth mentioning at this point that the probability of a given next word is stored to the dict as well. For instance if we had “I am fat”, “I am fat”, and “I am hungry”, the values stored would be:

I am -> {fat, fat, hungry}

So there would be a 66% chance of selecting “fat”, and a 33% chance of selecting hungry.

That’s the basic idea behind markov chains. Cube however, does this slightly differently.

When a new sentence is input, Cube actually saves two markov chains. One forwards (like we’ve covered), and one in reverse. So the sentence “the quick brown fox” becomes the forward dict from above, as well as:

END fox -> brown
fox brown -> quick
brown quick -> the
quick the -> END

These two markov chains, forward and reverse, are stored in two separate dicts, which makes this whole model a little trickier to visualize, but bear with me. Now, when we go to generate a sentence, we can start from any word in the corpus and run a markov chain in both directions, until each reaches an END token. This allows for much greater variance in generated text, because there are obviously many more words in the corpus than there are words-preceded-by-END-tokens.

Over time, Cube starts to say some very interesting things indeed.

viraj: cube
cube: the agent started taking out his badge and had anyone used the criticisms box to agree with your fingers