Wednesday, December 31, 2008

Infocomm Career Guide 2008

Those interested in a career in IT will probably find this Infocomm career guide useful.

It provides a pretty good overview of the different career paths, job descriptions and salary expectations within the industry.

Hey everyone!

As this week’s guest blogger, I feel really honored to have this opportunity to share my thoughts and experiences with the SoC community. Thanks Ruiwen and Juliana for inviting me!

Let me start with a self-introduction. I’m James Tan, currently working as a software engineer at Novell’s SUSE Labs in Germany. This is where most of the people responsible for SUSE Linux are based in, though there are many others located in sites all over the world.

Some of you may not be familiar with the SUSE Linux operating system, so let me digress for a minute to give some background. The first version of SUSE Linux started off as the German translation of Slackware Linux back in 1992. Over the years, it grew quickly to become one of the most popular Linux distributions in Europe, particularly for top supercomputers. In 2004, Novell acquired SUSE Linux. It now exists in five main flavours: openSUSE, SUSE Linux Enterprise Server, Real Time, Desktop, and Thin Client. By the way, openSUSE 11.1 was just released recently, so do give it a shot! Too bad that I missed the release party this time round (was on vacation).

Ok enough about that, back to me now. I’m in the SUSE Incubation team and we’re currently working on SUSE Studio – a web service that makes it really quick and easy to create your own custom Linux distributions. I’ll talk more about that in a later post.

Incidentally, our team is hiring. If you’re interested, check out our jobs page for both internship and full-time positions. Alternatively you can apply through the National Infocomm Scholarship (NIS) or Enhanced Learning in Infocomm Technology (ELITe) programmes. That’s how I ended working for Novell / SUSE (through the NIS program). More on that later.

I'm not a fan of long blog posts, so I'm going to end here. Looking forward to your questions and suggestions in the comments!

Friday, December 26, 2008

Tips on how to get into the Game Industry

Today will probably be my last post.  So to round everything up, I've decided to post about getting into the Games Industry.  This is targetted to everyone, whether you are from SOC or not, as long as you are interested in joining the Games Industry.

For starters, I'll give the Top 5 Reasons to join the industry:(in no particular order)
  1. You want to challenge yourself with something new everyday in your job.
  2. You feel a sense of accomplishment when you see your game coming together with materials from your colleagues (be it artists or sound engineers or other coders).
  3. You feel great when people say your game is a great game and you know they are not lying.
  4. You want to make people happy.
  5. You like the freedom of coming up with creative solutions to problems.

