Confessions of a researchaholic

December 30, 2011

James Landay on “China Will Overtake the US in Computing…Maybe, Someday…”

Filed under: Real — liyiwei @ 7:47 pm
Tags: , , , ,

This is a mandatory reading for all my (current and future) students with an initial Asian training:

James Landay on China Will Overtake the US in Computing…Maybe, Someday…

First of all, let me share one of the biggest secrets of China (and to some degree other Asian countries like Japan and Korea as well as ethnic Chinese states like Taiwan and Singapore). Do you ever wonder why China developed this authoritarian culture in the first place? It is very simple: a conforming population is much easier to rule than one that can think freely. The Chinese emperors were very calculating on this; they did not even allow alternative sources of authorities to challenge them (like the bishops who can thorn up to European emperors’ arses). On the other hand, they also want the population to be reasonably fluent so that the country can be productive. Thus the duality of the Chinese/Asian education system: on one hand it enforces conformity, and on the other encourages intellect and hard working.
Unfortunately, even though this system worked for the past agriculture and manufacture dominant economic systems, a knowledge-based economy will require citizens who can think. So China will have to change its culture and education systems, or face competitive disadvantages.

Part of the fun for my past MSR and current HKU posts is being close enough to help while far enough to not get dragged down into the sinkhole. I am curious how much I can do as an individual, or there is really some grander scale environmental stuff that I simply cannot reproduce. Results so far are very encouraging; Asian students who worked with me for sufficiently long periods of time (at least one SIGGRAPH cycle) have shown significant progress of thinking skills and at least one of them managed to create SIGGRAPH ideas.

For the sake of more fun, I now extend my grand challenge to MSR Asia to all my (past, current, and future) students: the first one to publish a single-authored SIGGRAPH paper will receive my full financial support, out of my own pocket instead of any grant, to make the trip. (Really, it is not that hard; I am not very smart, and I did that twice already. I make this challenge because only with a single-authored SIGGRAPH paper can you prove your full independence, including creativity.)

December 28, 2011

Writing a previous work section

Filed under: Real — liyiwei @ 2:23 am
Tags: ,

Every research paper has to cite and describe relevant previous works, often in a dedicated previous work section, or sometimes as part of the introduction.
Trying to write a previous work section can be an excellent mirror exercise for reading papers. The quality of the former can be a good indication of how much you really understand from the latter.

First of all, spend enough time reading how other people write previous work sections. Pay particular attention to those you find educational, from which you can actually learn something, as well as those you find unhelpful, from which you feel only confusion and frustration.

A good previous work section contains multiple layers of information with different resolutions of details.

  • At the bottom level (highest resolution), you describe in one or a few sentences about the gist and merits of each paper.

  • At the middle level (medium resolution), you organize related papers into paragraphs, each contains information about the gist and merits of the group.

  • At the top level (lowest resolution), you relate every citation with your paper, in particular, how yours stands on the shoulders of previous giants: commonalities, inheritances, and mostly importantly, innovations.

After you have a draft, show it to your adviser or other experienced researchers, ask for advice, and iteratively improve it. It will be an excellent exercise for both reading and writing papers.

November 30, 2011

Breaking point

Filed under: Real — liyiwei @ 11:37 pm
Tags: ,

Have you ever tried so hard to accomplish something that you feel that you are going to break anytime soon?

If not, you are unlikely to be truly successful for anything. The world is a very competitive place, and there are always people who are more talented and harder-working than you. So ask yourself why you deserve to win if you have not given everything you have.

Plus, the *breaking point* is one of the most wonderful life experiences. I and my collaborators have to go through that every year. I am not sure about them, but I truly, absolutely, enjoy the process.

Give it a try. Find something that is really hard and you really want to accomplish, and go for it. You will not regret.

November 24, 2011

How to learn a new language

Filed under: Real — liyiwei @ 1:01 pm
Tags:

Disclaimer: This is based on my personal experience. You might find it eccentric, or even bizarre. It worked for me, but I am not sure if it suitable for everyone. So follow my advice at your own risk.

I have not found formal school education any useful for learning a foreign language. I learned English by reading novels and watching movies (mostly Hollywood) while having fun. I believe truly enjoying an activity is the most effective way to excel at it. The formal school education, at least in my personal experience, provides the exact opposite. It is usually dry, boring, exam based, and removed from practical usage.

The most important usages of any language are listening, speaking, reading, and writing. Whether or not you actually understand the underlying grammar or other theoretical aspects is only secondary. Most native speakers do not think about grammars or theories when using their own languages.

If possible, immerse yourself in an environment that will force you to use a particular language. I essentially picked up English speaking and listening while in grad school because otherwise I cannot survive. I heard a theory that the most effective method to learn a foreign language is to date a native speaker who is so deficient in other languages that you have to speak that particular language with him/her. I have no chance to actually try this but I believe it will work.

Falling short of dating a native speaker or trying to survive in a foreign country, you can still practice reading novels written in the target language (pick up something fun and well written, e.g. Harry Potter for English), watching foreign movies without any caption (again, pick up something you would like), and writing blogs (e.g. your opinions about a recent book you read or a movie you watched). With enough practice, you should be able to pick up any new language without going through any formal schooling or textbooks.

November 20, 2011

Rejection

Filed under: Real — liyiwei @ 7:36 pm
Tags: , , ,

Let me begin by outlining a few basic laws of nature.

Scarcity
Resources are scarce, with scarcity proportional to relative supply and demand.

Ego
People tend to consider themselves better than they really are (and thus deserve better than what they currently have).

Randomness
The universe is stochastic, and unfortunately people like to imagine life is more deterministic than it really is. (Heck, even Einstein refused to believe God will throw dice.)

