Cloakie uncloaked!

Posted: November 29, 2013 in CS3216, Shubham's Posts

We were actually thinking of making a social calendar!! We ended up making an anonymous Facebook messaging app.

I knew Chinab before this module and was overjoyed to see he was taking CS3216 too, considering that he is not from School of Computing and this is the 5th year of his NUS life. So, of course, I wanted to do one of the assignments with him. And why not start with the 1st, right?! I was Zhixing Yang’s tutor in CS2103, so I knew him from before CS3216 too. Needless to say, he was one of the best students in the tutorial group, well, the class really. So, I asked him if he would like to do Assignment 1 with me and he agreed šŸ˜€ We were still searching for one more member but we were unsuccessful in finding one. We really wanted to work with another 2 people but Prof Colin said that a group couldn’t have more than 4 people. He was okay with 3, but not 5.

Okay, first hurdle crossed. I have a team for assignment 1. Now, we need to decide on what to make. Chinab suggested a social calendar. We were having dinner together at College of Alice and Peter Tan, UTown (yeah, thats right, one of the advantages of working with me is you can have free dinner from 6pm to 10pm if you happen to be in UTown). Initially, we liked the idea of social calendar, but then, we started to think of the features. We were able to come up with many. For example, a calendar which lets you search what your friends are doing at any given point, an intelligent even assigner, categorizes friend’s events for you, etc. etc.. Over some dal makhani and plain cold stale naan, we had hit the jackpot idea!

Now, come the next day or a couple of days later, I don’t remember (and don’t you dare to think that not being able to remember is my fault. I am too advanced for my time, I am born with the expectation of a time machine but in a time when human technology hasn’t progressed that much), but I remember us huddled around in SoC Basement at around 10pm was to decide the main features and possibly the architecture too so that we could start work on our assignment 1. We were brainstorming and slowly, we came to the realization that a social calendar is not really something we NEED. In fact, we were not sure it offered something new at all. Then, while we were still coping with harsh truth that our multi-million dollar mind boggling idea might just be a pipe dream, Chinab suddenly asked me if we had tried ‘Bang With Friends’ (don’t blame me of thinking about such apps, Chinab is the culprit).

I didn’t really know about ‘Bang With Friends’ but I was immediately intrigued. I mean which guy would not like this name?!? Its really the perfect app, you can choose among a list of your friends who you want to ‘bang’ and if they feel the same way about you, problem solved! All 3 of us agreed that this was the perfect app but it had already been done. So, well, we can’t really do this. This discussion progressed to a discussion on what if we could make an app that let you vent out your true feelings for someone anonymously. We really thought this would make the world better because it would encourage more and more people to express their true feelings which they would never have due to the fear of their personal identity being known.

Well, the above is the story of how the idea of Claokie was born! If Cloakie is successful a few years down the line, this story would be that sort of inspiring story that entrepreneurs will talk about – 3 kids with a dream to change the world, blah blah blah. Anyways, now that we were done with what we would like to make, we dived into how we will do it.

I wanted to get an MVP out as soon as possible. So, I was pushing my team mates to think about the actual user interface, implementation of basic features and start coding asap. We used to start our meeting in SoC almost every day between 6-8pm and used to leave anywhere from 2am to 7am (actually, mostly around 3-4am, I once left at 7am very close to the deadline). Chinab had used php before, so he became the server guy. Me and ZX (Zhixing Yang, I feel ZX makes him sound like a superhero, which he is – a superhero team mate) became the client guys.

We sketched out the UI the first night. Then we moved on to the architecture. We discussed how the interaction between client and server will be, then started coding. This was my first time doing frontend JavaScript and HTML on a real sizeable project (I had used JavaScript and HTML5 canvas before, but that use case was very different, it was not a full blown application and I didn’t care much about how good the UI was). ZX started on designing the look, I started on Facebook login. We always used to work together (all 3 of us). This is the way I prefer working actually. This way we do not waste time in e-mailing, messaging, waiting for response etc..

In hindsight, we probably didn’t utilise our time well. We could have used a templating library to avoid spending hours writing and debugging html string concatenation in JavaScript. But both of us were new to this and so it was a good learning experience. Chinab knew his php well, so we didn’t have to worry about that at all. We were using websockets and defining our own message format for different kinds of messages. The only thing that I probably contributed to Chinab’s knowledge was regular expressions šŸ˜› He was using long and complicated string manipulation and comparison to identify the type of message.

I really feel blessed to have got such hard working team mates for the first assignment. I know both of them made many sacrifices for the assignment. I used to insist we work together as much as we can. ZX, who was an early riser, even changed his sleeping schedule to work late night with us. The best thing about late nights is that the time slots never clash with something else. But we also had a lot of fun in our meetings. We discovered many hacks to get stuff from the Central Library vending machines for free šŸ˜‰ Our biggest achievement was a never ending supply of forks and spoons from the cooked food vending machine and a free packet of peanuts šŸ˜€

Well, we initally planned on finishing the first prototype within a week or less. Not a surprise, but we failed miserably on our own set deadlines. I think I knew we would but I still set unrealistic deadlines for ourselves since nothing motivates programmers like the delivery date, in my opinion. By the mid submission, we had a working system. One could send messages to others. But that was not what our app was about. We hadn’t implemented the anonymous feature yet. However, we were feeling good about having a featureless MVP out at least.

We also had a lot of trouble with regressions. We didn’t test enough and so sometimes ended up pushing broken versions to the ec2 instance. This caused a major misunderstanding a few days after the mid submission when Prof thought that the broken version was all we had and he sent an e-mail that read something like this –

Does absolutely nothing. >.< Clicking on Connect does nothing. Only the Like works (and strangely asks me to confirm the like)

We cleared that misunderstanding soon enough but that did tell us something about not writing unit tests. In our defence, we probably didn’t have time or people to write tests, but I have a feeling that will be the case in almost every project. So, that is a good leasson learned and something we could learn from.

Luckily, in the end, it all worked out. We did have to pull off some all-nighters at the end but well, being NUS students and after having taken Prof Ben’s modules, I don’t think any of us really minded that. We were able to implement almost everything we wanted to do at the beginning. We could have done a better job of the timeline and open graph milestones. I feel the teaching staff were generous in giving us 3/5 for the milestone which dealt with integration with Timeline using OpenGraph collections šŸ˜› However, I am really happy with what we did.

Thanks to Chinab and ZX for working with me for this assignment! I hope you are as proud of Cloakie as I am! Thanks also to ZX for teaching me the basics of Chinese šŸ˜› Now, I no longer point to dishes at the Chinese stall. I say I want ‘shi hong shir chao dong’ (tomatos fried eggs dish) instead šŸ˜€


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s