Nhà nghỉ rẻ ở Cần Thơ

Năm ngoái, tháng 7/2014, mình vô tình tìm được 1 nhà nghỉ rẻ mà phòng ốc khang trang rộng rãi. Giá chỉ có 150k/đêm thôi.

Nhà nghỉ nằm ở cuối hẻm 11 (hay hẻm kế bên, không nhớ rõ), trên đường Mậu Thân, gần ngã tư Mậu Thân - 3/2.

Nay ghi lại để chia sẻ.


Chó chê mèo lắm lông

Ngẫm thấy có 1 vài tréo ngoe như sau:

  1. Khi có làn sóng người Việt tị nạn sau 1975, truyền thông thân Mĩ đổ cho Cộng sản gây ra vấn nạn. Khi có làn sóng người Syria tị nạn và chết trên biển, truyền thông thân phương Tây đổ tội cho chiến tranh chung chung, mà cố tình không nhắc đến chiến tranh đó bắt đầu do Mĩ giật dây một phong trào lật đổ chính quyền đương nhiệm Syria, và đưa quân vào tham chiến, bất kể nguyên tắc "không can thiệp nội bộ của nhau" thường được đề cập trong ngoại giao. Khi Nga chưa đưa quân bảo vệ những người định cư gốc Nga ở miền Đông Ukraina thì đã bị Mĩ cấm vận, trong khi chiến tranh Syria không xâm phạm đến dân Mĩ nào, thì Mĩ lại thản nhiên rót quân vào như đó là đất nhà mình. Cách đây hơn nửa năm, mình có dịp gặp gỡ 2 anh Syria + 1 anh Ai Cập và nghe họ nói chuyện chính trị với nhau. Ba người đều thể hiện sự căm giận Mĩ và nhóm nổi dậy, vì đã gây ra tình trạng chiến tranh ở nước họ. Có lẽ mỗi ngày họ đều lo lắng cho bà mẹ ở quê nhà, liệu ngày mai có còn người để họ gọi bằng "mẹ".

  2. Khi Việt Nam đang cố gắng giành lại Hoàng Sa, thì truyền thông thân Mĩ hay nhắc lại vụ Công hàm của Phạm Văn Đồng để đổ tội cho chính quyền Cộng sản. Nhưng hãy liên hệ vấn đề Cuba: Truyền thông thân Mĩ cũng đồng thời thường xuyên chỉ trích Cuba vì "tội" theo Chủ nghĩa Cộng sản (mặc dù hình như Chủ nghĩa Cộng sản chưa bao giờ áp đặt lệnh cấm vận lên 1 nước khác, gây ra tình trạng thiếu thốn, đói nghèo ở nước "bất đồng chính kiến" với mình). Nhưng họ lại giấu tiệt một chuyện: trước khi Fidel Castro lên nắm quyền, Cuba là một nước thuộc Mĩ (tương tự Philipines, vốn là thuộc địa của Tây Ban Nha, bị Mĩ hốt sau khi thắng cuộc trong chiến tranh Tây Ban Nha - Mĩ). Và trong thời gian kiểm soát Cuba đó, Mĩ đã lợi dụng thế "bề trên" để buộc Cuba "cho mượn vĩnh viễn" vịnh Guantánamo. Sự mất mát này rõ ràng còn thê thảm hơn vụ Hoàng Sa của VN, vì địa điểm này nằm ngay trên bờ biển Cuba, chứ không nằm ngoài khơi xa như Hoàng Sa, vì đối thủ của Cuba có 1 đám đàn em hùng hậu, trong khi đối thủ của VN đang có khá nhiều người chống đối, và vì hiệp ước "bán vịnh" của Cuba rành rành và khó bắt bẻ hơn Công hàm PVĐ.

  3. Truyền thông thân Mĩ hay tuyên truyền "đừng nghe Cộng sản nói, hãy nhìn Cộng sản làm", nhưng họ phớt lờ chuyện Mĩ đặt chuyện Iraq phát triển vũ khí giết người hàng loạt, để đem quân vào Iraq (như thể Iraq là đất nhà mình), và hơn 10 năm trôi qua, vẫn chưa chứng minh được cái vũ khí hủy diệt đấy tồn tại. Và họ cũng phớt lờ chuyện Mĩ bịa đặt sự kiện Vịnh Bắc bộ để tự cho mình quyền ném bom miền Bắc VN.


Khác nhau giữa "home" và "house"