As a consequence, when people cannot get what they want, they complain about injustice, and question the fairness of the process that allocates the scarce resources.

Unfortunately, none of these will not help or change anything. People will just think you are a whiner. And do not even attempt to ask why you did not get what you want; you are forcing people to either tell you a white lie (e.g. you are really good; it is just that we cannot figure out a good task for you to do right now) or be impolite (e.g. dude, you really have no idea how lousy your performance was?) or to confess they really have no clue (e.g. huh, we cannot really decide between you and another candidate, so we picked the taller one).

Specifically, under a lot of situations, the decision depends on a lot of factors. For example, there is this famous thing called *affirmative action* in the US that discourages discrimination in job and school opportunities. The intention is all good, until people start to enforce hard quotas, like reserving a certain percentage of openings to a certain group of (alleged) minority. Then, if the real application pool does not contain that percentage of qualified minorities, the process will deem to hire a minority with inferior ability than certain more qualified majority. You can say it is not fair, but that is how things work.
Sometimes it can just be random; with hundreds or even thousands of applications for a certain opening, it is just information overload to for anyone to decide who is really good.

My personal suggestion is to stop worrying all of these, and use the rejection or denial as a source of motivation. Prove to the world that they are wrong, and you are the best.
Getting dumped by your ex? Shine yourself to make him/her regret next time you meet.
Getting rejected by a job application? Outperform whoever got hired instead of you.
Did not get permission to your dream school or professor? Publish better research papers than his/her group.

These being said, I really want to tell whoever applied to be my student: thank you all very much, but since I have received hundreds of applications and I can take probably only 2 (or maybe one more if I can muscle with the department), mathematically it is impossible for me to take everyone I like. Evaluating the quality of a student is more art than science, so I rely mostly on my intuition. If you really want to force an answer out of me, the only thing I can say is that my intuition told me that there are better and more suitable candidates than you. But can I prove it? Heck no, and I doubt if anyone can.

Ray tracing

Filed under: Real — liyiwei @ 6:43 pm
Tags: ,

Many mentors have their own favorite entry level project for both training and sieving purposes. And mine is ray tracing.

Read + code

Read the following books and implement your own ray tracer from scratch.
Yes, I mean writing every single line of the code yourself, except for standard libraries like iostream and cmath. And yes, I recommend c++ as the programming language.

Ray tracing in one weekend, by Peter Shirley.
Path tracing with soft phenomena. Very short and cute introduction to ray tracing in particular and computer graphics in general. Full of hidden gems and wisdom, but beginners might not appreciate all the nuances.

An introduction to ray tracing, by Eric Haines, Pat Hanrahan, Rob Cook, Jim Arvo, David Kirk, Paul Heckbert, and (edited by) Andrew Glassner.
Whitted-style ray tracing with hard phenomena. More comprehensive than the book above.

You should read the books (especially the first one) on a computer and code along. Do not just read; it is less fun and less effective.
Software engineer your code from the very beginning; ray tracing is nicely object oriented with natural object-like components such as rays, shapes, materials, colors, motions, and cameras.

Demo

Produce your own ray traced images. Start with something simple, like mirrors and glasses for basic reflections and refractions. Ultimately, I want to see 2 things:

  • Produce ray traced animations from the BART benchmark. (If you can reach this stage, I consider your training complete. If you cannot even get to this point for whatever reason, you have no chance to survive in our future projects.)
  • Design your own favorite scene, and ray trace it. Show me your creativity and artistic + scientific blend. You can find examples from prior Stanford cs348b rendering competitions.
    (This part can be good for a group project, even though I expect everyone to complete everything else individually.)

Why

I did ray tracing as part of Stanford CS348b image synthesis, and I would say this is perhaps the class that I have learned the most from.
First, ray tracing is a superb training for coding and software engineering; it is inherently modular and suitable for object oriented programming, and the amount of coding is non-trivial (actually, quite hefty for new-comers, especially if you code from scratch).
Second, ray tracing is a superb introduction to image formation, and you will learn the fundamentals of physics, computer graphics, computer vision, and image processing.
Third, and perhaps most importantly, it is heck of fun. It is beyond words for me to describe the satisfaction I (and many people I heard from) derived from producing my first ray traced image. I am not an artist, but I can paint with algorithms.

P.S.

There is another excellent book for ray tracing: Physically based rendering, by Matt Pharr and Greg Humphreys, but I personal opinion is that you should read it as your second, not first, ray tracing book.

October 12, 2011

Why I do not stay up late for work

Filed under: Real — liyiwei @ 9:07 am
Tags: , , ,

Once, while in grad school, I tried to wrap up a long SIGGRAPH crunching day by cleaning up my code.

So, I did the following in the Makefile:

clean:
rm -r -f *.c

Instead of

clean:
rm -r -f *.o

After that wonderful experience, I decided not to stay up late for work anymore. 🙂

September 21, 2011

Why software is eating the world

Filed under: Real — liyiwei @ 5:20 pm
Tags: , ,

I highly recommend this article from Marc Andreessen, especially for computer science folks.

To be fair, I think he is a bit too optimistic (as an entrepreneur he should be), but he still made plenty good points.

This is not exactly a new article, but I just realized that a lot of people haven’t read it yet, thus the sharing.

September 17, 2011

Producing research results

Filed under: Real — liyiwei @ 4:06 pm
Tags: ,

Sylvain Lefebvre has a nice post about how to structure code for producing research results; see here. (Full disclosure: Sylvain is my collaborator, but he is a superb researcher and coder, as evident from his resume.)

« Previous PageNext Page »

Theme: Rubric. Get a free blog at WordPress.com