Monday, January 26, 2009

It's All About Possibilities

Last Monday, we were honoured to have Pratibha Kumar, Apurval Awale and Ian Tan from Microsoft talk about XNA, WPF/Surface and the Imagine Cup.

We are partnering with Microsoft this Semester and introducing Microsoft WPF as one of the new evolving platforms. The talks are packed full with cool stuff and I'm certain that the students' blogs will provide a good overview of what was said.

The following are some of the key ideas about the future that I had hoped that the students would have gathered from these talks.

The "Digital Hub" Strategy. The Internet is a harsh place. Successful companies can get put out of business if they fail to respond decisively.

One of the key strategies for companies like Microsoft and Apple is I would describe as the creatin of the "Digital Hub". In short, PCs are becoming commodity equipment, not very different from a TV or washing machine.

In order to continue to growth, these companies are invading the living rooms and moving into digital entertainment, aka Digital Lifestyle. Apple with the iMac and Microsoft with the Xbox are trying to take become the centerpiece of the living room, by acting as a "hub", e.g. iPod and iPhone interfacing with the iMac, your Xbox functioning not only as a game station, but also as a home theatre system. Then there's Microsoft Zune. What we will see is the convergence of many different electronic devices.

The Network is the Future (and UI is your friend). Broadband to the homes is now commonplace, but as bandwidths continue to grow and access becomes truly ubiqitous, there will continue to be opportunities for even more innovation.

Truthfully, even though as a Networking researcher, my keen interest is in what the new networks have to offer, it's really a whole package deal. While the increased bandwidth and underlying networking technologies is the key enabler, the deal comes also with improved UI and animation technologies. People actualy don't care about cool technologies. They care about technologies they can use.

Microsoft WPF and Surface are representatives of next-gen UI. They might not be the best and the battle of the next-gen UIs have not yet been fought, but it's definitely coming. I predict that avatars and animation might have a large part to play in the next-gen UIs. Animation technologies have advanced rapidly over the last decade. It's not just about graphics. Animation-related AI is also very advanced now, think Spore.

The Future of the Game Industry. Much of the advancement in the state of art animation has been fueled by the game industry. This industry is expected to continue to grow over the next decade (recession or no recession). In fact, inspite of the recession over the next 2 years, people are still expected to play games (they need a way to escape from their financial troubles even more than ever).

So, the good news is: there's money (and jobs) there. Unfortunately, the bad news is: there's money there. As we live in the free market, people will go where the money is and with the money in the industry, more and more players will join the industry. Already, we have seen a proliferation of games over the past decade.

Today, the games industry is much like the movie industry about 2 decades ago. It is costly to build a good game and building a game is a little like making a movie. If it is a hit, you can make a lot of money; but if it doesn't sell, there will be huge losses. Unlike in the past where it's possible to make a game in the garage, the games industry will be a very tough moving forward.

Proliferation of User-Generated Content and User-Created Applications. This is not at all a new concept and it has been around for a long time in the form of user mods for games. What is new is that there are now new frameworks to help publish user generated applications.

This is seen in the XNA publication system where small timers can develop and publish their own games on the XNA network. XNA will take care of the payment and distribution of the software for the game developers. Actually, I was have been discussion this with Zi Han. I believe that it will not be long before game publishers get put out of business. Who wants to trot down to a shop to build a CDROM when it is possible to download and play a trial game directly from the network and pay only if one likes the game?

The same concept is found in Facebook apps. Facebook itself is like the delivery channel for the new apps. Unfortunately, the nature of web apps is such that it is more difficult for Facebook to start charging people to use apps (or is it?).

There are two important ideas that I think students should bear in mind about such platforms for delivering user-created apps. (1) The world is very big and there are seriously a lot of very talented and bored people around. Having these people work on stuff is like playing lottery. If any one wins, the platform building wins; and (2) part of the strategy here involves capturing eyeballs. To capture eyeballs, there's a need to constantly generate new content - and it is too expensive for one company to try to do that in-house. In any case, why do the work when there's someone else willing to do it for free?

These are important ideas that should be gleaned from studying the Facebook app platform and XNA.

