Wednesday, October 15, 2008

Electronic Arts Singapore

For some reason that's beyond me, the awareness among the student body, of what Electronic Arts does in Singapore seems to be just localization. Semester after semester when the school begins a new ATAP intake hardly anyone applies for an EA internship (ATAP = CS3880 Advanced Technology Attachment Programme). And after what I've been through for 6 months, I'm nonplused! I thought everyone would be jumping at the chance to work for EA.

So, with these three posts I'd like to get everyone properly acquainted with EA’s Singapore presence. I'll be talking about some of the things that EA does, followed by my next post, where I'll mention some of the things I did as a Software Engineering Associate, and lastly I’ll end off by talking about how fun it is to work for a gaming company like EA.

EA Singapore is a hub for many of its Asian initiatives from publishing to localization, including development, adapting many major titles for Asian gaming markets and EA recently established a new Asian Development Studio this year, right here in Singapore.

Yes, that's right, EA makes games here in Singapore. It joins 25 other worldwide studios, and I was among the first batch of interns they accepted. Considering that only 3 interns were accepted, I certainly felt very lucky. After all, this is EA we're talking about, one of the world's biggest (if not the biggest) interactive entertainment companies in the world. AND THEY HAVE A DEVELOPMENT STUDIO IN SINGAPORE!!

The EA Asia Studios is a full-fledged development studio staffed with a multi-national team of game development talent. Coupled with EA's global resources the Singapore studio works on some of EA's biggest titles, among which includes FIFA Online 2.

FIFA Online 2 is EA's biggest online game franchise, currently deployed in South Korea with more than 6 million subscribers. More than 6 million!! Now tell me another internship opportunity that will let you put the name of a PUBLISHED game with more than 6 million subscribers in your résumé. I think that fact alone should be reason enough to apply for EA, because it’s hard to get a job in the gaming industry when companies out there are seeking for a couple of years of development experience and a published game under your belt.

Of course FIFA Online 2 won't just be a name in South Korea. The open beta for Singapore will be launched later this year along with Malaysia, Vietnam & Thailand, with other Asian countries in the pipeline. By then we won't just be looking at 6 million gamers. All of that excitement is taking place right here in the Singapore studios.

And as an Intern, you will get to experience all of that excitement. Interns are fully-involved in studio tasks. You will become an integral part of the development process to take corporate objectives further. You will receive complete ownership in your areas of responsibility with support from many wonderful colleagues. You will be exposed to an extremely rich learning environment with unfettered access to proprietary EA technology. Man, talking about all this makes me miss my time there.

If you do end up being lucky enough to be accepted at EA, the onus will be on you to turn your time there into a wonderful experience. There's no spoon feeding, no textbook, no lecturer or tutor to show you the ropes. EA will put everything on the table and you can do whatever you see fit, but EA will be watching what you do with what has been provided. So in a sense, it isn’t just an opportunity to learn from the best and improve your skills as an engineer, it’s probably your first job interview. Albeit one that lasts for 6 months. If you’ve proven yourself, your journey in the gaming industry would have just made its first few steps and believe me, it’s hard to get a foot in that door.

Lastly, all work and no play makes EA employees dull people. We wouldn’t be able to make good games if we don’t know the meaning of fun. So at EA, we’re a close-knit group that makes an effort to enjoy ourselves and relax. And that means lots of FIFA, lots of Rockband, Happy Hours, staff benefits, special team events, and so on. When you join EA, you’re not just getting yourself into a 9-to-6 desk job, you’re joining a new family, and like a family, we take care of one another. I continue to be a part of this family even now that I’ve left the company, and I’m more than happy to be telling everyone about the EA experience.

I hope by now I've caught your attention. If nothing else, here are the key takeaways from my post. If you're lucky enough to be an intern at EA, we'll be talking about

  • Exposure to international aspects of business issues in the gaming industry
  • An internal glimpse at how one of the best in the industry makes games
  • Working with wonderful colleagues who have an endless amount of experience and knowledge to impart to you.
  • Rich learning opportunities. There's no limit to what you can learn from the company.
  • Close-knit, fun-loving working environment, where everyone’s treated like a family member.
In my next post I'll be talking about the technical aspects of my work at EA just to provide another perspective on the internship experience.

- Shijun

Monday, October 13, 2008

Greetings...

Hi everyone, I'm Shijun, this week's guest blogger. I must say this blog is a very interesting initiative, and having read the other entries from fellow guest bloggers, I only hope my posts will be as useful.

In any case, I'm currently a 4th year in the Computer Science stream and I absolutely can't get enough about Computer Graphics and Game Development. I've done some simple shaders, and did a few things in game development, but most fortunately, I spent the first half of the year as a software engineering intern with Electronic-Arts, a company which I'm sure needs no introduction. I'll be making posts about my experience with Electronic-Arts and about Graphics and Game Development in general. Of course, I don't claim to be any kind of expert, but I do hope what I have to say will be of some value to some of you.

