Showing posts with label CS3216. Show all posts
Showing posts with label CS3216. Show all posts

Saturday, April 17, 2010

3216: To 7f80 0000 and beyond

Wow it's already Saturday. I've spent the most restful three days of... while maybe not my life, at least my NUS life. After the first assignment for 3216 was due, I couldn't recall ever sleeping that much for a really long while, but three 12-hour long naps in the same number of days really takes the cake.

Excluding a certain field of mathematics, this has been a very fruitful year. At the risk (and with no intention) of sounding elitist, a lot of us would have probably picked up in this time what might take more than a year to teach. Everyone probably had a different way of learning; some started flame wars, some contributed many (, many, many) articles and videos that served as interesting learning points, some grit their teeth and jumped into the deep, cold waters of the unknown.

Personally, I learnt most not from the experiences themselves, but the people that contributed to them. And that is one of my greatest takeaways: People matter. One example is being, and having, teammates. Certain people get disliked in a team. Sometimes it's their conflict resolution (or lack thereof), for others their (perceived) arrogance, and yet others, while rare in 3216, do (close to) nothing, and continue in that state unless acted upon by a net external force. Others bring value to whichever team they're in, learning on the job if need be. Why is there such a difference? I believe the source of the difference originates not from one's skill set or your background, but rather one's willingness to learn and participate.

Of course, teammates are not the only people in the world. People you meet and talk to in your life can share experiences and thoughts so astute, yet so simple that you wonder why you never realised them before. I like Prof's account of how he took a canteen stall operator to lunch to find out, among other things, why he was still serving customers personally. Also, as the repeatedly-quoted Chewy from Microsoft stressed, people are not like you. Everyone has their own story, their own worldview. If we could just ask the right questions, listen in the right way, we can learn something new from practically everyone.

Secondly, communication is *very* important. Fortunately for me, all three of my project groups were made out of people who were willing to sit down and discuss our differences in opinion and direction. Some groups had members who kept their disagreements to themselves, or in a probably worse move, aired their grievances for all to hear. Maybe it works for them, maybe it didn't, but I think it's not generally a good idea to publicly attack your own teammates, indirectly or directly, regardless of how right you may be.

Finally, and perhaps most importantly, is the famous quote from a short, agile, and originally puppet powered Jedi Master in The Empire Strikes Back: "Do or do not, there is no try". A few months before matriculating last year, I attended the Special Semester briefing by SoC's Undergraduate Dean, A/P Khoo Siau Cheng. Towards the end, he mentioned that a group called CVWO lets students apply their technical knowledge to benefit voluntary welfare organisations by making programs for them. I thought, "Hey, that's really cool! I want to be part of it!" Almost immediately, I began wondering if I was up to the task, having (close to) zero proper training in programming. So I shelved that idea. During CS1101S last year, we had prof's ex-students and CVWO members presenting CVWO to us again. And again I wondered if I was capable. Now, thanks in large to 3216, I'm more confident, if not in my technical abilities, but in my ability to learn the ropes quickly and effectively enough to be of use to the team.

Thus, our 3216 journey comes to some sort of an end. Many projects are still continuing on, ours included. This end is really more like a new chapter, rather than the conclusion of the book. My thanks to all the people I've worked with, and not just as teammates. One of my most vivid memories, interestingly, is of me and Angad playing Wii Sports at 4am while Wang Chen looked on, presumably amused at our antics. As this module draws to a close, it's now time for me to begin studying, as opposed to revising, for *gasp* other modules. Time to start working on that certain field of mathematics...

Monday, March 29, 2010

The *REAL* world: What you don't often hear at entrepreneurship talks

Chin Leng: "Perseverance; We only live once. No regrets"
We started off hearing from Chin Leng, founder of (and currently 1/3 the force behind) SingaporeBrides.com, and later SingaporeMotherhood.com. Now ranked #1 by Hitwise in their respective categories, the idea for SingaporeBrides.com was conceived during the hassle in his own marriage preparations.

He started off with no business plan, and no intention to seek funding, just wanting to try and see if it'd work. To summarise, he experienced many years of scrimping, saving, and trying to persuade wedding service providers to list their services on his site, with little success. Finally realising it'd be better to create opportunities rather than find them, he began to offer these providers free websites and tech support, effectively building the market for his own services.