And now the Top 5 Reasons why NOT to join the industry:(in no particular order)
  1. You want loads and loads of money. (Try becoming a lawyer, doctor, dentist, minister or join the finance sector instead. No you won't be raking in John Carmack's pay for a while.)
  2. You want to play games everyday. (Game development != Playing games)
  3. You want a slack job. (Game development is hard work! Try getting a rich spouse instead!)
  4. You think you can make fun games. (Don't think, test it! Fun cannot be defined)
  5. You want to ride on the bandwagon since the government is giving out free cash. (Save yourself the humiliation of failure from everyone else before you make the jump)

And finally 5 Steps to get yourself into the industry:
  1. Build up your portfolio, work on your own games (be it alone or with others) but make sure you complete them. Games which are half-done are almost worthless portfolio pieces because they tell your potential employer that you have no perserverence to sit through an entire project. I.e. why should they hire you if you are going to quit halfway.

  2. Build up your portfolio further. Make sure your portfolio shows your potential employer what you're interested in. Is it game programming or art or others? I can't emphasize enough how important a portfolio is, which is why I created a separate point altogether to make it important! If it is programming, are you interested in graphics or AI or something else? The more areas that you can cover the better but at the same time, make sure your portfolio is not a never-ending list. Pick the best few of your works and place them there to impress!

  3. Write a resume to include the great portfolio that you've done in step 1 and 2. If you don't know how to write one, go find out! Don't list your grades if they are terrible (Oh yes, I have seen resumes that do that!). Keep ALL your achievements within 2 pages. If you exceed more than 2 pages, it means you have something less important to take out. If you disagree with me, don't say I didn't warn you. Don't fill up 2 pages for the sake of filling up the space. Don't list your primary school achievements unless they are game development related (I'd be impressed if that were true). Listing your skills and knowledge on a 3rd page (like all the programming languages and software you know) is ok in my opinion but others may beg to differ.

  4. Keep a good working attitude. (Well this is not really something related to games but I'll try to give tips anyway.) Everyone's attitudes are different, but working attitude can be trained. Work and personal matters are best treated as two different things. Don't be too pushy. Don't be too inconfident. Think "can" before you think "cannot". Learn to communicate well and concisely.

  5. Expand your network. Alot of students seem to be afraid to go out and meet people. Knowing people in your industry is the one of the best things you can do to get yourself hired. If they know you and they think you're good, you can even bypass an interview! The Singapore Games Industry may be small but with respect to networking, that is actually a good thing. It means that you can get to know almost everyone in the industry. Getting to know people also shows that you have passion for games and it can create a great impression on others! Furthermore, it allows you to pre-select the company suited to your likings. If you know that this company works a certain way and you don't like that, don't bother sending in your resume in the first place since you probably will end up quitting. Networking is another point I can't emphasize enough.


There you go, 3 sets of 5 points each for you to digest. If you have any more questions for me, let me know in the comments below.

Lastly, I just want to add one super important point. Games are entertainment. That means game development works like all the other entertainment industry. And the characteristic with the entertainment industry is GRADES DON'T MATTER (MUCH). Sad but true... If you have a great portfolio vs someone else who has the best possible grades (CAP 5.0?) but no portfolio at all, you with the great portfolio WILL get hired any time over the other person. PORTFOLIO IS IMPORTANT.  I have to keep stressing that because a portfolio is really the beef that tells others what you can do, and not what you know. What you can do is much more important because someone else doesn't have to teach you that again. Therefore, if any of you are discouraged by NUS' CAP system, my advice to you is "don't be". But if you're doing great in the CAP system and you want to get into games, my advice to you is "that's great but get a portfolio!". If you have both a great CAP and a great portfolio, then there's basically no fight; you'll probably will get head-hunted if you did your step 5 (see above) well.

Have a great weekend!

Thursday, December 25, 2008

My christmas gift to you: Modulo, NUS timetable planner

Well I think its about time I should start talking more about NUS-related topics so that's what I'll do today.

First, I'm going to list all the modules I've taken so far since I'm slightly inspired by my friend's (shijun) list.

Legend: 
green modules are those I think are relevant for game programmers
blue modules are those I think are semi-relevant for game programmers
white modules are those I think are not relevant

Modules Title Brief Reason
MA1505 Mathematics I (Junior College Math) ^ 2
CS1104 Computer Organisation Basics of computer hardware
CS3241 Computer Graphics Basics of how to produce screen images
CS2105 Computer Networks I Basics of Networking
CS4213 Game Development I Basics of what is in a game
CS1101/S Programming Methodology Escaped this with test but useful
CS1102/S Data Structures and Algorithms I probably do not need to give a reason for this but useful
CS2103 Software Engineering Understanding of Code Structuring
CS2102S Database Systems Understanding of Databases
CS3244 Machine Learning and Neural Networks Understanding of how games can learn
CS3212 Progamming Languages Understanding of how to create a game script
CS3243 Foundations of Artificial Intelligence Understanding of how to make games smart
CS3220 Computer Architecture Understanding of modern hardware and assembly code
CS3211 Parallel and Concurrent Programming Understanding of multi-threaded game execution
CS4247 Image Synthesis and Computer Animation Understanding of Quaternions, Textures and Buffers used in games
CS3215 Software Engineering Project Understanding of team communication
CS2106 Operating Systems Understanding of what runs "behind-the-scenes"
MA1101R Linear Algebra I Useful for 3D games
ST2131 Probability Useful for games with chance or randomness
GEK1025 Reading Visual Images Related: Basics of art styles
CS2301 Business and Technical Communication Related: Basics of how to present yourself and write manuals
CS3230 Design and Analysis of Algorithms Related: Basics of creating optimal solutions
CS3248 Design of Interactive Media Related: Basics of Interactive Media Concepts
NM2101 Theories of Communications and New Media Related: Basics of media theories
GEK1519 Science of Music Related: Basics of music
SSB2212 Singapore Legal System: Implications for business Related: Basics of Singapore business law
CS4243 Computer Vision and Pattern Recognition Related: Basics of what to do with photos and webcams
CS1231 Discrete Structures Not apparently useful if it is useful
LSM1301 General Biology Not very useful for games but had to take it. Interesting though
PC1432 Physics Module: Physics II Not very useful for games but had to take it. Tough
JS2213 Popular Culture in Comtemporary Japan Personal Interest
LAJ1201 Japanese I Personal Interest
LAJ2201 Japanese II Personal Interest
NM2210 Aesthetics of New Media Personal Interest
CS3108A Computational Thinking Seminar Took to fill up my 1 UE point (out of 21 UE points)

Disclaimer: The reasons above are mine alone and do not reflect anything of the school's opinion.

I would have to say that the modules in green are the ones I find that I can apply the knowledge in my future career.  The blue ones are those which will definitely help me at one time or another since I will be having to communicate with all professions of people in my line such as artists and musicians.  The last few modules I think are mainly filler modules and I wish I could have used the time spent there to do more relevant topics.

And sorry no, you won't get to see my grades for each of them.  My main point of doing this list is so that juniors who are interested in game programming can start to plan early about what modules to take and this is list is meant to be a very brief guide about what to learn the necessary skills for game development.  Again, this is by no means the best guide and I'm sure many people may beg to differ on many aspects, but I do personally feel that what I have chosen so far in NUS is one of the better routes suited towards game programmers.


Modulo
I hate to create long posts because I know people get bored of reading by this point but I feel that I need to publicise this next project I did with any two friends as it is one of the most useful tools I have done.  They are Lim Zhan Wei and Alvin Ng Shi Jiin.  We did this program as part of the CS3243 Artificial Intelligence module in August 2006 under some supervision/consultation of our then teaching assistant Lim Yew Jin who is now working for Google America after he got his phD.  The best part of this was that we had the freedom to decide what project we should work on.

Modulo is a program which can help ALL NUS students plan their timetable (ok maybe not all with some exceptions).  It is arguable better than all NUS  timetable builders that we know as it uses Constraint Satisfaction to search for a timetable that you want.  All you need to do is to select the modules you want and click go and your timetable is optimized for you.  It retrieves information from the cors module pages and parses the html to extract out the information so that's where it may fail if cors decides to change their formats.  It includes options to keep lunch hours free, prefer late morning classes so that you do not have to wake up too early, and to maximise your free days amongst others.





I just want to comment that I've tried to contact IVLE to see if they would be interested in using the program but to my disappointment, I don't believe they ever replied.  Since I am leaving NUS soon, I think I will probably take this project down as well this July if there is no interest in integrating it to any official system.  Furthermore, I have not had the time to improve/upgrade this project and have not really modified it since two years ago and I personally don't believe that I should leave unattended trash in the internet around.  So if the above link is non-existent in half a years time, you know what happened to it.

Thanks to all those who have downloaded it and liked it.
Please post your comments below if you like someone to get this project integrated with an official school system.

Oh.. And Merry Christmas!
(Sorry about the two year old gift. I'm sure you'll like it though.)

Wednesday, December 24, 2008

AudiOdyssey: First accessible game using Wii Remote

Today I shall introduce the game that I worked on in my gambit internship last summer.

AudiOdyssey, the first game which uses a Wii Remote made for both the visually handicapped (including the colour-blind and the blind) and the sighted .  In the game, you play as a DJ, attempting to synchronize different rhythms to build up your song on the dance floor via a beat-matching mechanic.  That is, you have to swing the Wii Remote at the right time to get the song beats going.  This game was done as part of the Singapore-MIT Gambit Games Lab summer internship held over the 2 months of mid June to mid August, at Massachusetts Institute of Technology (MIT) in Boston, in a team of 8 consisting of 5 Singaporean students and 3 MIT students.
http://gambit.mit.edu/loadgame/audiodyssey.php

I think I will share more about Wii Remote since that's probably not something you would mess with everyday.  We connected the Wii Remote via bluetooth to the PC to be able to use it to play the game.  And then we started to try to figure out how to make it do what. For starters, the Wii Remote has a 3-axis accelerometer and an infrared detector.  The accelerometer can measure how much the device is moving in any direction in a 3D space while the infrared detector will pick up _any_ infrared emitting signal and try to decipher that.  As an interesting experiment, you can point the Wii Remote at the sun and you may still be able control your cursor in the Wii Home screen. You may also try that with 2 candles placed slightly apart.  For this same reason, Johnny Lee is now famous because he built a simple head tracking application and managed to wow the world with it (yes, it is an extremely simple application that any SOC student can do in a week).

With regards to the accelerometer, it records acceleration in values in scales of g. I have a flash debugging tool that can draw the graph of the motion input but Mac users get it for free with DarwinRemote so I'll just show that instead:

The graph is drawn in realtime while you move the Wii Remote.  That means that horizontal axis is time and the vertical axis is the value in the scale of g.  As you can see it the later half of the graph, the wiimote is held stationary but there is still a force acting on it. This is gravity and the g value is 1.  At the start of the graph you can distinctively see there are 3 coloured lines. Each colour represents one of the 3 axes. 

An interesting experiment I did was about how hard a person could  swing a Wii Remote.  It turned out that the maximum I ever reached was about 5g... That's as much acceleration as some of the fastest rollercoaster rides can get (I personally sat the Superman ride which was awesome btw).  If anyone can break 6g with swinging the Wii Remote, please post in the comments below

Now some quirks about the Wii Remote you probably did not know about.  If you swing the Wii Remote really hard and then bring it to a stop very quickly, you will notice that the accelerometers are spring based and they continue to oscillate giving rise to a common damping graph even after you hold the Wii Remote steady.  For this reason and the influence of gravity, programming the Wii Remote motion detection is extremely hard due to the large inaccuracies of the acceleration values.  For example, it is near impossible to detect an S-shaped motion. What makes it worse is that we found that different people use the Wii Remote differently from others.  One person's swing graph could be vastly different from another person's graph depending on the force they use, whether they tilt it slightly or whether they move their wrist instead of elbow.  All these factors basically add up and probably can explain why you may get frustrated with some Wii games due to the controls: It probably worked fine during testing because they got used to it.  As far as I know, the easiest way to detect a swing is of detection by a threshold value.  Several other methods we have tried include storing the history values, average values, etc.  If you have any good ideas on other possible accelerometer-based motion detection techniques, please post in the comments below!

If you're interested more about how to get a Wii Remote hooked up to a computer. Check out these websites:
http://www.wiili.org/index.php/Main_Page

Tuesday, December 23, 2008

More about Showtime

< ADV > Buy the game! Buy the game! Buy the game!

So I promised more information about Showtime and here it is. 

Firstly, I want to introduce the team of 7, consisting of:
Producer Joshua Wong
Artist & Level Designer Desmond Wong
Audio Engineer Guo Yuan
Programmer Lee Fang Liang
Programmer Hansel Koh
Programmer Adrian Lim
Programmer Bruce Chia

Secondly, a hypnotising video to make you buy the game:
< ADV > Buy the game! Buy the game! Buy the game!

< ADV > Buy the game! Buy the game! Buy the game!

Our group was very diverse and relatively new to commercial console game development.  I would say that we mostly did the game with little prior experience in the commercial world other than some hobby games done on our own personal time.

If you have ever played the game, you will find out that there are no limits to the number of objects (we call them props), such as the orange grabbing thing you see in the video above, that you can place when creating a map in the map editor which happens to be only accessible in the purchased version (that's a hint to buy the game!).  Furthermore, each prop will react to the player which is basically a ragdoll made up of several oriented bounding boxes (OBBs).  So if anyone is crazy enough to bother to count, you can actually find that a single level may consist of as much as a few hundred of these props, especially in the more complex maps in the later stages.  And each of these props has to be collided against the player as expected.  

Unfortunately, I'm unable to share everything that I worked on but I will say that I did some optimization for this game.  In order to hide the details, the abstracted problem here was that the game started to lag really badly in the physics department as one would expect since there are many objects colliding with each other, some moving and other not.  I think this problem is not specific to our game alone and I can think of many other games that could have faced this problem if they used some kind of physics in their game.  It definitely boils down to the question of how much your CPU can handle before it becomes slower than the frame rate of a game.  We used a physics engine called Farseer and it already provided us with a sweep and prune collider back then (I believe they have improved this since then). In other words, the physics was already semi-optimized but it was not entirely suitable for our case.  It was not an easy problem to solve for sure and we wasted at least a week on this, firstly to figure out what was causing the lag, and then later to come up with a solution.  

Part of our solution was to basically change the collider to a grid-based one (yay local search wins). This of course was only half the battle won since it helped to reduce the number of collisions with stationary objects but if a game had moving objects, the problem was not so simple since it meant that the moving did not stay within its grid cell for long unlike other stationary objects.  Furthermore, if a game had many moving enemies or objects that spawned every second or so and there could be alot of problems of how to make them collide with all the other stationary elements as well as moving ones.  Well since this _is_ a computing blog, I would actually like to hear what you would do/ how you would solve this problem if you were building this instead of giving the solution to how we dealt with in our case.  I do believe that there is possibly no perfect answer but if you do know of one, please prove me wrong!
In particular, would you manage each moving object in the spatial grid (swapping them from cell to cell as they moved, keeping in mind one box may have to be in two adjacent cells if it is crossing over the edge) or would you separately manage them? And give a brief description of how if possible. So please post your comments below!

However, it really placed us at our toes and made us come up with creative ways to solve the problem.  I would also have to admit that the things that I learnt in NUS did help, and at the same time, I would say that what we learn in theories are only foundations and application of the theories is always a different experience.

Lastly, I would like to give everyone a brief introduction to the lab I am working for as I did not do it justice in my previous post.
The Singapore-MIT GAMBIT Game Lab is a five-year research initiative that addresses important challenges faced by the global digital game research community and industry, with a core focus on identifying and solving research problems using a multi-disciplinary approach that can be applied by Singapore's digital game industry. The Singapore-MIT GAMBIT Game Lab focuses on building collaborations between Singapore institutions of higher learning and several MIT departments to accomplish both research and development.
Find out more about it here: http://gambit.mit.edu/campaign/index.php

< ADV > Buy the game! Buy the game! Buy the game!

Monday, December 22, 2008

First Singapore made Xbox Live Community Game Launched!

Before I get to the news, let me introduce myself. I'm Bruce Chia, 4th year undergraduate from Computer Science. My main interest lies in games and I aspire to be a full-fledged game developer. I have developed over 20 flash games, some of which are freelance projects with local web companies (I'll reveal more in future posts). Mostly I work on the code while someone else does the art and game design.




The latest game that I have worked on is currently breaking the news, and it is called CarneyVale Showtime. In the game, you play as Slinky, a circus acrobat trying to rise up the ranks by performing acrobatic tricks and death-defying stunts through increasingly complex arenas. The game has recently won the Dream-Build-Play 2008 challenge organized by Microsoft, beating over 350 entries from about 100 countries. You may read more here:

http://www.asiaone.com/Digital/News/Story/A1Story20081031-97426.html .



The game has just been launched today and can be bought over the XBox Live Community Games (XBLCG) channel at USD $5 (400 Microsoft points) about SGD $8. The game was made in 4 months with team of 7 including myself.

Go here for more information on the game:
http://gambit.mit.edu/loadgame/showtime.php

And here to see the game on sale:
http://marketplace.xbox.com/en-US/games/offers/00000000-0000-4000-8000-00005855014d?partner=RSS

Come back tomorrow for behind-the-scenes updates about the game!

If you have any comments, please feel free to add them below!

Monday, December 8, 2008

Treat your brand as an author does a story

Brand: Apple
Inspiration for a brand: Dude, it's Apple
Why Apple: Dude, it's Apple

Alright, yes, I am one of them too; someone who loves to consider himself as an everything Apple man. And I am a new kid in the block, albeit gaining a quick foothold in this Apple world. Now, I realize that Apple has changed my view of the world - the power of a meanie machine and an amazingly efficient sleek looking working style, my world is more colorful from the vanilla, boring, stupid looking drab Windows machine. Yep, I know, I need to stop the ranting for the welfare of the millions still stuck in the vanilla world - curse my arrogance.

Anyways, my point is not to do the comparison of the 2 world's but instead dwell a bit into the power the brand called Apple evokes in me. This is solely my view point and I think the millions of other Apple enthusiasts might endorse me.

So the brand story: everyone loves brands, more the glam and style, the better it gets, although the price tags get a bit too much for our small sized wallet most of the times. Apple however has always been not too expensive yet delivering an amazing experience. Some argue that it's the Jobs Phenomenon, and the company will be thrown to the dogs after him, yet I think its still amazing on how the company has cannibalized a lot of markets through the introduction of 1 single product and take the market by the neck to only dominate it and hit a big gold mine soon after.

Coming back to the brand story, I realize that I have gone to such an extent that I am trusting Apple more than I ever can imagine trusting a product / brand. I recently did a cool calendar, a book and a card from iPhoto that costed me little over 100 bucks. Even without reading through any of the mac forums on the coolness of the product, the finish, the shipping time, and whether there are any local players who can do the same job for me at a cheaper price, I went ahead and purchased the product to be shipped from California, This tells 2 things: 1. I am foolish, lazy as the word lazy can be defined and just wanted to get my job done; 2. I trust Apple as a brand.

Yes, I am lazy but I think it is more of factor 2 that overwhelmed me than 1. 
I vividly remember telling myself "yes Mahesh, go for it; it's Apple and it cannot be bad at all.". After I did make the purchases, some things started hitting me, like "What would happen if the shipping got delayed, or the time it would it take for the product to be delivered, or the look and feel of the packaging etc" . And on doing some quick research, I did not even find a single bad review about the whole process, nope not a single one. This tells you that my trust in the brand was worth all the money, and more so makes it more obvious that I will probably buy a lot more apple services without even bothering about the details. This is truly the power a brand can give you. You can argue that the amount is meager here, yes quite true but then it's more about the class of the product and the occasion than the cost itself. And there is nothing to worry about when it comes with anything Apple I guess. 

Last summer, I was in a branding workshop for my company Result with a brand guru named Thomas Gad, the man behind Nokia - Connecting People, and the author of books like 4D Branding and brand mind space. And his concept of branding is simple - "treat your brand as an author does a story" - cannot get more spot on! After all branding is an emotional process, it's more of buying the emotion than the brand / product.  And it seems that Apple knows how to stir up the right emotions in its cult like following.

Harvard lists 10 reasons for brand shortcoming and lack of fulfillment: 

  1. Failure to identify and articulate a compelling set of brand values 
  2. Failure to express the company's mission and vision meaningfully 
  3. Failure to help employees understand how their jobs have an effect on the brand 
  4. Failure to motivate employees to become active ambassadors for the brand at all times 
  5. Lack of know-how in the basics of branding at the operational level 
  6. A silo mentality within company divisions that wrecks cooperation on building the brand 
  7. Managers' resistance to changes that would benefit the brand 
  8. Lack of resources to make changes in how the brand is presented to customers 
  9. Lack of processes and tools that would make good branding automatic 
  10. Unwillingness to carry out the adjustments recommended by market research and customer feedback
Start up's typically spend very little time building the brand consciously, but I guess as we move up the ladder and grow up the company, building the brand becomes an impending issue that when spent time and energy on, the returns are extremely rewarding. This is what Apple did a decade back to see its never dying returns year on year till date, and probably for a long long time to come even after Stevie

P.S. Have you seen this video by Guy Kawasaki on innovation, and using mantra / brand to drive more innovation. I would take 55 minutes of my day to watch this again and again to get inspired :) 




