Monday, March 31, 2008

detecting snake oil



working for a bank grants me a privilege to work with a lot of partners in security-related projects. it seems that in most people mind, bank is equal to security, so they tend to set a very high focus on security (which is good) whenever they have something to present to me. all of the partners i've been working with for the last few years try very hard to prove that their solutions, their products, their networks...are secure.


some of them are pretty awesome, working with them sometimes give me a lot of hints to do the right thing (TM) in security. unfortunately, those are rare. in other words, most are clueless about security.

here are some hints that maybe helpful if you want to detect those snake-oil companies:


1. security-clueless often talks restlessly about stuff like firewall, ids, and anti-ddos (some even tell me proudly that their firewalls can strike back to the sources of the ddos attack;)). with all due respect to networking gurus, i have to say it seems that a lot of security-clueless people had been networking gurus in their previous lives. the most clueless are those who underestimate security as merely a networking issue. they tend to think that they solve all security problems by using tons of fancy networking devices. please remember that there're 7 layers in the OSI model, and the weakest one is even not listed: the human.

2. "you can be secure using our products | our solutions are secure" are something you often hear from a security-clueless. excuse me, secure from what, secure against whom? just go ahead, ask this question and see how they react. please keep in mind that nothing can be secure against unexpected disasters, i.e. earth quake, flood, electricity blackout, etc...and nothing can be secure against a trusted employee who somehow turns malicious (or maybe mistakenly performs some irreversible actions).

3. security-clueless never pays attention to stuff like scalability and high-availability. they think that scalability means performance and high-availability can be solved by using two or more servers in active-standby mode. let me remind you the purpose of security is not only to protect you against attacks but also to help you serve your users safely whenever they want. i tend to think the later includes the former, btw.

4. security-clueless rarely talks about cryptography. verisign ssl certificate seems to become the silver bullet answer for all of the cryptography-related questions. most of them don't like to discuss cryptography at all which is easy to understand since cryptography is tough and not easy to get right. please don't trust anybody who tell you how secure they are since they use md5 (without salt) to encrypt your password.

please don't ask how i come to these conclusions. it's my experience. if you're in doubt (you should be), just don't listen to me.

Sunday, March 30, 2008

Cac cau hoi thuong gap ve ban quyen - Copyright FAQ

Thời gian gần đây ở VN liên tục xảy ra các sự kiện có liên quan đến vấn đề bản quyền. Chẳng hạn như việc hiệp hội Công nghiệp ghi âm quốc tế (IFPI) cảnh báo Hiệp hội Công nghiệp ghi âm VN (RIAV) về tình trạng vi phạm bản quyền nghiêm trọng của một số website tìm kiếm ở VN. Hay như mới đây, gia đình cố nhạc sĩ Trịnh Công Sơn yêu cầu những tổ chức sử dụng nhạc của Trịnh Công Sơn phải trả tiền tác quyền.

Theo dõi diễn biến của các sự kiện này, cũng như phản ứng của các bên liên quan và người ngoài, tôi nhận thấy một bộ phận lớn người dân VN còn rất mù mờ về luật bản quyền và các vấn đề liên quan.

Âu cũng dễ hiểu, bởi mặc dù được nhắc đến nhiều trên các phương tiện truyền thông, nhưng cho đến nay, theo sự hiểu biết của tôi, có rất ít các tài liệu tiếng Việt giới thiệu đầy đủ và rõ ràng về luật bản quyền. Và nếu có, các tài liệu như thế cũng thường được viết rất dài, với rất nhiều từ chuyên môn khó hiểu.

Tôi nghĩ đây là một trong những lý do khiến cho sự hiểu biết của người dân VN về pháp luật VN (và các nước trên thế giới) nhìn chung là không cao (tôi không có số liệu thống kê cụ thể, nhận xét này chủ yếu dựa vào việc quan sát những người xung quanh tôi, nó có thể không chính xác).

Tôi rất thích chương trình "Chuyện không của riêng ai" của HTV ở cách nó tiếp cận các vấn đề khô khan và hóc búa của luật pháp một cách rất bình dân và dễ hiểu. Nhưng cho đến nay, mặc dầu tôi xem chương trình này khá thường xuyên, nhưng vẫn chưa thấy một buổi nào chương trình đề cập đến luật bản quyền.