Oh, and do let me apologise ahead of time for any lack of finesse in my posts. As you can probably tell, I'm not a very skilled blogger.

- Shijun

Friday, October 10, 2008

On Technopreneurship

“It’s reasonable to think that because you achieve something, even very little, there is the great temptation to quit taking risks.”

I quote this line from Donald R. Keough, the former President of the Coca-cola company, in his book “The Ten Commandments for Business Failures”. It is one of my favorite books which not only taught me important lessons on entrepreneurship but also lessons in life. I found the book close to heart as it points out that for most of the time, people tend to focus on the things they can do for success more than the things they should not do to avoid failures, which may be equally important in making a difference in our lives. And the top commandment from the thought leader was to “quit taking risks”.

While risk-taking takes many forms, such as relocating to a foreign country for career, entering a different industry, etc, mine took the form of pursuing entrepreneurship after graduation. I co-founded Dream Axis Pte Ltd with a partner from the industry with a core purpose to develop virtual space as a mainstream media channel. Prior to starting my own company, I was actively gaining industrial experience in the digital marketing industry (my identified area of interests) while I was an undergraduate. I was working with international digital advertising agencies and IT solutions companies, creating and delivering business media for corporations such as Microsoft, Palm and Singapore Airlines. During this time, I had also took a year off to attend the NUS Overseas College in Shanghai, and working full-time as a Marketing Supervisor at Fractalist China Inc., a mobile media and marketing company where I was engaged in the launches of various mobile marketing campaigns for multinational clients, such as Volkswagen and Nokia. These pursuits beyond the textbooks eventually build up to important experiences and networks for my new venture.

I hope to exchange more stories and thoughts with like-minded friends on entrepreneurship, or technopreneurship, in the coming posts. I would also like to relay my special thanks to Alexia and Juliana on your invitation to be part of this blog.

- Winne

Tuesday, October 7, 2008

NOI '01 Task 1

Wheee! That reminds me of the old time. NOI '01 was the practice paper I did before going for my first NOI in '02. Anyway, Juliana wants a new quiz. So I'll take my favourite question in all NOI. Not because it's hard, it's extremely easy. But the thing you learn from this question, gosh! A lot. Especially when you're an experienced university students (a Sec 3 student like I was wouldn't learn as much, though it does teach me quite a bit of thing).

So the question is very simple, given an array of n integers, calculate the frequency of the mode of all those integers (mode is the number that occurs the most number of time in the array). You can choose to write in C, C++, C#, or Java. To make thing easier, here is the function prototype:

In C:
int find_mode_frequency(int* ints, int n);

In C++:
int FindModeFrequency(const vector<int>& ints);

In Java:
int findModeFrequency(int[] ints);

In C#: similar to Java.

Now here's the catch... you have to provide 4 different algorithms:
  • with Theta(n^2);

  • with O(n^2), Omega(n);

  • with Theta(n lg n);

  • with Theta(n).

(Those who have heard this question from me before, refrain from spoiling!!)

- Chris

P.S. The actual question can be found here (look for Task 1).

Edit: Thanks to Edwin for providing argument that the challenge is not very precise (sloppy in fact), read comments 1 to 7 below for additional information. The challenge has been changed slightly to use tighter bound. Again, apologize for being sloppy with the bounds. The spirit of the challenge remains, to find different algorithms that does the same thing with different performance characteristics.

Saturday, October 4, 2008

Guess what's printed out?

I'm not supposed to be posting anything, but I just thought of this simple puzzler (I'm sure I'm not the first one who thought of it, but it's interesting anyway).

#include <iostream>

int main() {
short a;
int b;

a = b = 65535;
std::cout << a << std::endl;
}

I thought of this problem when watching Lecture 2 webcast of Stanford's CS107. I was bored so I coded it right away and guessed the answer (correctly, fortunately; my 2's complement is not as bad as I thought it was). Watch the lecture here.

EDIT: It's too easy? I hear you. (: So here is a second, harder version of it:

#include <iostream>

int main() {
int a = 65535;
short b = *((short*)&a);
short c = *((short*)&a + 1);

std::cout << b << " " << c << std::endl;
}

Hint: If you thought you've solved it and are very confident with your answer, here's a hint; yes, this hint is only for people who has already solved it and confident with your answer. The hint is "it depends".

While these quizzes look like it's created purely to torture people (yes, that thought crossed my mind, and hear hear, I did have a good share of laugh when some suffering friends came crawling begging to be released from this torment...). No, just kidding (the laugh part), we mostly ended up having great discussions on what's happening, and you get to learn a lot from those discussions.

- Chris