Sunday, January 31, 2010

FB APP ASS-IGNMENT

Last thursday night was too stressful to me. The deadline drawn very near already but our application was still full of bugs. We redesigned the UI that afternoon and have to make some change in the styling. Dilip and I tried to fix some bugs, implement something we hadn't implemented. Tomithy tried to convert his flash to video to publish in Youtube but failed. Later Tomithy and Dilip had to do documentation also. Everything was pretty crazy! I'm sure some times I was very irritating and not responsive. (Sorry to Dilip and Tomithy!) After all, we managed to pull out something run-able and submit. Oh yeah and that tarball requirement =.= It wasn't the end yet. Later that night, after come back from supper with others, I managed to fix some more bugs in the UI part, went to sleep at 5 and skipped all the lectures on Friday.

Assignment 1 passed, had it? We just managed to finish an usable version of our application by the deadline, so there wasn't any use of the AGILE approach. I suspect the deadline is actually a milestone that was given so that we could pull ourselves and release something and after that make use of the feedback from community (just as the first deadline to ensure we didn't start late). Now there is no deadline we have to face, but I don't think the assignment has been over yet; for if we believe in our application, we should continue develop it no matter what.

Personally I believe our application, Heartspoken, can do something different. The idea is to store your good memories, to say thank to your beloved people, to be thankful toward life. I myself observed and experienced the delight a thankful message can mean to another person. Our app was meant to be something useful, not useless-but-popular like many trashy apps in Facebook now. In a social network like facebook, our app can be even more meaningful.

However, it is a difficult application to develop. Not that it requires some fancy new and advanced technology, but that it is hard to sell. It is hard make people appreciate the idea and use it that way. Without knowing about that purpose, the application will be no different from facebook status or twitter. So far we haven't been successful in doing that. 2 weeks for 3-4 people are too short to make something meaningful out of that idea.

Speak of difficulties, our group had no designer, so Tomithy had to do designing. One night Tomithy spent around 6-7 hours started learning Photoshop and did designing. I knew how difficult it was for him to do all that stuff, that at the end he said he couldn't stand designing anymore. Till now I think he still prefer using Flash to design. For me, I was new to web programming so I had to learn mostly everything from PHP, javascript, FB API and stuff. Once I even wrote PHP code inside a script tag.. amidst of javascript code (like, using $ before variable..). Dilip was in charge of database interface but he was even a stranger to programming, he also had to suffer a lot. I'm sure he will never forget global variable stuff in PHP and how we wasted so much time debugging it. We were all learners. We all suffered.

Still, I must say our way of deployment was the best approach and most suitable for everyone. Everyone was specialized in something, work with each other through abstraction layers: like I only have to know which functions I need to call to get and store data, only need UI design to implement UI. Tomithy can based on functionality described before to design UI and intro video. Even if the result wasn't satisfying, at least we gave all we had.

Speak of feeling, I have came through quite different feeling throughout the project. From enjoyment (as described in previous entries) to hopelessness (failed to complete quite many functionalities described) and stress out. Even anything happened, I still enjoyed the companion of my friends. That alone mean a lot to me already. I liked the night spending with them in COM1, eating, working and chit-chatting. The fact that they were there was something to me already. Thanks, Tomithy, Dilip. And Kah Hong, Cedric and all other 3216s who spent nights with us in COM1.

But I did feel helpless. I did felt impotent. 2 weeks I had tried so hard, 2 week I given myself, yet I had achieved so little. Sometimes I felt lost, I felt that what I did was at the end all meaningless. That was the worst feeling.  However, I was happy that I had never stopped trying. Even in the worst moment I still tried to gather all my strength and concentration to work. I was strong.

If there is something we could have done differently, I would suggest myself to throw away AJAX and help Dilip debugging the database functions more actively, and after that focus on basic functionalies.. I would suggest Tomithy to concentrate more on selling our idea and educating users. As we didn't have a designer, we should better give up designing and decided upon something simple but user friendly in a very early stage. We should also talk less about functionality (as these meetings had no end), started deploying the most fundamental one the earliest possible. Not only it would help testing, it would help easing the pressure we had to face at the end.