"Please show your passport sir"

Who am I? 

Warning 1: Not a post about a geeky internet start up.
Warning 2: Not a film review about Jason Bourne. Common, everyone loves Mr. Bourne

I sometimes realize and question myself who exactly am I? Am I an Indian? A Singaporean? A Swede? Nah, and none of them seem to be right. I am practically a mix of a lot of different cultures and thoughts that I sometimes feel that I do not typify a community and hence, I have no identity as such. In short, do I associate myself as an Indian? Or as an individual with Indian roots but Western thinking?

Let me dwell a bit deep into the phenomenon of identity. When you gain an international perspective, you tend to mimic a lot of different things (both good and bad) from different cultures and ways of thinking, that you question your beliefs on which you were raised. You realize there are lot of places where Indian beliefs and culture is ahead compared to the Western society, and vice versa. However, I do not think there is anything wrong in being international, on the contrary, I think in this globalized society, its awesome to be international, be more tolerant and open as opposed to being stuck in 1 culture and 1 mind set. However, on looking back on how I have shaped and changed in the last 3 - 4 years, I realize that I am slowly losing my Indianess and going towards being more international. Mind you, India as a country is globalizing like crazy and the affluent Indians are more westernized than you can imagine. However, when you generalize the nation as such (with the aam admi ie. the commoners), the average Indian is still considered to be very religious, not very tolerant to other beliefs , strict dogma rules his life and is more often than not trapped in his / her own mind set. However, this is slowly changing and Indians are slowly but surely gaining an international perspective on how different cultures can bring in a lot of good.

