Saturday, March 14, 2009

Episode 8 : Software Engineering

From Prof Ben's last email regarding blog posts ...


I'm assuming that my previous post with the purple dog's picture is not acceptable for grading purposes.

************

On Monday, Prof Ben gave a lecture regarding the Principles of Software Engineering. It's not really something too new to me, and I've heard these golden points many times over. However ... it's particularly disheartening to realize that I'm common offenders of most of them.

Subconsciously, I've known my flaws all along ... however, I just haven't had the insight or sensibility to change my programming methods. I'm always in a rush for time, and my stubborn mentality heightens the problem. Given tight deadlines, I don't think a lot before i initiate my coding. That goes for both Assignment 1, and Assignment 2.

I work for effectiveness, but paid little attention on efficiency.

This is kinda reflected in my peer reviews as well ... disheartening but true.

"More thinking, less coding"
This phrase keeps ringing in my head ever since the lecture. I was trained to be an engineer, but voluntarily side-tracked to programming and development. I self-taught most of the programming and software knowledge I know, as well as oweing to the guidance of several important people in my life. I guess I need to either shape up or ship out (which at present, is out of the question for me).

Modularity, Decomposition.
Abstraction
Separation of Concerns
Generality
Design for Change

I read Wenhan's post ... and I kind of agree with him... Maybe it's an engineer thing. I've heard these Principles many times over, but I can't really see the distinct boundaries separating them. To me, modularity is the mother of all principles. The rest are simply different definitions of the same logic with different methods.

In short, Divide and Conquer.

Instead of one huge gigantic block of code, the framework should be structured such that functions are neatly organized, readable, and easily modifiable. This allows for concerns (such as interface design and logic) to be easily separated and the messiness reduced. This also allows for future expansions and scalability ... just like adding lego blocks to each other. Abstraction and information hiding can also be achived, when functions, classes, and libraries are neatly and modularly planned out.

I have lots of thinking to do ... and challenges ahead as usual. I hate to admit that my codes are rather spaghetti, but I guess I'll just have to improve myself if Captain Cook were to take off to an even greater heights.

Bear in mind though, that the Principles covered during the lecture only applies to the generation of software and codes. In the real world, far more important principles need to be taken into consideration if you are to launch a successful product.

Principles such as ...

Usability of Product
Teamwork
Practicality of Ideas
Publicity
Market Demand

And as usual ... these are stuffs that doesn't need elaboration ... coz everyone already subconsciously know what they represent, and how important they are.

The question is, why are we stubbornly not persuing it sometimes?

You can bring the cow to the water, but you can't force it to drink ...

Many times in life, the knowledge (the principles in this case) represent the water, while we are the cow. We have been convinced that the water is essential to us, but why are we just nodding in agreement without ever touching the water ourselves?

When queried, our answers in defense are usually stuffs like "no time ... i'm not good enough for that ... etc".

I think the best answer to the question, lies in our personality. We are just too stubborn or lazy to get out of our comfort zone, and then we come up with an excuse to validate or justify the present situation ... so that we become not the one to blame when things cock up because of our stubborness.

Prof Ben keeps saying that he is teaching to earn his pay ... actually that is kinda the only thing (and best thing) he can do for us. The door has been shown, noone can make you go through it other than yourself.

Moo.

********************

We are all fighting for our grades, our dreams, and our ambition. However ... somewhere in NUS Science ... a fellow student just had an additional barrier unfairly slapped in front of her before she is able to chase her dreams like us.

Please check this out, and help if you can.
http://blessxiaoou.net/eng/



God Bless.

Thursday, February 26, 2009

Quotes: On Fear



"Courage is never the absence of fear. Rather, it is knowing fear, yet still having the will to push on"

Tuesday, February 24, 2009

Hello World

Hello to the world!This particular blog post has been posted online via BlurBlog V1.0!!Signing In, posting, and synching has been done to blogger from BlurBlog interface!

I am very happy!

That I can make my fonts italic!

And Now its underlined!

  1. And Then Numbered too!
  2. Look at Me!!!
  3. <----- Number 3!!!

Look!!! Right Justified!!

Tuesday, February 17, 2009

Quote

Nothing worth doing is ever easy.

If it's easy, then it probably ain't worth it.

Monday, February 16, 2009

Episode 7 : User Interface Assignment



Seeing how web services like Yahoo! Answers has worked so well, the GetHelp! application sounds like a pretty good idea indeed.






The interface design, however ... looks pretty terrible. It apparent the team needs better designers.



Elements Layout


The home page is simply too cramped and messy. Buttons are lying around everywhere unorganized. This can be very very frustrating to the target user who's trying to fill in his details ASAP. More than once, the buttons are placed so near each other that users may accidently click on the wrong links. Here's the most prominent example.



