Sunday, April 27, 2008

Interview with Don Knuth

Knuth is a professor of The Art of Computer Programming (TAOCP) in Stanford, and his writings on algorithms and programmings in general, has made him as one of the semi-gods in computer science.

Recently I came across an interview of him here.

A few thoughts after reading the interview script:
  1. I admire Knuth's passion on CS: He loves what he is doing. Even at his age (70), he is still writing and studying computer science. Compare this with some university grads who throw books away once they graduate and got their diplomas.
  2. Knuth is keeping relatively abreast with technology. For example, he talks about the recent development in multicore CPUs, and he does his work on a PC running Ubuntu, and for backup purpose he uses backupfs, which is still in beta stage. I am amazed he dares to leave his comfort zones to try new stuff. I need to confess I am no longer that willing to leave my own comfort zones, and Knuth does give me a positive example to ponder upon and learn from.
  3. Humility: Knowing when to say "I don't know" needs a non-trivial amount of life experience, wisdom, and confidence. For example when talking about programming parallel machines, he readily admitted there are people who know better than he does.
    "[snip]... the half-life of parallel techniques is very short, because hardware changes rapidly and each new machine needs a somewhat different approach. So I decided long ago to stick to what I know best. Other people understand parallel machines much better than I do; programmers should listen to them, not me, for guidance on how to deal with simultaneity."

Saturday, April 19, 2008

Big vs. Small

I have worked for two large MNCs and one private, small company. Here let's define what big and small mean. I mean the size in headcount, and also the capital it has.

The difference between large and small companies is significant. After these years, I can summarize as follow.

Two things to note. First, everything is relative to each other. For example when I say big companies offer a stable income, this is almost true, but exceptions are common where big companies collapse and smaller companies survive for a long time.

Second, there is no clear-cut pros and cons, because a certain advantage can be a crippling disadvantage when viewed in different perspective.

Big Companies Characteristics
  1. Stable income
  2. Defined job scope
  3. Defined company hierarchy and org chart
  4. Politics could be ugly
  5. Well-isolated from unrelated disciplines (e.g. engineering won't be involved in logistics)
  6. More perks
  7. Systematic trainings and career development available
Small Companies Characteristics
  1. Most small companies can't survive for long if in red
  2. Job scope is very broad, boils down to 'get the job done', 'sell the product', and 'get the money'.
  3. Hierarchy is flatter due to the nature of its size. There are definitely small companies with org chart that can rival those of big companies', but i doubt if they can survive though
  4. Again, due to its size, politics will be lesser, except if you are really a dick and step on everybody's toes
  5. This is related to #2
  6. Perks are variable, but generally small companies are cash strapped, ergo perks are usually lesser
  7. Drink-while-you-swim-type of learning. If you are lucky, you will get mentors, or else, you are alone and need a lot of luck.
Question: As an employee (assuming I wish to continue to be one), which type of company I should join?

At this instance of point, I will choose a small company. Mainly because it reflects the real-world much more closely, and it keeps me honest, hungry, and paranoid. The insecurity it bestows, if used appropriately, is a powerful tool to propel one forward to keep learning.

I doubt how far I can push myself down the road to keep myself up-todate with the industry.

For now, let's go ahead with the race, where we keep running, but going nowhere.

Welcome to the era of merciless rat-race.

Tuesday, April 15, 2008

Baby Blues



When I first read this strip, I laughed. All romance eventually reduces to trivial, mundane, never-ending laundry list of day-to-day stuff.

Suddenly I thought about I mentioned about family and long-term relationship.

Heartache...

Love, family. I thought lust would be taken care of when the first two are in place. Big mistake.

Monday, April 14, 2008

On Erlang

There is a very good introductory video on Erlang by Bob Ippolito here.

Erlang is a functional language first implemented by Ericsson for telecommunication equipment 20 years ago. Given the nature of this type of equipment, Erlang is designed to be small (memory was expensive then), very reliable (able to hot-swap the running code), and concurrent (hundred thousand of instances at the same time).

I watched the whole video and enjoyed every bit of it.

Here are some more links related to Erlang:

http://www.trapexit.org/

http://www.erlang.org/

I am trying to learn one more language to fill my time, or fill my hollowness. How much more to fill? Maybe another eight years....?

Not my choice...

...

Friday, April 11, 2008

Nice Quote

Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp.

The above is not as simple as it seems: it implies when programmers try to program more and more complex constructs, their programs will look more and more like Lisp.

In some sense I agree.

Monday, April 07, 2008

Hollowness

Not sure how to describe this feeling. I stayed very late today in office, and when I arrived home, I don't feel I want to move at all. Laziness and nothingness permeate my whole body and blank my mind.

Even in office I try to make myself busy and not to think too much about other stuff.

I thought about April Fool's day. I don't celebrate it, and doubt if anybody will care to play pranks on me that day. No, so it is real.

My brain isn't functioning well.

shutdown -h now

*beep*

Wednesday, April 02, 2008

Schrodinger's Cat Problem

This is a classical quantum mechanics thought experiment. Saying an event could assume two outcomes given that the observer has not taken the peep into the state of the event. In Schrodinger's cat problem, a cat can be both dead or alive, until we open the box to check.

I won't elaborate on the details.

However, sometimes it is much more rewarding to know the outcome, especially we are receiving ambiguous signals on the possibilities of either outcome.

When the outcome is known, it is a mixed emotion, but glad life can move on and appreciate whomever willing to 'open the box', really thankful for that.

This post serves as little note to myself. Sorry for lack of background information

This is just a drunk cat, but you get the drift. ;)