February 28, 2007
Before discarding this as a stupid rant, read on for the reasons.
- Not all teachers are good.
A good teacher is one that awakes the desire to find out more in his students. Too many teachers are threatening their students with quizzes instead of trying to make the material they teach more interesting.
- Not all students are good.
If you’re better than your peers, then you are constantly bored as the teacher explains stuff you know to those less enlightened. If you’re worse, you feel bad when everyone seems to know stuff you don’t.
- We waste our time there.
The “diversification” schools offer should really be optional. I find that less than 10% of the history / geography / etc. I am forced to learn will actually prove useful to me in the future. Why learn the information by heart if it’s available a few clicks away?
- We lose our desire to learn.
Mankind will exist as long as there is a longing to improve our life. School teaches students that learning is hard, and that it’s all about exams and term papers. The obsession to constantly seek for knowledge was given to us for a reason, but school teaches us to reject it and say “no, thanks”.
- School stifles our creativity.
Einstein said, Imagination is more important than knowledge. Because knowledge itself will solve no real life problems. It is the art of using knowledge in our own advantage that life rewards. But instead of cultivating students’ creative skills, our education system tries to turn us into robots that do their jobs, not more, not less.
- The grading system just plain sucks.
Different people have different ways to learn. Some learn by doing, others learn by seeing others do, yet others learn by reading dull textbooks. Attempting to adjust everyone to a single learning system (record, replay, repeat) is a poor choice, and so is the grading system, because it persuades us to study “just for a good grade”.
- School turns us into prisoners of the left brain.
So we must do all within our power to escape from this monotony and avoid being turned into pieces of soulless meat.
If you have more reasons, and would like to share them, you are more than welcome to do so in comments! I am open to discussion :)
February 27, 2007
I have been “lucky” enough to write code like this a few days ago:
if(memcmp(side[i], side[j], sizeof(side * lines)) == 0) return true;
Now it’s obvious to me why it didn’t work as expected. But can you find the bug? If you got it, what techniques do you use to avoid problems of this kind in your code?
//Note: the bug image is from Slashdot.
February 25, 2007
The album by this great symphonic metal band is supposed to be launched this March. However, copies have started flying all around the Internet yesterday. This “leak” is exactly what happened to Evanescence‘s The Open Door, which was due to be released on October 3rd 2006, but has been available on peer-to-peer networks as early as September 4th.
February 24, 2007
A small annoyance of using Firefox in Kubuntu is that it always tries to load Evolution each time you click on a
mailto: link. Here’s a quick fix for that:
- Enter about:config in a new tab in Firefox.
- Right click > New > String.
- Enter the preference name:
- Enter the preference value:
Note: You may have KMail installed at a different location. Type
which kmail in a terminal window to find out exactly where it is.
February 24, 2007
Today I finished debugging a problem called “ro” that was proposed at an earlier round of .Campion. The screenshot shows the only change in the source code that, applied, would have brought me 100 points instead of 20.
- If anything can go wrong, it will.
- If anything just cannot go wrong, it will anyway.
Now, more seriously:
- Always, and I mean always make a backtracking, fail-safe solution and test the results for some small test case.
- If you’re getting lost in that ugly 500+ line program, better start from scratch than trying to patch it.
For the reference, here’s the quick’n’dirty bash script I used to test my solution after correcting it:
for i in `seq 1 20`; do echo “test $i” && cp $i-ro.in ro.in && time ./minchange.e && head -n 1 ro.out > ro.out1 && head -n 1 $i-ro.ok > $i-ro.ok1 && diff ro.out1 $i-ro.ok1 && rm ro.out1 $i-ro.ok1 || break; done
minchange.e is the program executable name, located in the current directory.