Hoong An: "Don't start a business"
Hoong An from Hungry Go Where was up next, and his was a rather different view. To him, a lot of business was about being at the right place at the right time. He mentioned that a lot of media coverage is needed for a fledgling business, but that such coverage cannot be secured through outright promotion, but rather by presenting something that the reporter is finding at that moment.

He brought up 7 (rather interesting) reasons why one should not be an entrepreneur:
  1. You give up too easily
    • Success is about being at the right place at the right time
  2. You have no business plan
    • Not a matter of writing one, rather to have in mind what you plan to do
  3. You plan too much
  4. You hang around people just like you
  5. You cannot make decisions
    • Wrong decision better than no decision
  6. You have no working experience, and no capital
    • Working = Paid to learn
  7. You have no faith and do not believe in God
    • Limit to how much grumbling parents / you can take
    • Starts playing with your mind

Tong Yee: "Serving people is the best form of business"
Next was Tong Yee, a teacher formerly with MOE, but left to develop School of Thought, and the Thought Collective. The School of Thought was started in 2002, teaching civic education through GP. Their students came out transformed in their perspective of the world, and this translated into clearer and more concise arguments. Students actually told their teachers that they needed tuition in School of Thought, and soon the School of Thought had teachers in their enrollment. Tong Yee left NYJC on the recommendation of his HOD, who, when about half of NYJC had enrolled in the School of Thought, suggested that more change could probably be done outside the system.

In 2006, the Thought Collective started Thinktank Publishing, aiming to create a current affairs magazine more relevant to students here. They tried not to include advertisements, as they restricted, whether explicitly or implicitly, the content that could be published. Now, they include advertisements for embassies, NGOs, and government agencies, all of which add to their content by providing different worldviews.

Currently, they are in discussion with EDB to revamp the CCA system. Their concern, which I agree with, is that the CCAs that impart skills relevant in industries, like photography and computing, are not as popular as, say, band and choir. Not including the students who will become professional performing artists in their future, most people join these CCAs with their points in mind, leaving the less popular CCAs with no members, and thus less leverage and manpower to conduct their own events. I look forward to see the outcomes of these discussions, as I feel it is a vital issue in schools now.

Leslie: "Do something you believe in"
We met Leslie from Red Sports again. He mentioned two factors that helped when starting off. Deciding early who the target audience is and going after it, and starting off with no debt. These, and the quote, were my greatest takeaways from his presentation

(if it seems a little short, Leslie had actually presented before ^^)

Ash Singh: "Sales fixes everything"
Interesting point: Search "Young Chinese Millionaire" on YouTube and you'll probably find this link in the first page... ^^
As the final presenter, Ash came with 50 keys to startup success, but decided to cut it short due to time constraints. Among the interesting points were
  • Hire generalists early
  • Invest in culture
  • Start charging early
  • Use your product
  • Make decisions swiftly
  • Keep it fun
  • Ship then test
and of course,
  • Sales fixes everything


We're almost at the end of the semester. I probably should get some work done on my other modules... So I'm off to do an assignment that's due in less than 48 hours.

Sunday, March 14, 2010

GWave

Well, the Wave project is over. Got back our results for it, and the marks for the aspirations are significantly higher than that of the first assignment (not really surprised there ^^) One gripe i have, however, isn't about the assignment, but the initiative (or lack thereof) of one of our teammates. His role could probably be described as the least technical, yet when he encountered some difficulty, did not opt for an ask-for-help approach, and instead told us only on the last day that it wasn't done as it referenced our work, which he was not familiar with. Put that together with the rush on the last day (unexpected synchronisation problems), our expectation that he had done (at least most of) it, and the fact that coding while writing the report takes two rather different mindsets... Let's just say the final few hours were rather harried ones. And despite claims to the contrary, I don't really think writing the report is extremely difficult... even points for us to elaborate on would have been nice.
(end gripe)