Tôi không phải là một luật sư, nhưng may mắn trong quá trình làm việc và học tập, tôi có cơ hội tìm hiểu rất nhiều về luật bản quyền của phần mềm máy tính và các vấn đề liên quan (khoe: tôi từng hai lần đoạt giải cao nhất trong các cuộc thi cấp quốc gia có liên quan đến luật bản quyền :-p). Nên nhìn chung, tôi có một sự hiểu biết nhất định về luật bản quyền. Và tôi muốn chia sẻ nó với các bạn.

Với tất cả những lý do ở trên, cùng với một nguyên nhân rất hiển nhiên là hiểu biết luật pháp sẽ mang lại nhiều lợi ích, tôi quyết định sẽ viết một loạt bài mang tên "Các câu hỏi thường gặp về bản quyền" theo hình thức hỏi đáp tình huống tương tự như "Chuyện không của riêng ai".

Đây cũng là cách để tôi tự dò lại kiến thức của tôi, xem tôi thật sự hiểu vấn đề này đến mức độ nào. Như đã nói ở trên, tôi không phải là một luật sư, do đó có thể những gì tôi viết là không chính xác 100%, rất mong các bạn chỉ dẫn nếu phát hiện sai sót.

Các bạn có bất kỳ thắc mắc nào về luật bản quyền, bao gồm luật bản quyền của các tác phẩm văn học, âm nhạc hay phần mềm...xin gửi vào đây hoặc email cho tôi ở địa chỉ thaidn AT gmail DOT com. Tôi sẽ cố gắng trả lời một cách đơn giản và dễ hiểu nhất.

Trong quá trình chuẩn bị cho loạt bài này, tôi thường tham khảo 3 tài liệu sau:

* Chuyên đề sở hữu trí tuệ, Bộ Ngoại Giao Hoa Kỳ.

* Luật Sở hữu trí tuệ VN, Bộ Luật dân sự VN.

* Bản quyền, Wikipedia.

Khi trả lời, tôi cũng sẽ thường xuyên trích dẫn bộ "Luật Sở hữu trí tuệ VN", nên nếu có thời gian, các bạn hãy thử đọc qua những tài liệu này, trước khi đặt câu hỏi. Ngoài ra xin lưu ý là luật bản quyền mỗi nước mỗi khác, do đó chủ yếu tôi chỉ bàn đến luật bản quyền ở VN, do Bộ Luật dân sự VN quy định.

chick quick facts


1. pretty chick is not brainy.

2. pretty-and-brainy chick doesn't know how to use the Internet.

3. pretty-brainy-and-know-how-to-be-online chick is lesbian.

4. pretty-brainy-know-how-to-be-online-and-not-lesbian chick got logicaholic symptom.

5. pretty-brainy-know-how-to-be-online-neither-lesbian-nor-logicaholic chick turns out very secure, not easy to hack.

6. pretty-brainy-know-how-to-be-online-either-lesbian-or-logicaholic-and-easy-to-hack chick is rootkited already.

Saturday, March 29, 2008

baamboo


It seems that Baamboo, a very popular music search engine in VN, uses SQL full text search. This found makes me pretty surprised since all of the people I know use Lucene as soon as they want to create a search engine.

Lucene is very good at what it does. It’s indexing and storage performance is second to none. In fact, it’s so fast that a lot of companies use it as a quick-and-dirty storage dumping ground for raw data, knowing that it will be much faster and more scalable than a relational database. Why not take advantage of this incredible power and take one more item off of your database’s back? This is all not to mention the fact that a Lucene index query is probably a lot faster than an SQL query grabbing data from a Microsoft SQL Server full-text index.

If I were the designer of Baamboo, I'd use, yeah you got it already, Lucene and its sub-projects to do searching. A quick draft architecture should be a combination of Nutch and Solr, i.e. using Nutch to crawl the Internet, then posting found data to Solr which of course is powered by Lucene to index, and finally leveraging Solr to search within your applications using one of sp many interfaces Solr provides.

Easy money, isn't it? Not actually since Nutch and Solr require a steep learning curve. Customizing and operating them the way you want require a handful of experienced Java programmers and sysadmins. But I'm sure it's worth the effort. I'm myself on my way to implement a vertical search engine powered by these excellent open source softwares. They're really fast and scalable. I can't be pleased more.