And in a country like Singapore thats practically an amalgamation of different ethnicities, there is always this question of "what" is a Singaporean. As Singaporeans, do you think you suffer from an identity loss - especially when you come from a family with parents representing different ethnicities? Also do you think you can probably go and live your ethnic country although you have been born and raised here? 

On a personal note, quoting my boss / mentor Ola, he keeps telling me that I am a little bit too western to be an Indian; I know for sure I am not very Singaporean and neither am I very Swedish ( i am not nice as they are for starters, hello?) and so who am I? And if I go back to India say five years from now, god knows how much more Indianess I would have lost. So the question is will I gel into the culture? Will it be a welcome change to go back to India, settle down and make my own life there or have I moved so much away from the nation and its culture, that I would probably feel awkward, or worse, alien to my own nation that I will have to find my own identity outside India? Hmph, that is quite strange to think about but I think only time will tell.

What do you think? And oh being Jason Bourne in Part I of the triology is not as good as it sounds. :)

P.S. You might want to read more of this and this
P.P.S. I am sure how this relates to SOC, but I guess its an Universal issue :) 

Thursday, December 4, 2008

Change is the new cool

Are you a change maker

Yes?  Why? Do you think you have changed something, created value and made life easier for someone?  No, why not? What has stopped you from making things happen? Ah, the usual reasons, no time, not enough opportunities, no cash, and "oh - the - stars - are - not - well aligned" syndrome or "I - have-always-wanted-to-do-something-but-I-will-do-it-after-I- buy- my-dog" reason?