We had a video conference with Pamela from GWave on Monday. She described some very interesting new features of GWave that might actually have changed our projects significantly. Some were more developer-centric, like the Blip Contexts and Event Filters, but what intrigued me more were the new abilities granted to the extensions. The Active Robot API would enable access to a wave without needing to wait for an event triggered by a user, allowing the robot to read an update the wave on its own; essentially, becoming more like a participant in the wave. The SVN bot that Pamela showed as a demo was an interesting application of this feature. She also mentioned Proxying for Users, which allows robots to adopt a persona that it created, adopted or imported, which would greatly improve readability of a Wave conversation.

A few things stuck with me from her critique of our applications. Firstly, UI is very important. No matter how cool your application may be, if the user can't understand what he / she is supposed to do, you've lost one user. Secondly, give clear instructions. Suyuen made a similar comment on our first / final project. Show / tell the users what they need to do, and what each action will give them. Thirdly, give them a choice. While not explicitly mentioned by Pamela, it is what i took from her example of the application Cartoony that removed cleartext and replaced it with a drawn version. This hindered replying, copying, and integration with other extensions. Thus, when making an application design decision, make sure it does not remove any freedom the users expect to have.

And as our application rolls into launch mode soon, here's hoping that we get most of these... somewhat right ^^

Monday, March 8, 2010

People are not like you

Everybody sees things differently. What goes through your head is related to who you are; your experiences, your memories, your situation.


We had Chewy Chong over from Bing on February 22. Before the session, I'll have to admit i was expecting some marketing session, with some Microsoft dude selling us this Google competitor, and wasn't really looking forward to it.

That was so far from the truth.

The world is so different from what any one person can perceive. In showing us the CBS News video of a blind man's family, he showed us what a normal life is like to a very different part of society. 4 generations sharing a house and bank account, even when different members are doing very different jobs, and somehow always having someone watching after the patriarch of the family. How many families in Singapore have a remotely similar lifestyle? With that lingering in our minds, he said something that stuck with us for the rest of the session.

People are not like you. Step back and take a look at the system without wearing your usual lens.

That is, I feel, the greatest takeaway from this session.

On a separate note, perhaps he did succeed at selling Bing after all, for I find myself less adverse to switching from Google. Bing, according to Chewy, is more targeted towards aiding decision making, for most searching done is a precursor to a decision of some sort. Thus, Bing would attempt to determine what decision you were trying to make, and related information in a more relevant and helpful manner

Monday, February 22, 2010

Get Help

So, the blog post today is on the application Get Help. So what IS Get Help? It's an interesting use of Facebook's inter-connectivity: using it to ask for help from those on your friends list. While the idea is a really good one, there are some inconsistencies with the design that may detract users from its main purpose.

Initial / Main Page
First of, the initial page one sees on launching the application. The profile tab is highlighted, when this is clearly not the profile. It may seem minor, but a consistent design is often key to reducing the learning curve of a new application.

Also, beginning the request with "I need help with" could actually hinder the users somewhat. Not every request can be phrased as an "I need help with ..." statement, leaving the user puzzled as to how to phrase the request.

On the available alternative channels for posting a request, I'm a little puzzled as to how an SMS option would work. Who would the application be sending SMS-es to? Would it be somewhat a breach of privacy if the application were to start SMS-ing a group of the user's friends?

I feel that the choices of who to send the request to could be greatly improved. More specifically, I believe there is a need to allow users to prevent certain users from sending their requests, even if said request has been forwarded from the original sender. Imagine, for example, a request for help to build a gift for a close friend. Most probably, the user would not want this request to be seen by the intended recipient of the gift, as it would spoil the surprise.

Overview Page

Now, onto the Overview Page. I don't exactly think a Project being likened to a Fire is a very healthy comparison... Also, perhaps adding Overview and Recommendations to the group of tabs might be a better idea, for it can be a little hard to find these two links otherwise.

Project Page

The Project Page. How do you get here? Perhaps the flow of the site would be more apparent were I actually using it... And as a somewhat sidenote, "Wish her luck!" seems somewhat redundant as such well-wishes could be offered in the comments section, and with more detail at that. The 4 tabs being covered by the Project details also affects the design negatively.

Statistics Page
Finally, the Statistics Page. I disagree somewhat with the assignment of rankings and rewards to an otherwise altruistic application. Such rewards detract from the purpose of helping, which is simply to help, without expectation of any gains. Instead of encouraging people to help, such rewards actually change the motivation of helping, and soon the users would be helping simply for these rewards.