"Home" và "house" (tiếng Anh) đều được dịch ra tiếng Việt là "nhà", nhưng nghĩa của chúng khác nhau, vậy sự khác nhau là thế nào, để khi dịch từ Việt sang Anh thì chọn "home"/"house" cho đúng?

Ý nghĩa của "house" và "home" được tổng kết bằng thành ngữ tiếng Việt như sau: Đàn ông xây nhà, đàn bà xây tổ ấm. House tương ứng với nhà trong xây nhà, còn home tương ứng với tổ ấm. Cách ví von này không phải tôi nghĩ ra, mà được nghe kể từ cô giáo dạy môn Sinh học ở trường trung học. Cô kể rằng khi cô đi học Anh văn, cô hỏi thầy giáo hai từ này khác nhau thế nào. Thầy giáo chỉ nói câu thành ngữ trên là cô hiểu ngay, không cần giải thích gì thêm.

House ý chỉ vật thể cụ thể, thường hình hộp, có mái, xây bằng gạch mà ta ở. Còn home nó trừu tượng và chất chứa tình cảm trong đó, ý chỉ nơi ta đi về hằng ngày, sum họp với người thân gia đình.

Lấy ví dụ khi ta cần dịch những câu sau: Nhà tôi tường trắng, có mái ngói đỏ, thì chữ "nhà" này là "house". Trong khi, tôi nhớ nhà, thì "nhà" này được dịch thành "home", vì khi ta nhớ, không phải ta nhớ cái hộp bằng gạch đó, mà nhớ đến cha mẹ, anh chị em và cuộc sống ấu thơ của ta nơi đó.


Sử dụng template nunjucks cho ứng dụng JavaScript, ban đầu bối rối nhưng kết quả tuyệt vời