The "recommendations" link has been placed right next to the "badges" tab with very little margin. There's a good likelihood that impatient users will accidently click on the wrong links, giving rise to unnessary frustrations. The same applies to the mini icons placed beside the "need quick help?" section.


With reference to the same picture above, one can notice that lots of white spaces are surrounding the text and picture elements. So why do the designers choose to cramp their text and icons into a tight bundle instead of utilizing these white spaces?


Checkboxes


The designers apparently overused their checkboxes on the home page. In the "Who do you wish to ask?" Column on the home page, 3 checkboxes are present to the user as options. There's a bit of logic problem over here ... what if someone checks all 3 boxes? Then what is supposed to happen?


Each of these options are dependent of the other options. If you choose to post your question to ALL of your friends, how can you "pick and choose reliable ppl at the same time?". Confusion!


Instead of checkboxes, a radio button should be placed here.


Logic Flow


Looking at the home page ... i don't really know what the developers are trying to achieve. Is it sufficient for users to simply type their queries in the big "I need Help With ..." column in order to post their questions? Or is it compulsory for the users to fill in further details in the 2 columns below?


Looking at the home page, I'm pretty tempted to simply enter my query, and then press the big red button without any further hassle. If a popup box should appear later on with messages such as "You have missing fields. Please fill them and re-submit.", I know i'll get pissed.


If the bottom 2 columns are compulsory fields, I have 2 suggestions for improvement.


1) Redesign the home page to make the bottom 2 columns more prominent, with colors, bigger fonts etc, such that users will not miss it before pressing the submit button.


2) Remove the botton 2 columns from the home page, and place them within dedicated pages, where users will be redirected after pressing the submit button.

Overview Page


Check out the proximity and the positions of the buttons above. It seems that the "Recommendations" link has been forced to sit underneath the "Overview" link due to the lack of space. Classic example of poor CSS implementation.

Also, it has come to my attention that ... just looking at the picture alone, I don't even know which page I'm currently in. None of the 4 tabs above are lit (unlike the tabs in the homepage). In fact, why are there 2 different styles of tabs in the top panel? Do they serve completely different purpose?

Consistency in elements design is one of the basic rules in creating a usable interface. As a layman user, I don't really know what different categories these buttons may be sorted in. The only thing I will know, is that they are all links to different parts of the same application. As such, it serves well for the developers to apply a consistent design to the tabs on the top panel.

Project Page

Erm ... the tabs on the top panel are covered partially by the help details banner?

The help section looks far too basic with minimal details functionality in place. What if I have screenshots to show? Is that supported? What if I have an essay to write to relate my problems? Is that supported as well? If the answer is no, then the designers probably have to wake up their ideas a little bit.

Bots

For an application like this, there are multiple possibilities of abuses by bots and all. Furthermore, the help posting functionality has all been squeezed onto the front page. It'll not be difficult for evil botters like Jason to spam the website with malicious content. He has done it before and he will do it again ... mercilessly thrashing the programs of innocent developers who use PCs instead of Mac.

Anti-Jason Measures Suggestions: Put a captcha at the right places to verify human users. Also, there should be a limit to the max number of posts by a user within a given period of time.

Saturday, February 14, 2009

Episode 6 : Pitch

External companies are pouring in to pitch their ideas to levarage on the facebook network. Even the NDP organizing team has expressed interest. It's undebatable that facebook's influence in everyone's way of life still remains strong. Advertisements ... Games ... Publicity ... facebook has a solution for all, thanks to the flexibility of its applications interface.

It particularly amuses me that I (or any of my coursemates for that matter) could have been the one who created facebook 1.0. I may be wrong, but the early version of facebook doesn't seem too technically complex to implement. Who could have predicted that it'll grow into such a giant 2 years down the road? On top of that, there's already friendster in the market. Infused with a little user-generated-content, however, facebook easily overtook friendster. Of course, friendster's infamous server lags helped a bit too.

During my day-dreaming sessions ... I often make wild guesses to myself on the next big platform to emerge. What kind of idea will it be? Most importantly ... who's idea will it be? Do i stand a chance at all?

God knows, we'll just have to see as we go. Meanwhile, the least that we can do is to keep our faith strong.

Truely, no sky's too high, if you soar with your own wings.

------------------------------------------------------------------

My 2 cents on what I feel about Friday's pitching party.

...

Simply, it has been great.



No kidding. I know that that's the default answer for anything prepared by Prof Ben, but it really really has been a most enjoyable and enlightening session. Like most of my fellow students, I believe, I have already expected it to be quite an eye opener even before coming. I didn't expect, however, for the idea-sharing and interaction spirit to stretch to such a point of excitment and amazement (to me, at least).