So, while I feel the idea was a really good one, I think the implementation could do with quite a few improvements~ That being said, they have already changed their design, and I'll be checking it out soon to see whether any of my suggestions have already been implemented ^^

Pitching Session

Okay, first up, an admission: I went to the pitching session already knowing what I was going to do for the final project~ I'm not sure how many people / groups had a similar frame of mind, but I'm sure I wasn't the only one, which leads me to think that the pitching session could have come sooner, before most people would have made plans for the final.

Certain presentations stuck with me for various reasons. The introduction to the World Cities Summit was informative, but presented in such a strange manner it left me wondering why he was present at the pitching session. For the better part of his presentation, I was trying to figure out if he was attempting to convince us to build a SimCity adaptation for Facebook, or just... Being helpful and telling us all about this swell event. Turned out to be the former, which I feel should have been the focus of the presentation from the beginning instead. If it had, we'd probably have a clearer picture of his ideas and the direction in which such a project would head, whereas the speaker mainly concentrated on the event, leaving the marketing of the application idea till the very end. Perhaps the speaker did not even come with such an idea in mind, for he certainly gave that impression to me.

Project Nimbus came with two shirts proclaiming Data and Services respectively, which is, essentially, their product: Data as a service. Instead of innovators spending time "chasing or recreating content, screen scrapping sites, and Google-ing for random data sets", Project Nimbus aims to provide such content to them, leaving them free to, well, innovate~ Although I'm not in need of such a service now, I can see how other projects (and perhaps mine in the future) could conceivably benefit from it.

The Red Sports presenter, Leslie, was obviously passionate about his goal, to promote Singapore's youth sports scene. He had an idea and followed it through, and now his site provides regular sports updates from schools in Singapore. Together with a team of writers, the site resembles one of a newspaper. As I'm hardly a sports-centric person, what I took away was not the product they have managed to create, but the energy and passion of this person that has led him through many years to reach this point, which I find admirable.

Perhaps the presentation that left me the biggest impression was the only one by an undergraduate. I had already seen Module-Review.com before, having been referred to it by a coursemate. What I couldn't have guessed was the fact that it was created and is still being maintained singlehandedly by an undergraduate like us - Jace. I think the idea is a very solid one, as many students do wish to find out more about the module from students who took it in the past, before signing up for the same. Perhaps the database could be extended further to collate feedback about lecturers, especially if a lecturer is teaching a module for the first time and thus has no applicable comments from the previous batches. However, future maintenance may be a problem, since a site that is visited generally two periods a year would not gather a lot of advertising revenue. Jace will have to find some other way to support this site.

Well, that's generally what impacted me during the pitching session. My laptop has this sudden aversion to loading blogger for some strange reason, so I'll be back as soon as I find a PC, to embark on dissecting yet another Facebook application.

Tuesday, February 2, 2010

Friends for... sale?

Just yesterday, during the Facebook Application Seminar, I was introduced to a Facebook app I'd never seen: "Friends For Sale!" I'll have to confess that my initial impression of it was approximately 10% intrigue and 90% what the heck is this for? So in deference to that 10%, I listened on~
Buy people and make them your pets! You can make your pets poke, send gifts, or just show off for you. Make money as a shrewd pet investor or as a hot commodity! Friends for Sale is the bees knees!
Okay let's start with giving credit~ As the group pointed out, the name is probably the most succinct summary I've ever seen of a Facebook application. This app apparently lets you buy and sell your friends as pets, declare your wish to do so, and give gifts to them. While I feel the titular purpose of this app a little disturbing, there seems to be a sizable portion of Facebook users ready to disagree with me, so perhaps this meets some niche desire that I fail to fully empathize with ^^

The group then touched on the Seven Deadly Sins and Maslow's hierachy of needs. Where does Friends For Sale fit into? Probably Greed / Envy / Pride on the Sins, and Self-Esteem and Achievement on Maslow's list. While it might be pushing the definition to call playing such a Facebook game a sin, perhaps some people really do feel a greater sense of self-worth when they are deemed (or deem themselves) to have some form of superiority over others, especially if who they lord over are popular in their own right.