BTW, it seems that Baamboo needs a better sysadmin since their error page gives out too much information.

Thursday, March 27, 2008

please help testing my application

If you don't want to know what I'm doing, just go to http://ec2-72-44-40-221.z-2.compute-1.amazonaws.com/, and do some random searches. That's enough to help me ;). Otherwise, read more.

I've been doing some explorations of thrudb which is a new document-oriented database service. I want to see how good thrudb perform with large dataset so I feed it with DMOZ catalog which contains information about 4,600,000 websites in all other world.

I also write a small django application which accepts a keyword and query thrudb to get the relevant links to it. You can check it out at
http://ec2-72-44-40-221.z-2.compute-1.amazonaws.com/.

As you use the application, you may notice that the time thrudoc takes for each query is much larger than thrudex. This is because, for the sake of simplicity, I use the disk backend for thrudoc and, as both Ross and Jake said, disk backend is not suitable for a large dataset. I'm going to load the same dataset to other backends such as mysql or bdb to see how they perform. I'll post the result to this blog when done, stay tuned.

In the mean time, please help testing thrudb performance by doing some random searches at the link above. Please note that in order to gather performance data, I log all the queries (not your IP address though).

Thanks.

Wednesday, March 26, 2008

Scary attacks

I'd never want to be targeted by people who are well funded, highly skilled and motivated like this:
Groups supporting freedom of Tibet have been attacked with highly targeted and technically advanced attacks.

Quoting an Asia Free Press news report: "AFP received an email Tuesday from someone claiming to be in Denmark, who had attached a file they said were pictures of Tibetans shot by the Chinese army. When AFP tried to open the attachment, a virus warning appeared."


So...what do these attacks look like in practice? Lets take an example. Here's an email that was mailed to a pro-Tibet mailing list three days ago. It looked like it was coming from the Unrepresented Nations and Peoples Organization (UNPO). However, the email headers were forged and the mail was coming from somewhere else altogether.

However, this is not a normal PDF document. It contains a modified version of a PDF-Encode vulnerability to exploit Adobe Acrobat when the document is opened.

The exploit silently drops and runs a file called C:\Program Files\Update\winkey.exe. This is a keylogger that collects and sends everything typed on the affected machine to a server running at xsz.8800.org. And 8800.org is a Chinese DNS-bouncer system that, while not rogue by itself, has been used over and over again in various targeted attacks.

The exploit inside the PDF file was crafted to evade detection by most antivirus products at the time it was sent.

Sunday, March 23, 2008

more xkcd comics

truth: nothing is more relaxing than reading xkcd comics on rainny sunday night. oh maybe sex does.

code talkers


reponsible behavior


network




alice and bob

I've already read this xkcd comic many times but still can't keep not rofl when reading it again, esp. the last scene:

By the way, there is also the Alice and Bob rap by “computer science gansta rapper” MC Plus+.

Alice and Bob

Alice is sending her message to Bob
Protecting that transmission is crypto’s job
Without the help of our good friend Trent
It’s hard to get that secret message sent

Work tries to deposit a check of your salary
But with no crypto it’ll be changed by Mallory
You think no one will see what it is you believe
But you should never forget there’s always an Eve

(Chorus)

‘Cause I’m encrypting sh*t like every single day
Sending data across the network in a safe way
Protecting messages to make my pay
If you hack me, you’re guilty under DMCA

DES is wrong if you listen to NIST
Double DES ain’t no better, man, that got dissed
Twofish for AES that was Schneier’s wish
Like a shot from the key, Rijndael made the swish

But Blowfish is still the fastest in the land
And Bruce used its fame to make a few grand
Use ECB and I’ll crack your cipher text
Try CFB mode to keep everyone perplexed

(Chorus)

Random numbers ain’t easy to produce
Do it wrong and your key I’ll deduce
RSA only public cipher in the game
Creating it helped give Rivest his fame

If we could factor large composites in poly time
We’d have enough money to not have to rhyme
Digesting messages with a hashing function
Using SHA-1 or else won’t cause dysfunction

(Chorus)

Friday, March 21, 2008

donotreply.com

From Slashdot:
The Washington Post's Security Fix blog today features a funny but scary interview with a guy in Seattle who owns the domain name donotreply.com.