You must have watched the US President- Elect Barack Obama's campaign about the change America needs. And you should try to spend 20 minutes watching Prof. Hans Rosling talk about the change the world has undergone and will undergo. And then, ask yourself do you relate to all these issues to piece them together to form a big puzzle, or are you lost in the train of information? 

From the familiar market crash story in the "Wall Streets" all over the world to the terrorist attacks in Bombay and the strikes in Thailand, the conditions are adverse, too bad to be true, but as the saying goes in a hurricane even pigs can fly. This is when we need to take our wings out from the closet and do the things that we have always wanted to do - the timing cannot be better suited to be an activist of things that you have always believed in.  

Lets make it micro focused now: when you think of SOC, you probably think of those intensive project meetings, sitting endlessly in the lounge or in the discussion rooms and rotting till you are self-convinced that you will get that elusive A+ in that module, or probably slogging hard for labs and PE's only for you to come out from the exams and say "No lah, NUS = No Use Studying". But have you asked yourself what do you think is wrong? Or what do you think can be made better? Is it the system, the modules, the syllabus or the attitude of being too caught up with the A's and the B's? Whatever you think is the cause, have you been proactive in voicing it out or tried to come up with solutions that you think can make things easier?

One such example from my end would be to voice out on starting an entrepreneurship cell within SOC. The reaction is cliche - "Aren't there enough happening already - the S&S, NES yada yada". Sure, very true; but what if you have an option of pursuing a project from a module into an entrepreneurship venture in lieu of other related modules? The grades can be awarded by an external jury / venture capitalist / business coach related to your company. Of course the structure needs to be fine tuned, but don't you think this will incentivize you to find real world practical projects which you have had a keen eye on? May be yes, may be not. But it's an attempt to change things within a system. And if it does, voila, you have something that has changed your experience called SOC.

And if you get into the macro perspective: In the wake of terrible events happening in places like Bombay, Bangkok, Israel - Palestine etc, do you think you are doing something that is changing the lives of people. How about saving the environment? How about protecting HIV patients? And did you forget to close the water tap, or not waste the food you got from the food court today? All these are issues that the world has been trying to solve, but what's cool today is that they are being brought under 1 banner called "Change" - something universal that people can relate to. Change has always been the buzz word for management consultants and the likes, to keep changing and cannibalizing things that you think can be made better in a company. But when people talk about it over dinner and at family events (thanks to a man named Obama) one slowly starts to understand that change truly helps redefine a lot of things and not surprisingly the impact is quite amazing to be true.

We are riding along in a generation that is trying to change the way things normally work. Make sure you hop onto the train, and inculcate change in your everyday life style, from caring for that old man trying to cross the street to pursuing things that will change yours and probably other's world for the better. The world is watching, can you live it up? 


Sunday, November 23, 2008

How iPhone Changed My Life

It's been a while. Had quite a rough week. Anyway, here's me blogging again for the last few days for this week.

Ever since I saw the iPhone in one of the Keynote, I was totally sold. I knew I need to get one. I waited for the iPhone 3G to be here in Singapore and gotten myself a unit.
No word can describe how the iPhone has changed my life. It's elegantly built and comes with everything that I need.

I no longer start my laptop unless I need to do more heavy duty stuff like assignments or surfing, else I can survive with my iPhone just fine.

I would like to show you what I do with my iPhone, so let me share with you a glimpse of my life and see how the iPhone has changed my life.

*Warning! Picture intensive post ahead*

First Thing in the Morning

The alarm wakes me up


Go to Home screen of my iPhone



Check Email of the day


Check Notes for ToDo or any other reminder


Check today's event on Calendar


Read updated feeds from my Google Reader


Check Facebook updates (Hello Neng Giin and Adeline, if you happen to read this =) )


Check Twitter for Tweets from my friends


Peep through what people nearby me say



When I am bored

Read some classics

Feed some fishy and play with them


Play some Games



When I feel like a Shutter-bug


My most loved App - CameraBag



When I am going out

This week is not a good time to go out... Good for me as it's Reading Week.

Check my directions or whereabouts



When I need help

So that I won't miss any special events, Keynote timing


Call out for help when you forgot that Scientific Calculator for that final exams


When you need that extra vocabulary


Solve the frustrations of not being able to figure out the song that is at the tip of your tongue but you just can't recall or that song without lyrics that is on the radio or playing in the shop sound system.

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

This is how I use my iPhone. Tempted to get one yet?

Wednesday, November 19, 2008

Slide anyone?