Tôi đang thử làm một website trưng bày hàng dựa trên framework Saleor, nhằm thay thế web cũ tôi đã làm cách đây 9 năm (http://kimphat.vn). Nhân việc làm mới, tôi cũng quyết áp dụng một vài kĩ thuật mới, như là biến phần giao diện web thành một ứng dụng JavaScript hẳn hoi, bằng cách sử dụng một framework MVC (Model-View-Controler) bằng JavaScript.

Việc sử dụng framework MVC JavaScript thực ra không phải là mới lắm. Tôi có một người bạn, trẻ hơn tôi nhiều tuổi và hắn đã thành thạo AngularJS lắm rồi. Tuy nhiên, do tôi không làm web một cách liên tục (từ lúc ra trường, tôi làm về phần mềm nhúng nhiều hơn), cộng thêm tuổi tác có thể gọi là già nếu so với các lập trình viên xung quanh (không so với quản lý dự án, hehe) nên tôi cảm thấy hụt hơi với các công nghệ web mới. Cho nên bước đầu dấn thân vào kĩ thuật này cũng cam go và nhiều cảm xúc.

Lần đầu tiên tôi chạm tay vào một framework MVC JavaScript là cách đây vài tháng, với Backbone, khi đang làm website cho công ty (easyuni.com). Lúc đấy, phần giao diện chủ yếu được đảm nhiệm bởi một đồng nghiệp, mà vì lí do nào đó, anh ta chọn và đưa Backbone vào sử dụng. Sau đó, tôi phải làm một tính năng là tạo widget, tóm tắt nội dung từ forum được điều hành bởi công ty (forum.easyuni.my), nhúng vào website chính của công ty. Do cái widget này chủ yếu đụng đến code ở mặt front-end, tức là code bằng JavaScript, HTML là chính, nên tôi nghĩ đến dùng Backbone luôn, nhân tiện nó đang được dùng trên website rồi.

Bây giờ, khi làm website trưng bày hàng hóa (không hẳn là thương mại điện tử), tôi vẫn chọn Backbone. Không hẳn là vì tôi chọn theo quán tính. Tôi cũng đã đưa vào tầm ngắm 3 cái: Backbone, AngularJS, Emberjs. Emberjs được đưa vào danh sách vì tôi thấy màn thể hiện ấn tượng của nó trong Discourse, phần mềm mà cty tôi dùng để chạy forum. Nhưng sau khi thấy AngularJS, Emberjs có nhiều khái niệm mới quá, sợ tốn nhiều thời gian học, không kịp làm nên tôi quay lại Backbone. Vả lại, dung lượng của 2 framework kia cũng khá nặng. AngularJS hay tự nhận nó nhẹ nhất, nhưng đấy là do nó làm cho Backbone trông có vẻ nặng bằng cách gộp dung lượng của jQuery vào. Đúng là Backbone cần phải có jQuery mới chạy được, nên việc gộp dung lượng jQuery vào Backbone là hợp lý. Nhưng vấn đề là dù tôi có dùng AngularJS đi nữa thì website của tôi cũng phải dùng jQuery, để code JavaScript cho các tính năng khác. Cho nên nếu cộng jQuery vào cả AngularJS và Backbone thì bộ đôi Backbone + jQuery vẫn nhẹ hơn.


Build OpenWrt từ nguồn

Trước kia tôi đã có bài giới thiệu về OpenWrt. Hôm nay tôi sẽ hướng dẫn cách build một bản OpenWrt từ mã nguồn. Bởi vì tôi dùng Ubuntu trong công việc hàng ngày nên các dòng lệnh, minh họa dưới đây là áp dụng với Ubuntu. Bạn vẫn có thể áp dụng tương tự với các bản Linux khác.

Ta có thể tìm các dòng lệnh để lấy mã nguồn OpenWrt ở trang này: https://dev.openwrt.org/wiki/GetSource

Nhưng trước đó, hãy cài đặt các phần mềm công cụ cần thiết cho việc build cái đã.


Tập bơi đi

Hi vọng sự kiện Ánh Viên sẽ giục giã nhiều bạn trẻ lao vào con đường bơi lội, nhằm tìm 1 tài năng xêm xêm Ánh Viên để gặt nốt HCV nội dung tiếp sức cho Việt Nam. Nói gì nói, đội hình Việt Nam chênh lệch quá làm Ánh Viên bị thua số huy chương so với anh chàng người Singapore.

Và nhân trong 1 khí thế hừng hực này, NXB Trẻ nên tái bản và marketing mạnh mẽ bộ truyện Rough của tác giả Adachi Mitsuru. Đây là bộ truyện đã truyền cảm hứng cho mình lao vào tập bơi, trong bối cảnh môn bơi VN khi đó vẫn còn nhạt nhòa so với các nước trong khu vực, chưa có 1 VĐV nào đủ sức gây nên cơn sốt.

Rough

Khi nói về chặng đường học bơi của mình, không chỉ có bộ truyện tranh Rough, mình còn phải cảm ơn rất nhiều bạn Thành, người "thầy" đầu tiên dạy bơi cho mình. Sau khi chia tay bạn vì học hết lớp 12, với món bơi ếch sơ sơ học được, mình tiếp tục tự tập các kiểu bơi khác, và cũng "tầm sư học đạo" từ nhiều nguồn khác nhau, chủ yếu là để ngộ ra một số bí kíp, khiến mình giải quyết được những bế tắc khiến mình không thể tiến bộ. Nhân tiện kể ra ở đây, nhắm giúp ai có gặp những khó khăn tương tự thì có thể tháo gỡ, để càng có nhiều người giỏi bơi thêm nữa.

...

Building debian package for Nginx + pagespeed + passenger modules

Nginx, unlike Apache, doesn't support dynamically load additional modules. If we installed Nginx from distro's package repository, like installing for apt-get under Ubuntu, we cannot have additional nginx-somemodule package for easily installing more modules. If we need more than a standard Nginx, we have to remove the one installed with package manger, then build and install again from source. But installing via this method means we lose some advantage of package manager.

So, this tutorial will show you how to build and combine Google PageSpeed and Phusion Passenger in the same package as Nginx, to let it installed and controlled by Debian/Ubuntu's APT package manger.

Why building debian package?

  • Can revert to original Nginx by uninstall our deb package.
...



Another way to make Python web app do concurrency

I'm developing a Python web app that emulate WifiDog for remote demo purpose. It is not just a normal web app because it has to run 2 jobs as the same time:

  • Run as a webserver, to redirect user visit to the URL of WifiDog's remote Auth Server.

  • Periodically report system state to Auth Server as a normal HTTP request.

Make the first one is easy. The web part actually don't have much thing to do. It only builds some URL and redirect user to. A small script based on Bootle is enough. What make me concern is the second requirement. Normally, when I build a website on Django or Flask and I need the web do some periodic task, I just use Celery. But here I don't want to use Celery because Celery require me to run another command (celery) beside the main one (which is to launch my web app). Using Celery also means that I have to install more programs like RabbitMQ. It is a waste for just a small, simple web app.

...