I am very very impressed by the Pixie chip introduced by the Human Networks Labs. In fact, this is precisely the idea suggestion which I have suggested to Prof Ben last year, when I submitted my portfolio and documents required for my application to CS3216. In social networking sites such as friendster and facebook, the dimension of space and distance is negated. I can reach out to friends and strangers regardless of where they are presently. However, I have a personal vision of re-kindling the inter-human interactivity in the real world, without losing too much of the cross-boundary benefits derived from facebook. Therefore, I was proposing an application, much like a simple IRC chatroom, but that groups people based on their present physical location. Think about it, you can talk to that nice cute girl sitting on the front row of the LT which you are presently in. You don't have to know her, its cool to just hook up a friendly chat about random things. Especially since both individuals are presently connected thru the same boring lecture session, they might have a common topic to yakk about. Going by the same logic, I can use this app to talk to my neighbours (which most ppl don't usually do these days ... sadly) at night, or even arrange a supper session with people living near me. The most promising technology that I can thought of to power this vision is BlueTooth. I see a lot of potential in this. If this is to be embedded into a games interface, the gameplay will be totally awesome! Elven Blood in real life! I think Varsity Chronicles will be pretty cool with this gadget too! Imagine your mobile device beeping if a member of a rival faculty physically enters your territory and closes in to your perimeter (perhaps for lunch ... etc). You can gather up your party and fireblast the intruder, who in turn may gather her Jie Meis nearby and retaliate.

Now that's what I call true human interaction.

Also, it has been great to know Luther, of Lut! Games Studio. I played a number of his games, and thoroughly enjoyed it. If you have time, do try out the fright series game "Darkness" by him. I like to work on games, as a hobby and maybe even as a part-time job. As such, its great to know a local developer who is producing games of such quality. On top of it, he's an alumni of the same class I'm in right now. I sincerely hope that the Coolies, the developers of Captain Cook, will have a shot to rise to his level of achievement.

Lastly ... perhaps the biggest eye opener pitched in my direction, is the copied version of FarmWars onto the Xiao Nei platform. The developers are actually earning 12k per week !!! Based on a copied idea! At first, I thought that this will be a good problem to have, since only famed ideas are copied. Then again, putting myself in the original developer's shoes, I'd be damned to know that someone else is leeching in big bucks based on my idea. It could have been me! Worse still, there's probably nothing I can do to topple them. Thanks Wangsha and Boa for the great presentation ...

I'd be even more damned if the same happens to Captain Cook.

Tuesday, February 3, 2009

Episode 5 : Facebook Seminar

It's really quite a shame, that I'm not allowed to blog about my own presentation material. I would just love to go on and on and on about Graffiti.

There's just so much to talk about, and so much to be surprised about.

A total of 7 applications were presented during the seminar. All applications are worthy, most of them pretty creative, some flashy, and most requires complex technical programming. All these factors combined, with a carefully planned out game-play sequence or work flow, it's no surprise that the active user counts reached into the millions.

Graffiti, however, if you noticed, has none of the qualities mentioned above...

Its not really too creative or novel, no flashy animations or colors were used in the design, and I doubt that its too difficult to do up the program with the world wide web's support. It's active user count, however, sky rocketed ... and even with big names like Intel and Dell throwing in sponsorship moollahs.

One can publish an article analyzing the reasons for its blossom ... but personally, I believe, it sums down to 3 simple letters.

...
U G C , at its best.

...
...
...
I'll stop here for now ... and leave the imagination to everyone else. Do think through one question though:

Can you think of another facebook application like Graffiti, which allows the creation of true User-Generated Content to promote its growth?

Applications that allows the user to choose from a limited template of items shouldn't be classified into the same category. Fluff friends lets you choose a pet out of a limited number of creatures ... and to choose backgrounds from a limited set. The "uniqueness" of these "UGCs" is limited only to the finite mathematical permutation of these different items. In the case of Graffiti, however, the permutations are infinite ... just like Wikipedia and YouTube.

And know what? Drawing a Graffiti expression, is much simpler and motivating than writing up an entry in Wikipedia, or making a video for YouTube.

Lastly, before I begin my application seminar entry proper, here's the highly acclaimed ...

"Personification of Evil"







Bwahahaha ...

I'd like to thank my beloved friend, Liu Ling, for her work on the Graffiti. :)


    Facebook Seminar Application Critique


Being quite an avid gamer myself, and for my constant amazement and curiosity at games programming, I'm going to talk about Elven Blood. Partially also, that it is VERY IRRITATING having hordes and hordes of invitations from friends to join their parties in Elven Blood.

The team gave a pretty thorough presentation for the application. Many points caught my attention, and got me thinking. Here's my 2 cents.

1) Shortness of Quests
This particular sentence from the presenter especially got my thinking gears moving :