We shall talk about slides today. I am sure each of us will have to do at least one deck of slides every semester. I myself have been doing more than 2 slides average per semester ever since I entered NUS. Back then, I was like most of us, trying to fit everything into a slide so that there is no need for me to memorize what I need to say. I will just need to read from my slides. It was cramming bullet points containing full sentences of what I want to say during my worse period and perhaps some partial sentence when I was more confident. This was mainly due to me being Chinese educated (That's why the bad grammar). We do not speak English on a daily basis, Mandarin and Cantonese was all we spoke. English was only used during English lesson as well as exams. Chinese educated students tend to have difficulties in forming sentences in proper grammar structure and articulating their thoughts in English. It's even worse during stressful timing when we need to present in front of someone else.

I had always been hiding behind papers containing my speech and my slides. This did not go away until my wonderful teacher introduced me to Toastmaster. I joined Toastmaster International before I enter NUS and obtained the Certified Toastmaster certification on completion of 10 speeches with different objectives. It helped me tremendously in gaining confidence to speak in front of unfamiliar crowd. After the completion of 10 speeches, I have gone through some training on various topics like, how to tell a story, eye-contacts and gesture, vocal varieties, getting comfortable with visual-aid, giving a persuasion speech and inspirational speech, etc. If you would like to be able to speak without the fear, Toastmaster is definitely a good way to start.

Sorry for side-tracking but public speaking and slides are always relevant to each other with emphasis on the way you present more than slides, so I felt that it is important for me to mention some ways that might help improve the public speaking skills as well.

Back to slides now. I still remember it was my first Keynote after being introduced to the world of Apple. I was amazed by the slides and presentation by Steve Jobs. Instantaneously, I decided that that's the style of presentation slides I want. I was lucky to be acquainted to the Keynote.app from iWork. It produces elegant and minimalist presentation slides with little effort. So long hideous and wordy slides. Hello classy slides. However, it wasn't without its own problem. I overused too many fanciful effects that come with the software. All this was just the beginning when I explored deeper into slides creation. Now, I realized that it is not the app that you use that matters. But it's the content and your presentation skills. So, whatever that I will be sharing with you, applies to Powerpoint.app as well.

Below are 5 important points to remember when creating a deck of slides. The 5 points listed below are by no means exhaustive as there are more to be noted. It is important to remember, the presentation matters more than your slides. Slides are just visual-aid after all. The spotlight is still on you and what you are presenting.

Here are the 5 points.

1. Tell a story

It is only with a story that you are able to get conviction from your audience. I am sure all of us prefer a story than listening to a dry stating of fact. With a story, you are able to bring your audience through the ups and downs of the subject that you are presenting. This can be useful for case studies, business plan, business idea generation, etc type of presentation. Of course, if the module requires you to present an answer to the tutorial question with a step-by-step solution, the story approach won't work. Anyway, try to make sure that you are telling a story whenever you can do so. But remember, every presentation have different requirements and approach, so these are not dead rules to follow. A good example in telling a powerful story can be seen in Obama's victory speech when he narrates the Change witnessed by the oldest voter of US to bring across his Change message. Do watch it if you haven't [click to watch]. It is too good to be missed.

2. Avoid bullet-point
This is definitely something important to eliminate. Really, there is no point cramming every single line of what you want to present into a slide and read from there. The audience might as well read it themselves rather than listening to you. Guy Kawasaki in his Art of the Start speech [watch here] said that, if you cram everything inside a slide, you do not know your material well. When you do not know your material well, you will start reading your slides. Your audience will then quickly figure out that you are a Bozo that does not know your material. They will then read ahead as they can read faster than you speak. So definitely avoid being THE Bozo. Have only a one liner in your slide if you can. Convey one message per slide to make sure that it sticks in your audience. Your slides should not be useful unless you are there to present the presentation. If your audience need additional information, provide them with supplementary notes AFTER your presentation. You won't want them to be busy reading your notes instead of listening to you right?

3. A Picture Speaks a Thousand Words
There are actually various methods of making a powerful presentation slides, but the picture way is what I feel effective personally. I am a very visual person, so pictures leave better impression on me as compared to word. I realized that in Steve Jobs's keynote, he always has powerful images and photos to help him illustrate his product feature. Image allows you to relate the point that you are conveying much easier. However, avoid cheesy clip-art that comes with your Microsoft Office. Those are too old school. You don't need a black stick man pondering with question mark in all your slides that you want the audience to think about the point that you brought up. Use high quality photos instead. You may find such photos from website that sells stock photos or provide stock photos for free. Flickr's photos shared under the Creative Commons License[http://www.flickr.com/creativecommons/] are one good source for high quality photos. Try to find one with enough space for you to fit in your words. Just to give you an idea, a sample are attached below. It's one of my latest work done for a poster of a de-stress event for my residence. The idea behind are adopted from how I create my slides.




4. Make numbers (data) meaningful
I learn this very recently during one of the presentation slides I did for the Start-up Singapore competition. A lot of times we are overwhelmed by slides with big tables containing hundreds of different numbers with the presenter flying their little red laser dot around trying to make us look totally dumb when we don't get them. Another overkill stuff is graphs of survey results. I see this a lot during one of the recent presentation. No one needs to know every single result you obtained from the survey. Giving the audience bars and bars of graphs don't really help them in making sense of what kind of trend that you want to show. Numbers that you obtained be it from the survey or your ROI for your business idea will only make sense if you make them meaningful. How to make them meaningful you may ask. Let me give the first step to you. It's a no-brainer and a giveaway really. Come closer...
.
.
.
It's just as simple as...
.
.
.
MAKE 'EM BIG!

Yes, use BIG HUGE font size for that specific number that you want to highlight. Don't hide them somewhere in the bottom right of the table with the rest of the unimportant figures. Make it so big that it covers half of the screen even. This will lock the figure in the audience. They will be able to remember that slide with that BIG FAT YUMMY number which maybe your profit in 5 years or the 1000 users that say "Yes, I am interested in buying your product".

Check the following slides and compare yourself. You will know that I am not kidding you when I say make the number big.



VS.


Which one is more powerful? You should know the answer by now. Don't feel compelled to take a screenshot of the table just to prove that you got the figure from the spreadsheet. Just be ready to answer how you derive that if the audience would like to know.

Other ways of making numbers meaningful are making graphs that highlights the important figures or just simple table for comparison. If it is possible to break down the number into smaller more understandable number, please go ahead and break them down. Another sample to illustrate this.



It might not come across strong to the audience if we just state how many millions or billions of members Facebook has. It's hard to make sense of large figures. But by putting them into a context that they can understand or make sense better, it makes it easier to make an impact on the audience when showing important trends especially.

5. Keep things simple
Dump that theme from the powerpoint template, it's getting stale when everyone else is using the same theme. Also, using the same theme as your lecturer's slide is really not cool. Stay with plain background. At most, a little gradient.

Use at most 2-3 transition if you have to. No one likes overloaded transition presentation. It's as annoying as fly flying on top of your head. It will be distracting if you have too many fanciful transition (Note to self : Lesson well-learned.). Same goes to build within a slide. Use subtle transition like "dissolve" instead if you really have to build the content in your slide.

Other thing to trim away from your slide is cheesy sound effect like the "swoosh" or the "clap" when you end your presentation. Your audience will clap for you if you have done a good job in presenting, there is no need for you to clap for yourself.

So to summarize, the simpler your deck of slides is, the easier it is for you to convey your message. After all, presentation is to present the message or the idea behind and not to copy and paste what you have written in your report. Also, I cannot stop stressing that it is the content and how you present it that matters. Slides are just visual-aid to help you better illustrate your message.

I hope that this post have been useful for you. I am still in the process of learning and perfecting my skills myself, so I dare not call myself the expert in this. I just hope to share with all of you what I have learned, so that we can all progress together. Try to Google for more resources if you are interested in learning more (I am well aware that all SOC students already know this, but just in case =) ).