On a more technical note, I feel that the simplicity of the application worked well for them. With a lot of their features leveraging on Facebook's own capabilities, scalability would have been less of an issue during development. Also, starting the user off with some capabilities and value is a good idea, one that our app may have overlooked on our first iteration, as it ensures that the user can explore the game upon registration.

Having said all that, I still do not see the point of this application. What is there to entice me back regularly? Also, while I've not played much of other Facebook games either, I believe applications that offer an alternative life in some way (be it fishing, farming, or some other activity) would be more appealing than buying friends. How many friends are you going to buy to boost your ego anyway? And I would personally be really disturbed if someone "bought" me, even if it's only in a virtual world. Like, get away you control freak.

Alright then~ Time to go back and market penguins~ When you cannot fly, better make sure you're helluva good swimmer.

Saturday, January 30, 2010

Lessons from a deployment deadline

This is a really overdue post, but it's the first time in a while i'm properly awake in the day ^^ which brings me to the first lesson i've learnt:

  • Sleep is an essential part of life. All repayment of owed sleep often comes with exponential interest.
For the last week, my group of 4 people, Laurence, Carolyn, Eldwin and I, have been doing night shifts of varying lengths. I, for one, can't really do coding marathons over several nights, but I.. managed somewhat. I do believe, though, that there has been at least one night where I failed to respond despite being online... having fell asleep on my keyboard. The full aftermath, however, came in the days after submission. I can't recall sleeping through most of the day for a few days on end in recent years ^^ Now that the first submission is over, I realise it could have been partially averted by observing the next lesson i've learnt:
  • Read the manual. Especially the fine print.
Our application was, up till a really short while before submission, hosted on a virtual server within our school. I was not the one who submitted the request, but was told that the space would definitely be sufficient for a collection of text files. That claim turned out... partially wrong.

On the night of our submission, I uploaded one rather essential web script onto the server. After prompting for confirmation to overwrite, it deleted the file, and attempted the write the new one.

It failed. Horribly. And left us staring at a "Disk quota exceeded" message.

Suffice to say, we had a bit of a crisis. However, we couldn't, for the life of us, imagine *how* the total file size could have exceeded what i now knew as 1GB of space! But after a while of frantic digging, we found a rather large file on the server, named error_log. It was... 1.3GB. Apparently, we had forgotten to lower PHP error reporting, and a whole clump of warnings to the tune of "Variable not declared". Exasperated, we proceeded to delete the file, but the quota busted error still remained. We guessed this status was probably refreshed on a periodic basis, and couldn't really do much at that point. Luckily, we managed to find a saviour nearby, and with him came my next lesson~
  • Always have a backup plan. Especially so during the last moments
When we realised we couldn't save our server that night, we intended to shift to AWS, which we weren't on initially as we wanted to save the credits for the Final Assignment. While trying to figure out how to connect to it's SQL service (also part of the reason we weren't on AWS), Frank offered to host it on his server. So now the application is running on a third-party host, and we actually had something to show for the submission.

So, thanks to all the help we received in the last hours, we actually managed to submit the alpha version of our as-yet-unnamed application (officially, anyway). We now have a less buggy system, a really good design, and a humongous backlog of features yet to be implemented. So I'm off to sleep a bit more for now, and resume coding very soon~

Friday, January 22, 2010

On Choices and Names

Wednesday, 13th January. Our group has decided to go all out with our Facebook app, or die trying~ In other words, Penguin Award, here we come!

It might seem strange that we're striving for the award given to the most spectacular failure... but it's not just that which we're aiming towards. Among us 4, we've bounced our dream FB apps off each other, grabbed a few ideas off different points made by different people, and have come up with a dream app that all of us, individually and as a team, aim and want to see through. And i think therein lies two very important points. Firstly, a team works much much better when everyone wants it for their own personal and professional pride, and not just because it's their job or they were coaxed by someone else onto the team. Secondly, dream big. It doesn't matter if you fail initially and / or repeatedly.