There's a lot of money out there. Notwithstanding the impending recession, there's still a lot of funding available in Singapore through Spring and MDA. Most of them come in the form of $50K seed funding, which is not a lot, but when can pay the bills for a couple of months. I would encourage students who are thinking of starting their own companies to check them out. With regards to the IP for the work done in CS3216, I checked with the NUS Industrial Liason Office last year and the IP should righfully belong to the students. The following is the reply:
If the resources for the development of the Facebook Application can be downloaded from Open source, then the ownership of such development will reside with the individual student.
If there are any concerns for the projects this year, we can discuss. CS3216 is suppoosed to enable students to dream, not put up brick walls. If necessary, I'm quite willing to help students deal with bureaucratic and legal brick walls should they arise.

The Money is in the Sales, NOT the technology. That said, I would like to drum into your heads that if you want to start a business, forget the technology. Yes, technology is cool to have, but it's NOT what makes a business/startup succeed. You need to be able to sell the stuff, i.e. find suckers who are willing to cough up money.

To some extent, it's not hard to make money - but it's not entirely easy either. Just because people like your product, they might not want to pay for it. For example, Facebook is really quite a successful and good product. Most of my friends use it. But, can anyone imagine what would happen if Facebook suddenly decided to charge people for it?

On the other hand, buggy products have been known to be able to corner the market (and make a lot of money). Which product(s) are left as an exercise for the reader. :-)

The Internet Boom has not Come and Gone. It is still here. Some people said that the time of the Internet was over after the bust of 2000, but they are wrong. Just check out all the new companies that made it to Fortune 500 over the past decade. Many are IT-related companies.

I suspect that we will see the same trends for another decade or so. The Internet has reduced barriers to entry for new businesses significantly. As the Internet penetration grows, so the size of the market. Facebook and Twitter will not be the last of the new "successful" ideas.

I firmly believe that notwithstanding our small size, Singapore is well-positioned to capitalize on the Internet. I would however encourage students not to think about selling stuff locally. The Internet is much too big for that. While it is okay to start small and use Singapore as a proof-of-concept testbed, think global.

With each new year, comes new possibilities. May I wish all students a very Happy and Successful New Year!

Tuesday, January 20, 2009

The Model Blog Post

I came up with this idea to make students blog about the lectures at a whim.

When I first came up with the idea, I wasn't quite sure what it would achieve, but it seemed like a good idea, so we just try loh. Such is life.

We don't always have to have a good idea of what we're doing. Sometimes we need to be a little reckless and to be willing to make things up as we go along. As they say, "No guts, no glory".

To recap, these CS3216 class blogs were meant to address two key issues from last Semester:

  1. IVLE Discussion Forum Reflections didn't seem to work well. We didn't seem to be able to achieve the sorts of participation that I had hoped for or generate as much discussion as I had anticipated. It got worse towards the end of the Semester;
  2. Some students started skipping lectures from the middle of the Semester and notwithstanding my efforts at arranging for interesting lecturers to come talk to the students, I had some nagging doubts about whether people were really learning anything. Learning is hard. It takes effort and it is really quite easy to go sit into a lecture and switch off. These blogs serve two purposes: (i) make sure that people come to class, or else they would have to be a real genius to be able to blog about a lesson in abstentia; and (ii) make sure people actually pay attention and learn something.

Sometimes we have to be honest when we don't know for sure what we're doing. This is one (well, another one :-P) of those instances where I thought I was doing the right thing, but I wasn't completely sure.

Then I saw this post:, and I'm sure. :-P

All students please refer to Wenhan's post as the model post for CS3216 class blog. It's not the content so much, but the PROCESS, that matters.

What you're supposed to be doing during lectures is to jot down notes, points and questions. About what? Whatever that comes to mind and that you think is interesting.

Thereafter, take stock of what you have and say something that demonstrates that you have thought deeply about some of the questions and/or issues.

What you say doesn't have to be right. It's okay to say the wrong things and have your friends drop by and tell you so.

It is not what you say that really matters. What matters is that you have taken time to think.