Time to get some sleep after posting such a long post. Till then, see you in my next post.

Monday, November 17, 2008

Untypical SOCian in Da House

I will be taking the stage for the next 7 days to guest blog. Thanks to Juliana for giving me this opportunity to hopefully share some of the things that I am passionate about in life with you.

I am Yan Yan, year 4 E-commerce major. Why E-commerce? Simple, because I can avoid all the Maths, Stats, etc. I love E-commerce too much now. All the e-businesses fascinates me very much. I suck at programming. I do not hate them, I just simply did not get them when I was first in NUS. We were expected to be proficient in programming within two semesters and I am too dumb for programming I supposed. Clock is ticking... I will be graduating in July next year. If you are able to save me before I graduate, gimme a holla.

Let me first do some self-introduction. I am a perfectionist and I have OCD. I like popping bubble wraps (I can't resist if I see one, gotta pop 'em all) and I can't live without Dettol. Scratch that. That totally sound psychotic.

I am a big Apple fan. Mac is my preferred platform for it's simplicity. Of course, I know a lot of SOCians prefer Linux for it's flexibility. But well, with a MacBook or MacBook Pro, I can have the best of all worlds(i.e. Mac OS, Linux OS and Windoze OS). Anyway, not trying to start a OS war here as that will be never-ending. >.< I used to be the Mac Evangelist for MacNUS - the Mac user group in NUS. I am still in MacNUS currently serving as the VP.

Presentation slides design is my forte I guess. I think bullet points and wordy slides are total snoozers. I go for zen-like and minimalist design. I think the world will be a better place without wordy slides. Maybe we can talk about slide design over the next few days.

I am into photography as well. I like the cross-processing effects, but I am unable to shoot films cause it's too expensive. I totally love the lomo-styled photos that can be easily produced with the Camera Bag.app on my iPhone. I also shoot with my DSLR Canon 40D. I am a Prime person. I do not fancy zoom too much. Prime allows me to be more creative with the composition of my photos. Next lens on my list will be the Ultra Wide-angle Canon EF-S 10-22mm f/3.5-4.5 USM and another prime, either the SIGMA 30mm F1.4 EX DC HSM Lens for Canon Mount or the Canon EF 85mm f/1.8 USM. I still can't decide between the 30mm and 85mm. Dilemma when you want everything but you can't have everything.

Forgive me if you find any grammar mistakes. I know how much it irks. If you are able to permanently cure me from making grammar mistake, please, I need your saviour. =)

It's the reading week and I am sure everyone is slaving yourself to prepare for the coming finals. For now, I should get off the computer and start studying for my CS4251. I am really curious how many of you out there are reading this blog. So, shout out in the comments to let me know that someone is indeed reading this.

My Favorite XKCD Strips

This strip was about the limitations of complexity analysis. If something is unsolvable like TSP, it just means it is unsolvable on a Turing machine. There are other paradigms to try.

Here is another:


This is not technically impossible. It is about a cellular automata called Rule 34 which has been shown to be Turing Complete. i.e. it can simulate everything a gerneral purpose computer can do.

Sunday, November 16, 2008

Biology for Computer Scientists

Look at yourselves. You are mostly made of proteins. Your skin is made of collagen. Your arteries, lungs, bladder, ligaments etc are made from elastin. Your eye color is due to a protein . Your hair is keratin. Mechanical forces are generated using myosin, kinesin and dynein. Insulin signals cell metabolism. Enzymes are proteins that reduce the activation energy of a chemical reaction so that it is feasible in biological conditions.

Proteins are made of long strings of polymers. Polymers are the same stuff used to make CDs and plastic bags. Unlike CDs and plastic bags which are made from the same repeating group of atoms, proteins are made from 20 different types of groups of atoms known as amino acids. So there are 20 different amino acids repeating in predefined sequence of arbitrary length.

Proteins do so much by relying on their 3D structure and certain groups of atoms on them. The 3D structure is entirely dependent on the predefined sequence of amino acids of arbitrary length.

This predefined sequence of amino acids or better known as the chemical formula of a protein is defined (encoded) in a molecule called the DNA. Ordinary human cells have 46 huge molecules of DNA called chromosomes. Every human cell literally "reads" these molecules like a processor reading instructions and literally "prints" the proteins in a nano 3D printer called the ribosome.

DNA are a different type of polymers made from repeating sequences of 4 different types of groups of atoms known as the nucleotides.

So the obvious question for the computer scientist is how to encode for chains of 20 types of amino acids using chains of 4 types of nucleotides. We know how to encode for 10 decimal digits using 2 binary digits. The same principle applies her too. We will need 3 nucleotide pairs of a DNA sequence to encode for 1 amino acid of the protein. This is because the number of possible permutations of 3 nucleotides of a DNA using 4 types of nucleotides is 43=64 which is greater than 20 amino acids. Using every 2 nucleotides of a sequence to encode for 20 different amino acids won't work because the number of possible permutations of 2 nucleotides of a DNA using 4 types of nucleotides is 42=16 which is less than the required 20.

So the cell reads the DNA in groups of threes called codons. And each codon codes for one amino acid of a protein. Once the protein is made it folds itself into a 3D structure which lends it its functionality.

Biologists really badly need love and attention from Computer Scientists because Life is Information Technology. We still don't know the algorithm our universe uses to fold these proteins.However we know the algorithm the universe uses for Newtonian physics.

So Biologists want us Computer Scientists to do for them what we did for physicists, so that they can design enzymes to act as medicines, design biochemical pathways that facilitate the production of industrial chemicals and fuels.

We need you!

BTW, This is not entirely science fiction. There are companies like Amyris that do exactly this.

Will it halt?

This is perhaps the most important thing we should like to know about any process. OK I agree it doesn't seem like an important thing to know. What's the big deal? So lets just say, I have it with me: I have an algorithm to determine whether an algorithm will halt or not and it is always right. I call it h(a,i). It takes any algorithm a as it's first input and an input string i, algorithm a will work on, as its second input. It i.e. h(a,i) returns "will halt" or "will not halt" as its output.

Imagine what I could do with this h(a,i)! I can prove the Goldbach's conjecture and get the Field's Medal with it. More importantly, I can prove everything and win all the field's medals forever. ROFL!

OK here is how I will do it. But first, Goldbach's conjecture:
Every even integer greater than 2 can be written as the sum of two primes.
Nobody has proved it as such. Distributed supercomputers have verified this to be true until 1018. But hey! I have h(a,i)! So I write a program p(i) that loops over all possible even integers greater than i and halts whenever it finds an even number that cannot be written as sum of two primes. Now the best part is I don't even have to run p till the end of time. All I have to do is run h(p, 2). If it returns "will not halt", then Goldbach's conjecture is true or else it is false! What more evidence do we need than to know all even numbers greater than two can be written as sum of two primes? LOL!