There are still a lot of thought in my mind, but I should end here. It is a long article already. Hopefully no one will give up reading the whole thing. End with a comic I published drawed the next day after the deadline:



A funny story on Thursday night: On 1 side of me, Tomithy moaning 'I want to do programming', on another side Dilip complain 'I hate programming'. Quite amusing, haha.



Monday, January 25, 2010

A relaxing moment amidst of ...

When I am writing this post, I have just taken a bath, is staying in my comfortable bed again, enjoying instant noodle and listening to "Music of the night" by David Cook. It was a tiring day. When I came back at 5am in the morning, I had coded for nearly 20 hours continuously. Tonight our group also stayed back to work until 2am after the lecture. We only left because everyone was too tired. I could see Tomithy's eyes half closed already. He slept only 1 hour this morning. Dilip first time experienced the frustration of programming when he spent around 3 hours trying to debug a piece of code to send invitation to friends, and later faced database communication functions. Most notably is that Edison dropped the module. He promised to stay with us until this project due, however I still think it was kind of a mental shock for the rest of us. For myself, I didn't think much about it, though I cannot reject that I was a little discouraged. In my mind there is only 1 matter, that is there is a great application that we will have to finish.

Sunday, January 24, 2010

Sunday Selflection

Sunday comes put an end to the 2nd week of the 2nd semester. I woke up at 6am after a long sleep from 9pm yesterday. I could feel the comfortable mattress and the warm blanket around me. The weather was so nice! It was very hard to reject the bed and get up at that weather. I gave in and continue lying there, thinking about the last week.

I couldn't believe that next week is the third week already; I hadn't touched any module except for 3216, which had occupied me all the time. Oh and this week out of 8 lectures I skipped 3 lectures, coding and reading facebook wiki in 2 others, and left early in one. It was just like in the vacation, when you could enjoy something you did without caring about lectures and classes.