Apparently, everyone from major US banks to the Transportation Security Administration to contractors in Iraq use some variation on the address in the "From:" field of all e-mails sent out, with the result that bounced e-mails go to the owner of donotreply.com.

'With the exception of extreme cases like those mentioned above, Faliszek says he long ago stopped trying to alert companies about the e-mails he was receiving. It's just not worth it: Faliszek said he is constantly threatened with lawsuits from companies who for one reason or another have a difficult time grasping why he is in possession of their internal documents and e-mails.
I'm going to register noreply|no-reply|notreply|donotreply at some popular email providers in VN to see what may appear in my inbox ;).

Wednesday, March 19, 2008

Running Thrudb On Amazon EC2

In the last post I described a step-by-step guide to install Thrudb on your Ubuntu box. If you still can't manage to got it, keep reading, this post may make you happy ;).

1. AMI information

If you are on Amazon EC2, you may want to check out these Thrudb AMIs (the OS is Ubuntu 7.10):

+ i386: ami-c71efbae

+ x86_64: ami-dc1efbb5

Note: guys at aideRSS had released some Thrudb AMIs but they used the old Thrudb source though. My AMIs use the latest version of Thrudb.

2. Start your instance

Please consult Amazon EC2 documentation for how to start your instance. BTW, I highly recommend EC2 Firefox UI which is very easy to use.

3. Start Thrudb

Once you login into your EC2 instance, run these commands to start thrudoc and thrudex:

# cd /root/buildthrudb/thrudb/tutorial
# make start

Just ignore any output or warning. Use nestat to verify if thrudoc and thrudex has been started:

# netstat -npaut

You should see lt-thrudoc and lt-thrudex are listening on 0.0.0.0:11291 and 0.0.0.0:11299 respectively.

4. Run tutorials

Unfortunately, since thrudb has been gone under some major changes recently, only Python and Perl tutorials work out of the box. I'll try to fix other tutorials soon, stay tuned!

Let’s run the Python tutorial:

# cd py/
# python BookmarkExample.py

You should see something like:

*Indexed file in: 0.20 seconds*