Do you really want to come to school and learn to get smarter? Well, then starting thinking. I don't know of any other way. Once again, it's not so much the substance of what is said, but the PROCESS.

Wenhan has actually highlighted a significant number of questions or problems that he didn't address in his main blog post. The other students who haven't written their posts and who are thinking about what to write can consider thinking about some of those points and addressing them as well.

This brings us to a second point. Another way of getting smarter besides thinking about stuff ourselves is exchanging ideas with others. Again, it is a process.

I'm quite happy today. I think I did something right. It all started as a random idea - but I decided to bite the bullet and acted on it, notwithstanding my understanding of student psychology, i.e. that some students are really going to hate me for inflicting this blog thing on them.

Ah well, I am grateful that I'm not a politician. Being a teacher is not a popularity contest.

I have a job to do. I try to earn my pay. :-)

Beware the Browser

It just occurred to me that none of the students picked up on what Caleb shared about the browser-compatibility issues, so I thought it would be important to highlight this.

First, the most important element in a good app is a good concept. Users must have a reason to come back. As it turns out, the more popular apps are typically games.

For games, they don't have to be overly complicated. It is important to understand the mentality of the Facebook users.

Facebook games are distractions and time-wasters. Many people are wasting their time at work playing them which is why Caleb reported a drop in activity over weekends.

Cuteness is important. However, as Caleb shared, FarmWars actually suffered a drop in the number of users after they "upgraded" from their initial version to a more snazzy version.

Much of their problems came from the browser compatibility issues with IE.

A corollary of this lesson is that students should test their apps with a variety of browsers and platforms and not stick only to one platform.

Monday, January 19, 2009

You Blog, I Blog

I came up with an evil scheme to inflict pain on my students this Semester. I made them each write a blog for CS3216.

Can anyone imagine hardcore coders write blogs (in English, not in Java, C# or Scheme)? :-)

Yes, so it is indeed evil for me to have inflicted this on my poor students. However, in the immortal words of Titanic (aka "You jump I jump"), as a teacher, I have decided that I will walk the talk.

Like them, I will write one post after every major lesson/lecture and on top of that, I will read every word that each of my students write in their class blogs. I think it's fair. They now have no excuse not to write. ;-P

In this first post, I think I will try to articulate as best as I can what we are trying to achieve in CS3216.

Like every other course, we have a full page of learning objectives, yada yada, for CS3216... but frankly, they don't matter. In my view, all the "official" objectives for the course can be distilled into two key high-level "meta-goals":

  • To "force" students to think.

  • To teach students "how to learn".

To force one to think sounds really nasty, but truthfully, it is actually possible to go through school without having to think much at all.

One of the reasons why I decided to experiment with this blog is to see if I can make the students think a little harder about what they hear and what they see.

The lectures for CS3216 may seem a bit random. They are not.

The purpose of this blog is also to summarize some of the key points made in the lectures.

Another reason for making the students blog is to encourage them to share ideas and interact. We actually tried something like that last year with what we call Reflections in the IVLE Discussion. I didn't think it worked quite so well and so I decided to try something different.

Frankly, I really don't know how to teach students "how to learn". However, what we try to do is design the two assignments and the final project in such a way as to allow the students to figure this out.

Instead of explicitly holding classes to teach Facebook Programming, we just spend a whole lot of effort crafting a monster assignment with 25 pages. Our experience last Semester has shown that, amazingly, this works! :-P

We're trying to pull this off twice this Semester -- once with Facebook and once with Microsoft WPF. It's really not trivial to come up with a good assignment and I'm really fortunate this Semester to have the Microsoft folks helping out and also a most brilliant teaching staff.

So to conclude, I hope that students will learn "how to learn" by just doing stuff. But it's not just random stuff. It's actually assignments that have been designed with much care, coupled with sufficient flexibility to allow the students to express their creativity.

Flexibility is important because it allows the students to do what they LIKE to do. Learning must be fun. :-)

The greatest challenge in teaching today is not so much in the teaching of the students (or communication of knowledge); the greatest challenge is convincing students that they WANT TO LEARN. How hard is that?

The saying goes, "you can lead a horse to water, you cannot make it drink."