"The Quests are completed too soon ... Development can't keep up with gameplay .... usership dropped tremendously"

In general, I believe that multiplayer games on the internet can be classified into 3 categories:
  1. Linear Gameplay
    An example is Playfish's Geo Challenge. A fixed number of stages are set, and fixed by the developers. Players can only play the stages from start to finish with minimal interactivity with others. The only basis of competition is via the scored points.

  2. Exploratory Gameplay with Maintainance
    Partially-linear games which are exploratory in nature, but require frequent developer's expansion and intervention to retain players. Elven Blood probably belongs here. User can interactly nicely with other players ... but the main objective of the game is probably to completes quests. So ... what's next after all the quests are completed? The developers will have to create expansion and continuations. No doubt that these games will attract a good mass of initial users, but to retain them, the developers will end up working all day to maintain it. Not too desirable...

  3. Exploratory Gameplay with Low Maintainance
    Warbook, Battlestations, Pet Society? Same as category 2, except that the game is pretty iterative in nature, such that it still remains fun even when the developers stop development for a long while. In Warbook, after players get more gold and more land, they attack other players, become more powerful, and the cycle repeats. Along the way, they form parties that bond and disperse. In these ways, a community is formed. Lesser developer intervention may be necessary, so in the meantime, the developer can go ahead to persue other money making avenues.

Elven Blood falls into category 2. The game is fun initially ... but the proliferation of players mean that development will have to be fast to maintain this source of revenue. The fun derived from the game is almost as short lived as the finite features programmed into the game.

At time, I wonder if these kind of games are worth perusing at all. It may work if its a single player game like Final Fantasy, but in a multi-player environment, we really need borderless and limitless gameplay to simulate a true community. That way, the players can enjoy the game timelessly, and the workload will be reduced on the development side.

2) Blessings and Sponsorships
From my understanding, Elven Blood obtains its revenue from companies which advertised in its platform. Clicks or views to these companies' website are integrated in-game as "blessings", which can grant boons and enhancement to one's character in the game. The presenters claimed that this will not distort or disrupt game-play ... but I can't help but disagree to a certain extent.

By granting bonuses whenever players clicked or signed up in the advertiser's websites, I feel that the developers are openly manipulating the players like marketing chess-pieces in the game. In a way, indirect manipulation. It certainly starts a chain effect to force people to click on the ads, since they cannot receive blessings (and get ahead in the game) without them.

Sure, some gamers might not have the initial intention to invoke these blessings. However, seeing so many other players (sometimes opponents) getting ahead by spamming the blessings, they are forced to follow suit. This sets off a chain reaction. If not handled well, the gaming environment can be thoroughly destroyed and overtaken by marketeers and profiteers. User ship will like fall to a halt, and complaints and critics can be expected to appear from everywhere.

I've come across an MMORPG called Dark Ages. What I have heard, is that the money minded admins have ended up destroying the game by releasing powerup items cheaply for real money. User (who originally have to pay to play the game) became dis-illusioned by the blatantly obvious marketing core of the system, and simply stopped coming.

Eventually, a game is meant to be fun, fair and entertaining. An ideal business model should return revenue (albeit a little lower), but at the same time maintaining the fairness of the gaming environment. The most basic form of advertising that falls under this, I believe, will be banner advertisements. Other forms may perhaps be additional features, like what Intel and Acuvue did to Graffiti.

3) User Generated Quests
UGC has proven itself to be an undeniable means of spurring user activity. Minimal developer intervention is needed, as the user's creation continues to make the applications stay afloat or soar.

I can't seem to picture, however, the idea of having user-generated quests integrated into Elven Blood. Among the good users, there can be many malicious users lurking around with inappropriate intentions. If their generated contents goes unchecked in a game like Elven Blood, the whole game-play may become quite twisted. On the other hand, if developers were to check every single one of the submitted quests, development workload may amplify by a large degree, and many contributors are bound to be dissatisfied and turned away by the quality control.

What I feel about UGCs, are that there are no midpoints to it. The flood gates can either be fully opened, or tightly shut.

I may be wrong ... but I'm a little doubtful about the suitability of user generated contents being integrated into online games.


Elven Blood
Before attending the seminar, I have largely heard about Elven Blood, and have been in constant bombardment by invites to join parties from the x-th inner circle. I didn't try out the app then, as i didn't feel that I'll like it. It seems to me like a very forceful embedding of a marketing powered game engine onto facebook. Also, from what I have previously heard about the application (which turns out to be correct as explained during the seminar), it is not as scalable as users might have expected it to be. From the time of the very first bombardment of invites I have received from friends to add the application, I have a hunch that the application will only last as a hype.

The fascination is not completely over yet though. Let's wait and see how things go from here.