Despite starting early, our assignment Aspirations weren't complete till just before 11 pm yesterday, the day of the mid-assignment submission for the Facebook assignment. Not that we were lazy, but simply because that wasn't our priority. This was, and still is, the first Flash app Eldwin and I have created from scratch, and we cracked our brains for quite some time over the format / syntax of Flash. Concurrently, Laurence and Carolyn were busy designing the logic and graphical interface of our app, both having to learn on the go as well. Consequently, the Aspirations were put on some figurative shelf for quite some time.


Even the name for the App wasn't decided till really late. In a world where all you see of a product before you use it is its name and a short description, these are the first attention grabbers for new users. We wanted something with a catchy ring to it, while referring to our content in some way. Our placeholder name, Codename Gentoo, is our internal reference to it, on account of Gentoo being a family of penguins ^^. An interesting name I found while page hopping was Booooooom, which I initially thought was weird since it was hard to remember its exact length, till I saw its logo.



Okay, that's quite cool~ ^^ It'd be quite hard for someone with their logo to forget them. It even reminds users of the services they provide, as the company is actually a design company.

Names and logos are, especially in Facebook, what many users will see first. They need to be related to your app for their first impressions to be accurate. They need to be catchy enough for them to want to know more. And above all, they need to be simple enough to be remembered.

I wonder what our app will be called in a few weeks time~

Friday, January 15, 2010

On Expressions and Impressions

Facebook App groups are due today~ Over the past few days, we've all seen our coursemates pitching themselves in order to get themselves groups, in various different ways. Some were successful, some... not so. What went right / wrong? Why did some people take longer to find their groups?

Impressions count for a lot, regardless of how accurate they are. According to a course held by consultants from McKinsey, impressions can be, and are, made within the first 10 seconds of meeting someone new. What were these 10 seconds? How many of us have actually greeted our new coursemates, let alone sat down and talked to all of them? For most, the contact we've made has been limited to CS3216 Superheroes, Show & Tell, and the recruiting / recruit-me emails that we've seen and / or sent. Of these three, I think the greatest impressions would be left by emails. An email, in fact any written word, has to convey its intended meaning without the aid of gestures, pitch, volume, and body language. It is therefore important to realise how one's words might and will be interpreted. Some emails that I've seen come across as willing to learn and experience new ideas, new people, and new working styles, whereas some came off as arrogant and narcissistic. The actual details vary, but the arrogant-sounding ones generally seem to imply the sender's intellectual and / or social superiority... and whether intentional or not, that's probably not a good foot to start on.


That being said, I think prof's restriction for all our project groups to be distinct is a good one, for it forces us to know other students and work with them, circumventing our original impressions of these people and discovering their true talents within. Hopefully our initial impressions of them would be wrong, and they turn out to be really fun and supportive people to work with~

Saturday, January 9, 2010

CS3216: What, why and how?

School's starting on Monday! And with it, our first CS3216 Lecture, and Show & Tell~ But... what SHOULD I expect from CS3216 anyway? Frankly, I have no idea~ ^^

CS3216 is a cross-faculty module where people from all walks of life work together to develop new computer software applications to be deployed in different platforms, like Facebook, Gears, and Wave. Interestingly, that's where most definitions stop. Something about CS3216 defies precise definition... Perhaps it's the diversity of talent in the module, or the individual motivation that drives these people, and the chance to work with people having very different world views, that causes most (if not all) of the seniors to promote the module to their juniors

I applied for CS3216 with the primary intention to learn. Learning new programming languages and methods, learning design and learning animation, these were important, but could have been done on my own. What I feel cannot be so easily learnt elsewhere in school is the collaboration and cohesiveness between a team, especially a team who has just met, and working to push ourselves and our product to the limits of our capabilities, while under a strict deadline. These are lessons you cannot get from any book, any classroom, any lecture theatre. These have to be experienced with your own hands and eyes.

As I was beginning this post, I was listening to Lea Michelle's cover of the song Taking Chances (originally by Platinum Weird, also covered by Céline Dion). The lyrics for its chorus rather accurately capture my how I feel towards my second semester in NUS, and also towards CS3216... Take a chance, and jump off the edge, never knowing if there's solid ground below.

But what do you say to taking chances,
What do you say to jumping off the edge?
Never knowing if there's solid ground below
Or hand to hold, or hell to pay,
What do you say,
What do you say?

Here's to a good semester ahead~ ^^