Inspiration

An activity in an entrepreneurship class wherein every student was given a note card, and told to write about themselves. Their real selves.

Going into this class, I had assumed that my fellow class mates and I would have nothing in common- they were all perfect- wealthy, well groomed, athletic, etc... The Kenan-Flagler Business School attracts a pretty specific type of person. And there I was, the only physics major in the room, feeling remarkably out of place.

When the class had finished handing over these note cards filled with our most intimate thoughts, the professor began to read them aloud. One by one. They were all anonymous, but they all carried similar sentiments: life is terrifying, there isn't enough time, do people really like me?, my work will kill me, I will kill me. The fact of them being anonymous, paired with their similarities caused each note read to have a sense of speaking for the whole class, instead of only the individual who wrote it.

As an individual who has struggled with depression and suicidal tendencies for most of my life, it was shocking to realize that other people, perfect people carried with them the same types of fears, hopes, and challenges as myself. It also helped me to appreciate the power of empathy.

I feel that a growing contemporary problem is the creation of echo chambers that nullify productive and honest discourse. These echo chambers allow for vicious cycles of radical thought to propagate unopposed, and lead to a breakdown in human compassion. I also feel there is a developing cultural solipsism due to ever increasing access to self-serving media (Facebook, Snapchat, google search results for example). These problems lead to a societal climate which promotes the objectification and dismissal of other people- reducing them to ghostly voices- as well as the fetishization of material culture.

So I thought, hmmm, here was an exercise that incited a profound empathetic experience within me . How can I get this to more people?

What it does

An abstraction of the described activity, Solipschism is a social network that allows people to write public and anonymous journal entries. Whenever someone in possession of the app passes by another person (comes within 100 meters) with the app, an exchange will trigger, and both the users journal entries will become available to the other user.

This is meant to humanize the people a user sees everyday, as these people represent the source of the journal entries. The end result should be the sense that the people around a user are people .

How I built it

Fairly simple rails json serving/consuming API, using token based authentication. The app hits the API. Chron jobs trigger rake tasks for creating anonymous identities for users everyday, as well as determining which users have been "matched".

Challenges I ran into

How to check whether a user should be able to see other users' journal entries. I settled on using a rake task to compare user coordinates. If two users' coordinates are within 100m of each other, they are "matched" for the rest of the day, and therefore their journal articles will be accessible by each other.

A big problem with this approach is that the task of matching users has to run very frequently (I would say once every 5 minutes), and that the computational cost of this task is represented by (N^2 - N)/2 where N is number of users. This exponential growth means that a small user base carries with it a large toll on the server. I tried to write the operational code as efficiently as I could, but it still ends up being 3N + 1 db queries, 2 mass inserts, and (N^2 - N)/2 trigonometric comparisons.

In order to try to fix this problem, I implemented a system of user-distributed computation, where a user will request (automatically as dictated by the app) a computation set, perform the comparisons for the set, and then return the completed matches to the master server. Since the computation power of a phone is strong enough to handle a fair number of comparisons, and the comparisons a user has to complete scales linearly instead of exponentially, that my solution is pretty good.

Accomplishments that I'm proud of

This project marked my foray into iOS development, and I am happy with the result. I am also proud of the system of user-distributed computing. As always, I am bewildered by my ability to participate in hackathons like these during the semester, although I will say it is nice to be able to procrastinate from school work with coding.

What I learned

Basic iOS development, more efficient query writing, thinking about geography in applications, and how to use Openshift.

What's next for solipschism

A system of sharding users based on geography would allow the application to scale indefinitely. Monetization needs to be figured out, I want something more clever than banner ads.

Share this project:

Updates