Similarly, I could use h(a,i) to prove everything and anything!

P.S: Sorry to get your hopes up. This article was about the well known Halting Problem. And Alan Turing proved a perfect h(a,i) that computes correct answers for all possible values of a and i are impossible. He used a variant of Cantor's Diagonalization Argument to prove it. However a lot of partial versions h(a,i) that compute on a subset of a and i are possible. That is why automatic theorem provers exist. So tough luck guys! There are no easy paths to win Field's Medal :(

P.P.S: The Matrix Trilogy explores the philosophical implications of the halting problem. In it Oracle is like h(a,i), in that it is designed to predict the behavioral outcome of any process (e.g. a human mind, a set of events). It is right most of the time. However Neo is a special process, in that it tries to create a final outcome that would prove Oracle's prior prediction to be wrong. This is evident in the final conflict in Matrix Revolutions where Agent Smith gets the eyes of The Oracle and predicts Neo would give up in the end, but Neo simply chooses to contradict by not giving up. 

In fact this story is so close to the Halting Problem that Alan Turing's proof is all about proving the existence of algorithm "Neo" for all h(a,i). The existence of algorithm "Neo" also hints on the possibility of generating freewill within an algorithm. All one would need is a genetic algorithm that all become a better approximation of h(a,i) in each generation and an algorithm "Neo" to contradict it.

Fascinating! Isn't it?

Saturday, November 15, 2008

Ways to get caught: Buffer Overflows

Buffer Overflows are a class of techniques used by bad guys to do everything they want. I attempt to give a simplified description of how it works.

In native languages like C and C++, buffers a.k.a arrays can be filled with more data than they are made to hold. (This is not strictly true. Modern OSes and compilers have ways to check this even for native code).

If the array is declared as a local array with a fixed size, just like any other local variable, a space equal to the size of the array is pushed into the stack. This is nothing new. All local variables are allocated on the stack segment. The compiler generated machine code automatically pushes all local variables onto the stack segment.

Did I say segment? Yes. For the uninitiated, let me explain: Every executable in most OSes are organized into segments during runtime. There is the data segment, code segment, stack segment and heap segment. Stack and heap segments may share the same memory space and they grow into each other. Keep in mind that stack and heap segments are not the data structures we studied in CS1102, we are talking about sections of memory allocated for an executable during runtime by the OS.

OK so back to local variables being pushed onto the machine stack. There is one other thing that get pushed onto the stack besides local variables: Return Addresses! The stack stores resturn addresses for the processor to return to after a function call. The funny thing is that even main() has a return address.

So here is what the bad guys do; Since most input to any program, be it a web server or a nuclear detonation device, is stored in arrays (remember char** argv?) the bad guys will give the program specially designed input values which overflow a local buffer and overwrite the return address of the current function to point to the address of the beginning of the array. (There are some technnicalities involved like NOP sleds because we do not know the exact address of the beginning of the array. I do not cover these). So the processor returns to the begnning of the array to execute whatever is written there. And guess what? The array contains the machine code bad guys want to execute on your system.

Lets say the bad guys targeted a web server that was running with administrator privileges. Then they would be able to execute code only an administrator would be allowed to execute. Thus buffer overflows could potentially give unlimited power for the attacker over the system.

Believe me, there are ways to upload entire VNC Server DLLs into certain Windows machines because of a buffer overflow in one of the network services a Windows machine opens for the whole world to connect to. And the attacker would be able to hijack your mouse and screen just like in the movies.

Fortunately, with the introduction of the NX bit most buffer overflows are impossible because the NX bit can be enabled to make a stack segment non-executable.

Ways to get caught: SQL Injections

If you have taken CS2102, or wrote an application that uses a relational database to authenticate users, you might have come across code like this:

SELECT * FROM USERS WHERE USERNAME='[username]' AND PASSWORD='[password]'

..where [username] is usually a variable that holds the username the user inputed into you application and [password] is usually the variable that holds the password the user inputed into your application. There may be string concatenation operators that make this possible in your favorite web application development language.

Assuming that the user uses the inputs directly in the SQL query without manipulation there are ways to break into such a system. And SQL Injection is the way. Here is how you do it.

Let us substitute the following input into the above query:
  • [username] is ' OR 'x'='x
  • [password] is ' OR 'x'='x

SELECT * FROM USERS WHERE USERNAME='' OR 'x'='x' AND PASSWORD='' OR 'x'='x'

As you can see this query will return some user from the database and the remaining application logic will authenticate you as that user.

This is a well known technique therefore it is very unusual to find web applications that have this vulnerability. However my polytechnic hired me after I showed them this vulnerability in one of their intranet web applications. So keep your eyes open, and report all such holes to NUS and be rewarded for your effort.

Monday, November 3, 2008

IQ Tests Suck

Here is a question I found on the Mensa website under "Mensa Workout":
Sally likes 225 but not 224; she likes 900 but not 800; she likes 144 but not 145. Does she like 1600 or 1700?
The pattern the question designers want me to find is that Sally likes perfect squares, and so she likes 1600. But there seems to be other valid solutions:
  1. Sally likes numbers in which the sum of the digits plus the number of digits equals 12. Therefore, she likes 225, 900, 144, and, of course, 1700.
  2. (This one is for the fans of Occam's Razor) Sally likes numbers whose sum of the digits is odd. Therefore she likes 1600, not 1700.
  3. Sally likes 1700 because she likes the roots of x4 - 2969 x3 + 2521800x2 - 648810000 x + 49572000000, which is 144, 225, 900 & 1700.
  4. Sally likes 1600 because she likes the roots of x4 - 2869 x3 + 2394900x2 - 612360000 x + 46656000000
  5. Sally does "not" like 1600 or 1700, because neither number has digits which sum to 9. She "does", however, like 1800.
All these solutions are logical but only 3 out of these 6 rational solutions gives me a score.

This makes me wonder: Is Intelligence a social phenomena? Please note the fact the these questions are designed by people who are recognized by the society as intelligent, i.e people who have achieved something "great" in their lives. That implies that the society defines somebody as "intelligent" just because he thinks like the other "great" people.

What if Beethoven was born before the piano? Spielberg before the invention of the camera? Steve Jobs before the computers? So there are people alive today whose technology has not yet been invented yet, the perfect means to their genius has never materialized. And if society starts to brand, recognize and promote only the people who are like the achievers of yesterday, I think we will soon enter a second Dark Age.