Monday was the second lecture of 3216. Prof was as inspiring as always. I must say he is a great speaker. All the inspiring talk, I won't forget. In the second part of the lecture, previous year students sharing their experience, I found some interesting ideas. Firstly, main programmer shouldn't code (no matter how good you are). This is somehow true, as it happened to me once that one programmer in my group couldn't do his part of work and I had to spend 1 day with him, not only to push him do the work, but also to help him solving problems that he didn't know how to do. Also a programmer, I know well how frustrating it is when you have to learn and do something new at the same time. It is much better to have someone nearby that you can always resource to (isn't it why we have teachers and tutors?). But mind your time resource and your knowledge. Secondly, don't tell people how to do a thing, but let them surprise you. Nice idea, but mind the deadline.

Thursday was the most enjoyable day. That night basement was filled of 3216 students: four groups was staying back to complete the mid-submission of Facebook app project. I could see clearly how much they devoted to the module. This is one of the major reason for the success of 3216 past years: not only did the students hold the best qualities, they were so committed to their projects. We had a great time talking, chit-chatting with the McDonald sponsored by prof. I enjoyed accompanied with them. It wasn't wasted time staying back. On the other hand, I also enjoyed the work I was doing.

By enjoying, I didn't mean it was full of enjoyment and happiness. Coding sometimes can be very frustrating. When you are learning new languages, many problems appear and you couldn't understand what is happening, why it happen. Ugrrr frustration. However, no one could reject the great feeling of learning something new, or making some cool function work. Sometimes I couldn't stop until making some new functions work. After all, if there's no difficulty and sadness, how can one enjoy happiness?

Ayah, time to continue working.

Saturday, January 16, 2010

Watch out! Awesome people around!

Had a very very exciting talk with Tomithy today (yesterday actually). WOW!



+.+ Only now I manage to write something for this talk. More detail later.

Friday, January 15, 2010

Make a difference?

This afternoon was interesting with a chat with Reuben and his friend Wash. I felt like many very small things suddenly connect to each other, giving me some sense of realization. Realization of an (seemingly) obvious thing.

Wash told us about his application (/ tool) to find at which time a bus come to a bus stop, how people use it and find it useful. His application adds value to the society & the users. In return, he gets satisfaction & the feeling of contributing his talents to other people. "You know, we have skills to create something like that. Right? Those who don't know programming can never do it lah."

Reuben also talked about his business. He concluded "you find something that is not good enough, try to make it better and make money out of it". Isn't it sound familiar? Yeah, prof Ben once mentioned about this method of solving an existing problem in our first lecture. Suddenly I remembered his words, linked it with the motto "make a difference" of 3216, with the words Mr. Ong Peng Tsin's purpose, linked them with the work Wash has done. Wasn't what he did making a difference? I also tried to reason what Reuben thought when started his business.. I realized that problems are numerous out there. I realized that every times I felt a service  unfulfiling, there might lie a chance.

Honestly, my first thought after that was "Oh. Wow. Now I understand... Problems are numerous out there. Vietnam has so many problems."

Suddenly I thought about coming back to "fix" Vietnam. The first time.

Thursday, January 14, 2010

it's complicated.

45 people. all of high caliber. all rush out to find teammates. individually.
after a while.
lets not count groups of 4 people.
the rest are like a mess.
not because others are isolated.
each person (try to &) connect with several people.
let's think of them as nodes in a simple, directed graph.
one connects to another if he think the other will join him.
one may ask it should be bidirectional, why directed?
because the other might not really mean what he said (diplomatic? tentative? look for more choice?)
mostly because edges are formed simultaneously
at 1 moment a person talks with several others
(record goes to Orry:  2 FB convo, 3 MSN convo, 2 Gchat convo, 1 Wave, and 2 QQ conversations, at the same time.. Finally done, yet still I'm 1 short for my seminar group.. Please drop me a msg if interested.. Thanks..)
some called himself & his direct successors a group.
some (intended or not) are in several groups
when a group has 4 people, all the people are deleted from the graph
the left over found that he had less people in his group than he thought.
--> trouble arise.
group of 3 cannot join group of 2.
some group hesitate to join another (ex: same skill sets, etc)
some are not actively searching for groups.
+.+

Disclaimer: Pls don't think much if you dont understand or dont want to read the mess above. Ha ha. I'm trying to convey how messy is the grouping process now. It is.

Monday, January 11, 2010

Embeddy

Just a quick note. Added Embeddy bot to my blog so if you're signed in to your Google Wave account you can see a small bar. Feel free to leave any comment or random stuff.

Show & Tell

So I was the first one to do the show & tell. Hopefully prof & friends enjoyed it = ).

Firstly,






Personally I think it was good, though it achieved only about 80% of my expectation.

For me it was a real experience of "selling". The performance started only with the idea of doing 3 balls juggling. 1 moment I suddenly had the idea of 1 ball juggling as the deceived cover of the real so. That moment I realized that though 3 balls juggling seemed interesting, it was set of repetitive boring action that might not hold people interest for a minute. I realized that all the things I focused in was how to do 3 balls juggling, not how should I do my show & tell. I was focus on how to make a good product (and think its quality will pay off), not how to make people like it. "Yeah, how should I really perform? how should I introduce & talk?" I woke my mind up. 1 ball juggling was a good idea to get people attracted because it sounds stupid and trivial. Then I started to think about a rough version of script, how to start it stupidly and end it impressively. Later when I went around and kicked randomly (a bad habit you get when you practice taekwondo..) another idea come to my mind - having a warm-up session that really overdo the things (yeah, make it stupid). It supposed to be at the beginning of the show, but just before the show start, I changed it in-between the 1-ball part. I even thought of a mute show (dont know if it's a correct word) but couldn't carry it out. These all complete my performance.

The good part of the show is that I really worked on it. I was kind of obsessed of it and thought of improving it all the time. All the ideas somehow paid off. The 1 ball trick made some people surprised / applauded when I changed to 3 balls. Warming up attract some people also. And there wasn't much problem with juggling 3 balls at the later part of the show. So it went (somehow) well. My script wasn't bad.There were some unexpected things happened but I handled them not too badly.

The worst point was that I got too nervous. Faster heartbeat, cannot speak clearly.. That kind of feeling I could see many people shared with me today. Because of it, I somehow moved from 1 part to another too fast. I couldn't do presentation part as I wished (such as look at the audience). I couldn't really juggle 3 balls as well as normal. Sometimes I baffled (this is attributed to my poor English speaking skill as well. I've actively sought for chances to do presentation and perform in front of many people to get familiar with them but I still need to experience more. Hopefully I will have more chances.

Another bad points were that I didn't practice to 'fail to juggle 1 ball' and didn't really planned the warming up thoroughly. What seemed to be easy could be hard in a real show. Next time do prepare better, as in the real show, things never go as well as in practice. To achieve 100% we must prepare with 120%.

Stay tuned, the next post will be I talking about myself and looking for teammates.

FYI, I practiced this trick a year ago for about a week (practiced for a short of class) and then stopped. And just 2 days before I brought the balls and started practicing. Now I can do it continually for several minutes (several hundred times). I am quite happy and satisfied with that result.



While watching everyone's show & tell I thought of making comment of them. However, now I forgot most of the things already. I'll try to jot down something.

I like prof's first words. Talented people are usually multi-talented.I think it's true.

First, the shows varies a lot, saying different people are interested in different things. That's really cool. Most of the show were really cool, like the card trick, guitar plays (recognized Canon in D), songs (Imagine by Patrick). But that said, I realized that sometimes cool things just impress you for a moment, then passes by very fast. You ended up with remember no performance but the things meaningful for you, things make you think about.

Carolyn's show of drawing, I got stuck at some moment and said some stupid things. Came and said apology to her after the show.It actually turned to be a good thing as I got a reason to start a talk with her. I really admired the passionate way she got crazy & talk about manga just now.

Adhiraj's story. Honest stories are always easier to recount. Honest stories are always heard. Attentively. Someone responded after prof asked about his story that he was good at talking / recounting / smtlike that (you understand what I mean). I agreed wholeheartedly. It just made me feel so sorry about my speaking skill. Adhiraj inspired me to talk about my worst failure. Wait for the post = )

Many people got the same nervousness as I had.Many foreigners suffered the same problems with english speaking. I particularly noticed some pattern of mistakes in Vietnamese's way of speaking English.

Monday, January 4, 2010

What & Why

First is a short introduction about me and this blog. I am Doan Manh Hung (call me Hung or Manh Hung), School of Computing year 1, National University of Computing. This blog is dedicated to my study in module CS3216, Software Development on Evolving Platforms. Actually this blog is created because we are required to write a blog about the module. However, I think this is a very good way to express myself and retain experiences I got from 3216.


The first post should be about why I took CS3216:


Why I wanted to take CS3216:
- Challenging. I have heard that this 4 MCs module's workload is equivalent to a 8 or 12 MCs module.
- Do something different. This is our chance to do real applications to Facebook and Google Wave. The applications must not stop at having a nice idea but being accepted and used by as many users as possible. This is a point that make the module different from most of the modules in SOC, in which we hardly can interact with our customers directly. I think it will provide a changing mindset from creating something (technically) cool to something satisfy users the most. Still, better to do cool things that satisfy users.
The fact that it is Professor Ben Leong's module also say a lot about its quality.
- Expect to meet and work with some of the best students in SOC and NUS. In a challenging, difficult module you expect to see daring, adventurous students = )



That's enough; I felt so bored of all these mundane writing. In short, I took 3216 because I thought it'd be challenging & fun. Intended to cut-off the part below also but well, let's just leave it there for now.


What do I want to learn from CS3216:
- Selling? This term, which is quite unfamiliar to me, has been repeated as the thing people learn the most from CS3216. It is not simply how to sell your products to your customers but, in wider perspective, how to show and demonstrate your cool ideas effectively, so that people understand them and like them.
- Team working. I hope to learn (experience, to be precise) more about working effectively with other people in a team.
- Some web programming experience. However, I believe I can grasp the technical stuff needed quite quickly.
- Some other cool stuff. Well, who knows all the things one can learn from something like 3216? Maybe at the end the things I learn the most from this module will not be one of the things above. Just wait and see.

That's it for the first post. Stay tuned, I will update the blog frequently.

Cheers.