Searching for: tags:(+css +examples)
Found 3 bookmarks
1 title: Dynamic Drive CSS Library- Practical CSS codes and examples
url: (http://www.dynamicdrive.com/style/)
tags: (css examples)
2 title: Dynamic Drive DHTML Scripts -DD Tab Menu (5 styles)
url: (http://www.dynamicdrive.com/dynamicindex1/ddtabmenu.htm)
tags: (cool css examples menu)
3 title: Uni-Form
url: (http://dnevnikeklektika.com/uni-form/)
tags: (examples CSS)
Took: 0.00 seconds

Searching for: title:(linux)
Found 4 bookmarks
1 title: Debian GNU/Linux System Administration Resources
url: (http://www.debian-administration.org/)
tags: (linux administration tips)
2 title: Linux Scalability
url: (http://www.cs.wisc.edu/condor/condorg/linux_scalability.html)
tags: (linux sysadmin ulimit)
3 title: Set Up Postfix For Relaying Emails Through Another Mailserver | HowtoForge - Linux Howtos and Tutorials
url: (http://www.howtoforge.com/postfix_relaying_through_another_mailserver)
tags: (email linux server)
4 title: ZFS on FUSE/Linux
url: (http://zfs-on-fuse.blogspot.com/)
tags: (zfs linux fuse)
Took: 0.00 seconds

*Index cleared in: 0.06 seconds*

5. Update Thrift/Thrudb

Thrift and Thrudb is in very active development so you may want to update their sources to run the latest versions. To update Thrift, you run these commands:

# cd /root/buildthrudb/thrift/
# svn update
# ./bootstrap.sh
# ./configure
# make
# make install

And you update Thrudb with these commands:

# cd /root/buildthrudb/thrift/thrudb/
# svn update
# make

6. Next steps

Congratulations! You now have thrudoc and thrucene running on your own EC2 instance. From here, you can poke around in the tutorial directory and have a look at the *.conf files. You may also want to join discussion list.

Remember to terminate your instance if you're done playing with Thrudb.

Thrudb on Ubuntu - installation guide

I've been playing with Thrudb project for the last several days. Basically Thrudb is a set of simple services built on top of Facebook’s Thrift framework that provides indexing and document storage services for building and scaling websites. Its purpose is to offer web developers flexible, fast and easy-to-use services that can enhance or replace traditional data storage and access layers. It’ is also an alternative to Amazon’s recently announced SimpleDB which Jake, Thrudb's creator, has provided some commentary on.

Below are step-by-step instructions to go from zero to running Thrudb on your Ubuntu box. It's mostly based on the excellent guide from YourSharade with some small modifications to meet the current Thrudb source code.

1. Initial Setup

Alright, we’re ready to start installing. Most of the dependencies are available with apt-get, but some we’ll have to build from source. The first thing we need for thrudb is thrift, which itself has quite a few dependencies.

First let’s make a directory to put our files in:

$ mkdir buildthrudb
$ cd buildthrudb

Next we’ll update apt-get and install our build tools and thrift dependencies:

$ sudo apt-get update
$ sudo apt-get -y install subversion g++ make flex bison python-dev libboost-dev libevent-dev automake pkg-config libtool

Also, since we’ll need it later, let’s update CPAN, the Perl module install tool now:

$ sudo perl -MCPAN -e "install Bundle::CPAN"

CPAN takes 10 minutes or so to update. When prompted about “manual configuration”, enter no. Eventually you’ll get 3 more prompts, to which the defaults are fine (Update configuration for libnet: no, Perl expression: exit, YAML.pm warning: y). Just hit return at each prompt.

2. Thrift

Now let’s grab thrift from SVN:

$ svn co http://svn.facebook.com/svnroot/thrift/trunk/ thrift
$ cd thrift

Then build and install it (don’t worry about the bootstrap.sh warnings):

$ cd thrift
$ ./bootstrap.sh
$ ./configure
$ make
$ sudo make install

Again, this will take a few minutes.

3. Thrift Client Libraries

Now that thrift is installed, we need to install the client libraries for whichever language(s) that we’re planning on using. The C++ and Python libraries are installed by default, but this guide will focus on Java, Ruby, Perl as examples. If you get other client libraries working, leave a comment with the steps taken and I’ll amend this post.

For Java, first we need to update Java and ant:

$ sudo apt-get -y install sun-java5-jdk ant

This will take another 5 minutes or so. When prompted with the Java license, hit twice. Now we’ll build and install with:

$ cd lib/java
$ sudo ant install
$ cd ../..

This will install the thrift JAR file to /usr/local/lib/libthrift.jar. For the Perl client libraries, we have another dependency to install:

$ sudo perl -MCPAN -e "install Bit::Vector"

Enter yes at the first prompt, then accept the defaults for the dozen or so prompts that follow. Now we can build and install:

$ cd lib/perl
$ perl Makefile.PL
$ make
$ sudo make install
$ cd ../..

For the Ruby client libraries:

$ cd lib/rb/
$ sudo ruby setup.rb install

Please take a look at lib/*/README if you want to install other client libraries. Alright, done with thrift.

4. Thrudb Dependencies

Let’s go back to our build dir, and start on the other dependencies for thrudb:

$ cd ..
$ sudo apt-get -y install memcached libexpat1-dev libssl-dev libcurl4-openssl-dev liblog4cxx9-dev uuid-dev libboost-filesystem-dev libmysql++ libdb4.5++-dev

We need Brackup, which has a couple of dependencies. CPAN seems to have trouble installing them all in one go, but one at a time seems to work:

$ sudo perl -MCPAN -e "install DBI"
$ sudo perl -MCPAN -e "install DBD::SQLite"
$ sudo perl -MCPAN -e "install Brackup"

These will take a few minutes each. Accept all defaults when prompted.

There are 3 dependencies that we’ll install from source: libmemcached, Spread, and CLucene (since, as of this writing, apt-get has Spread 3.x and we need Spread 4.x; the same with CLucene, apt-get has 0.19.x and we need the latest from svn).

libmemcached

Now we’ll get, build, and install libmemcached:

$ curl http://download.tangent.org/libmemcached-0.17.tar.gz | tar xzf -
$ cd libmemcached-0.12
$ ./configure
$ make
$ sudo make install
$ cd ..

Spread

Spread requires filling in a form to download it, which will be tricky from the command line, but curl to the rescue (replace the values of name, company, and email in the first command with your own information):

$ curl -L -d FILE=spread-src-4.0.0.tar.gz -d name="Thrudb User" -d company="Thrudb User" -d email="unknown@thrudb.org" -d Stage=Download http://www.spread.org/download/spread-src-4.0.0.tar.gz | tar xzf -
$ cd spread-src-4.0.0
$ ./configure
$ make
$ sudo make install
$ cd ..

CLucene

In order to build CLucene, we need libltdl3-dev:

$ sudo apt-get install libltdl3-dev

Now we'll checkout, build, and install the latest version of CLucene:

$ svn co https://clucene.svn.sourceforge.net/svnroot/clucene/trunk clucene
$ cd clucene
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

Somehow clucene-config.h, which is expected to be in /usr/local/include/CLucene/, but for some reason is actually in /usr/local/lib/CLucene/. To fix this, we just copy the file:

$ sudo cp /usr/local/lib/CLucene/clucene-config.h /usr/local/include/CLucene/

Update Shared Libraries

For linking to work right later, we need to update our shared libraries with:

$ sudo /sbin/ldconfig

5. Install Thrudb

Well, if you’ve made it this far, congratulate yourself. We’re now ready to actually install thrudb! First we’ll get it from SVN:

$ svn co http://svn.thrudb.org/thrudb/trunk thrudb
$ cd thrudb

To build and install everything:

$ sudo make

You can build specific portions, thrucommon is required, everything after is if you want it:

$ cd thrucommon
$ ./bootstrap
$ ./configure
$ make all
$ sudo make install

Repeat for each of the pieces you want, i.e. thrudoc, thrudex, thruqueue, throxy (throxy is not ready yet though).

6. Thrudb Client Libraries and Tutorials

And finally, we just need to build the thrudb client libraries (similar to what we did for thrift), and tutorials if we want to test it out.

To build the client libraries, you just need to run /usr/local/bin/thrift on Thrudoc.thrift and Thrucene.thrift and specify which language to generate. However, there’s a handy Makefile in the tutorial directory that will take care of this for us:

$ cd tutorial
$ make

Start thrudoc and thrucene with the handy control script:

$ ./thrudbctl start

At last! Unfortunately, since thrudb has been gone under some major changes recently, only Python and Perl tutorials work out of the box. I'll try to fix other tutorials soon, stay tuned!

Let’s run the Python tutorial:

$ cd python
$ python BookmarkExample.py

You should see something like:

*Indexed file in: 0.20 seconds*

Searching for: tags:(+css +examples)
Found 3 bookmarks
1 title: Dynamic Drive CSS Library- Practical CSS codes and examples
url: (http://www.dynamicdrive.com/style/)
tags: (css examples)
2 title: Dynamic Drive DHTML Scripts -DD Tab Menu (5 styles)
url: (http://www.dynamicdrive.com/dynamicindex1/ddtabmenu.htm)
tags: (cool css examples menu)
3 title: Uni-Form
url: (http://dnevnikeklektika.com/uni-form/)
tags: (examples CSS)
Took: 0.00 seconds

Searching for: title:(linux)
Found 4 bookmarks
1 title: Debian GNU/Linux System Administration Resources
url: (http://www.debian-administration.org/)
tags: (linux administration tips)
2 title: Linux Scalability
url: (http://www.cs.wisc.edu/condor/condorg/linux_scalability.html)
tags: (linux sysadmin ulimit)
3 title: Set Up Postfix For Relaying Emails Through Another Mailserver | HowtoForge - Linux Howtos and Tutorials
url: (http://www.howtoforge.com/postfix_relaying_through_another_mailserver)
tags: (email linux server)
4 title: ZFS on FUSE/Linux
url: (http://zfs-on-fuse.blogspot.com/)
tags: (zfs linux fuse)
Took: 0.00 seconds

*Index cleared in: 0.06 seconds*

The Perl tutorial needs one more dependency:

$ sudo perl -MCPAN -e "install Class::Accessor"

Again, accept the default when prompted. Then run with:

$ cd perl
$ perl BookmarkExample.pl

You should see output similar to the Python example.

7. Next Steps

Congratulations! You now have thrudoc and thrucene running on your own Ubuntu box. From here, you can poke around in the tutorial directory and have a look at the *.conf files. You may also want to join discussion list.

Sunday, March 16, 2008

DDo.c sa'ch

Tôi luôn nghi ngờ những gì sách viết. Tôi chưa bao giờ tin mấy ông tác giả viết sách. Thiệt ra, không riêng gì sách, tôi vốn take everything with a grain of salt.

Những cuốn sách viết càng có vẻ hay, tôi càng nghi ngờ, phải kiểm tra lại bằng thực tế (cũng may đa số sách mà tôi đọc đều đúng và có thể áp dụng vào cuộc sống). Nhưng đặc biệt, có 2 loại sách mà tôi luôn đặt trong diện "cực kỳ đáng nghi".

Thứ nhất là loại sách "phát triển bản thân" nó phổ biến quá trời. Người người đọc "bí mật của may mắn", nhà nhà đọc "cho đi là còn mãi", rồi ôi thôi nào là "7 thói quen để thành đạt", "biến ước mơ thành hiện thực", "thay thái độ, đổi cuộc đời"...(xem full-list ở đây, lưu ý là những cuốn sách này không phải dành cho trẻ con).

Tôi gọi những cuốn sách này là những cuốn "sách sướng", bởi đọc chúng rất sướng, thấy kích thích lắm, giống như tìm ra được chân lý, nhưng rốt cuộc thì chẳng giúp ích được gì cho cuộc sống. Học được gì từ chúng?

Cách sống đẹp, sống tốt?

Ôi thôi, dư thừa. Chẳng cần phải đọc sách, nếu muốn sống đẹp, sống tốt thì người ta vẫn có thể sống đẹp, sống tốt đấy thôi. Vấn đề là khi người ta không muốn hoặc không thể, thì có đọc một trăm cuốn sách, vẫn vậy.

Một cuốn sách "nuôi dưỡng tâm hồn" chẳng thể nào có đủ sức mạnh để thay đổi bản chất của một con người. Chẳng cần đọc sách, ai cũng biết là hút thuốc có hại cho sức khỏe, nhưng người ta vẫn cứ hút đó thôi.

Những bí quyết để thành công và hạnh phúc?

Ôi thôi, lừa gạt. Mẹ kiếp, có ai thử đưa ra một minh chứng là đọc xong cuốn "biến ước mơ thành hiện thực" thì có thể biến ước mơ thành hiện thực? Có ai đưa ra được một minh chứng là đọc xong cuốn "dám thành công - dare to win" là sẽ thành công?

Có ai thử thống kê, bao nhiêu người đọc xong cuốn "bí quyết để có một gia đình hạnh phúc" thì có được một gia đình hạnh phúc?

Hạnh phúc chẳng bao giờ đơn giản đến mức có thể tóm gọn trong một cuốn sách. Dễ thế thì ai cũng hạnh phúc hết àh? Nhìn ra xung quanh đi, bao nhiêu người hạnh phúc?

Thành công chẳng bao giờ dễ dàng đến mức có thể tóm gọn trong một cuốn sách. Dễ thế thì ai cũng thành công hết àh? Nhìn ra xung quanh đi, bao nhiêu người thành công?

Ngoài loại "sách sướng" kể trên, còn một loại thứ hai là loại "sách tỉ phú", kiểu như mấy tay tỉ phú như Bill Gates, Warren Buffer rồi Donald Trump...kể chuyện đời mình để thiên hạ học tập. Mẹ ơi, loại này thì tinh vi hơn loại "sách sướng" nhiều, bởi khác với "sách sướng", nó có một cuộc đời thành công và hạnh phúc (chính là mấy tay tỉ phú) để minh họa.

Tôi chưa bao giờ tin vào những câu chuyện họ kể hay những nguyên tắc, bí quyết mà họ liệt kê ra. Mẹ kiếp, nếu tôi ở vị trí của họ, tôi còn kể hay hơn nữa kìa, đơn giản vì kể lại một cuộc đời thành công và hạnh phúc là chuyện dễ nhất trên thế giới.

Không thể tin được mấy tay tỉ phú này, bởi họ đều có nhu cầu chứng minh cho thế giới thấy rằng họ hoành tráng như hôm nay là do họ giỏi, chứ không phải là do họ may mắn nên họ sẵn sàng "nổ", ai biết được? (về cái vụ may mắn, tôi sẽ viết một entry khác nói về lucky fool)

Vả lại, dù họ nói sự thật, thì những nguyên tắc và bí quyết của họ cuối cùng vẫn là do right time, right place, right people mà thành, nên cũng khó mà đem qua áp dụng vào cuộc sống hàng ngày được.

--

Nãy giờ nói chay không, giờ thử lấy cuốn "Bí mật của may mắn", đang khá "hot" ở VN làm ví dụ nhé. Trời ơi, nó kể một câu truyện dong dài (tôi thấy thích hợp để kể cho mấy đứa nhỏ nghe trước khi chúng đi ngủ), rốt cuộc thì "bí mật của may mắn" được đút kết lại như sau:

1. hãy tạo ra sự may mắn cho mình

2. biết theo đuổi may mắn

3. dám thay đổi để tạo điều kiện tốt hơn

4. biết chia sẻ, giúp đỡ người khác

5. đừng trì hoãn, hãy hành động ngay

6. biết quan tâm, để ý những điều nhỏ nhưng cần thiết

7. hãy dám tin vào những điều bạn tạo ra

8. may mắn không thể mua bán được

9. hãy giữ vững niềm tin

10. ai cũng có thể gặp may mắn

11. cội nguồn của sự may mắn

12. không bao giờ là quá trễ

Rốt cuộc thì học được gì từ những lời khuyên hên xui thế này? Mẹ kiếp, nhân vật chính, tự vì thành công (và mắc cái bệnh thích-kể-chuyện-thành-công của mấy ông tỉ phú), nên mới dám tuyên bố "hãy dám tin vào những điều bạn tạo ra", thử xem nếu anh ta thất bại, anh ta có dám nói vậy không? Cuộc sống cho thấy có hằng hà vô số người tin vào những điều họ tạo ra rồi thất bại ê chề.

Tôi mới vừa nghĩ ra tên mới cho loại sách này: sách bói. Toàn phán chung chung theo kiểu "phước chủ may thầy".

Tôi nghĩ một cuốn sách hay, không nên cố gắng dạy cho tôi một (hay một chục) bài học nào đó, mà nó nên kể cho tôi nghe một câu chuyện để tôi ngẫm nghĩ, so sánh với thực tế và tự rút ra những bài học cho bản thân.

---

UPDATE: lẽ dĩ nhiên trong mớ "sách bói" hay "sách tỉ phú" vẫn có những cuốn đọc được, và trong những cuốn không đọc được vẫn lác đác có những lời khuyên, bài học hay ý tưởng thú vị, có thể áp dụng vào cuộc sống. Nhưng kinh nghiệm của tôi cho thấy những điều thú vị là quá ít, so với thời gian và tiền bạc phải bỏ ra.

Tuesday, March 4, 2008

La.i Linux vs Windows

Tôi thấy tội nghiệp cho những con người suy nghĩ như thế này:
Điều cuối cùng tôi thích sử dụng Linux là tôi không muốn phụ thuộc vào Microsoft.

Chả có nghĩa lý gì, không phụ thuộc vào Microsoft thì phụ thuộc vào Linux. Chẳng có gì khác nhau. Thậm chí Microsoft chỉ có 1, còn Linux là cả một đống người chẳng biết ai ra ai. Thực ra tôi rất ghét sự lệ thuộc của Linux. Với Microsoft là mối quan hệ sòng phẳng, tôi trả tiền anh cung cấp sản phẩm. Với mã nguồn mở nhiều lúc để down phần mềm tôi phải cám ơn, phải xin phép cái UN gì đó. Thấy có vẻ mình phải mang ơn người ta quá. Mà mang ơn cũng đúng vì người ta làm cho mình xài miễn phí. Nhưng quả thật, nếu không quá bắt buộc thì cũng không thích phải mang ơn kiểu đó.
Sự thật là tôi thấy tội nghiệp cho tất cả những ai chưa biết đến những điều tuyệt vời mà Linux nói riêng và thế giới, cộng đồng nguồn mở, tự do nói chung, đã cung cấp cho nhân loại.

Nếu là tôi cách đây một hai năm, tôi đã nhào vào tranh luận, cố gắng "khai sáng" cho những con người đáng thương này. Nhưng giờ thì không.

Thiên đường không có chỗ cho những người u mê, phải có kẻ xuống địa ngục, c'est la vie!