just my 2 cents

heo em, đây là cách làm đúng đắn, nếu không MXH sẽ tự nó trở thành cái hố đen sâu thẳm không đáy, càng lúc càng tệ hại! Theo em là cứ mạnh tay thu tiền theo số view, người ta phải trả tiền cho số view – số tác động xã hội mà người ta mong muốn có! Ví dụ như em là người nói nhiều, một năm viết khoảng 100 posts, danh sách “Friends” của em có chưa tới 50 người, như vậy là khoảng 5000 views, cứ 1 view trả 1 cent là ok, em đồng ý cả 2 tay! Hoặc cũng có thể làm theo hướng ngược lại, muốn xem một mục nội dung gì thì người xem phải trả 1 cent.

Như thế, người xem phải cân nhắc cái nào đáng giá! Chứ không những con bots, rồi các nội dung rác rưởi, xàm xí, độc hại vẫn cứ mãi tràn ngập! Còn không nữa thì thu tiền cả hai đầu, thu cả của người sản xuất thông tin (producer) lẫn người tiêu thụ thông tin (consumer)! Chỉ là cái chợ thôi mà, người bán và người mua đều phải đóng phí, như thế nó mới công bằng, thế mới tạo ra giá trị thặng dư chứ! Đến khi chán rồi không muốn dùng tiền để “chế tài” nữa thì dùng cách của Trung Quốc, cứ xác minh nhân thân, có report là sẽ bị xử lý! Chính là thời đại 3 xu!

async/await is a big scam


âu lắm mới có hứng nói về vấn đề kỹ thuật, lần này mạnh dạn đưa ra một nhận định: async/await là một trò bịp lớn trong các ngôn ngữ lập trình – async/await is just a big scam in programming languages! Mọi người chờ 5, 10 năm nữa xem nhận định này đúng không nhé! Lâu về trước có làm một chút với async/await trên C# và JavaScript, là đã thấy nó không được đúng lắm! Gần đây làm với async/await trên Swift lại thấy càng không đúng! Những cái về threading – process – synchronization – tiến trình, tiểu trình và đồng bộ hóa là phải đọc giữa các dòng chữ – read between the lines! Còn cái mindset của những người làm ra async/await nó giống kiểu bắt chết vào ngôn từ hình thức, họ chấp vào ngôn từ bề mặt!

Async/await chỉ là vấn đề, và cũng chỉ là giải pháp của… riêng JavaScript! Khởi thuỷ xa xưa, JavaScript chỉ được phép có đúng một thread, nên để không block thread này thì họ đã tìm cách offload các hàm sang thread background của hệ thống, và vì làm việc này theo kiểu tuỳ tiện nên phải sinh ra cái async/await để “đánh dấu”, thuận tiện hơn cho việc đồng bộ hoá! Vấn đề này đơn giản là của riêng JavaScript, các ngôn ngữ khác… không thấy có! Async/await khi đem một cách khiên cưỡng sang những ngôn ngữ khác không tạo ra lợi ích nào đáng kể, ngược lại làm phức tạp hoá vấn đề và hiệu suất – performance… rất tệ! Những newbie chưa hiểu sự phức tạp của hệ thống mới thần thánh hoá và cho rằng async/await là cái gì đó siêu việt!

Async/await nó mang cái mindset 2 threads: foreground & background, xuất phát từ hạn chế chỉ được phép có một thread của JavaScript! Với những ngôn ngữ như C, C++, Obj-C, etc… thì bản thân cái không gian tính toán nó đã là n-thread, từ ngàn xưa là đã dã man, phức tạp và đa năng rồi! Chuyện với async/await không biết phải nói làm sao… nó giống như câu: “màn hình cong (curved monitor) có rất nhiều vấn đề, mà vấn đề đầu tiên là nó… cong”! 🙂 Tương tự vậy, async/await không đúng đầu tiên là ở chính 2 từ khoá đó, một kiểu chấp niệm vào hình thức khi cho rằng nếu tôi là sync, thì những code viết ra trước đây là async! Đây là kiểu chấp niệm, thực ra code block bản thân nó không sync, cũng chẳng async, là do cách xài mà thôi!

Tại sao nói async/await là vấn đề của riêng JavaScript!? Với các ngôn ngữ khác, tuyệt đại đa số các lời gọi hàm hệ thống là sync về mặt bản chất, điều này nhằm giúp cho coder hiểu rõ cái cost – chi phí gọi hàm! Chỉ một số ít hàm hệ thống là async, và coder phải hiểu rõ điều đó khi sử dụng! Trong trường hợp có nhu cầu không block main thread thì họ sẽ chạy code block trong một thread khác, chuyện này y hệt như vai trò của Task vậy! Nên async/await không đưa ra được một điều gì mới, càng không phải là cách giải quyết vấn đề mới! Nó đơn giản là cách vá lỗi lầm cũ của quá khứ, bằng cách đặt ra một cú pháp, và cú pháp này… rất thừa thải trong nhiều ngôn ngữ khác ngoài JavaScript, thêm phức tạp mà không giải quyết được chuyện gì!

Nên async/await là vấn đề của riêng JavaScript, thứ mà một lập trình viên nghiêm chỉnh còn… chưa xem là ngôn ngữ lập trình! Khi đem sang các ngôn ngữ khác, bản thân người thiết kế tính năng này chắc chắn là không hiểu được cơ bản về điều phối tiến trình, tiểu trình, đặt ra một thứ hoàn toàn không cần thiết! Async/wait hoàn toàn không phải là công cụ dùng để điều phối tiểu trình, tuyệt đối không có tính năng thay thế mutex, semaphore, critical sections, locks, etc… và do đó không thể dùng để giải các bài toán đồng bộ phức tạp như Producer/Consumer, Dining Philosophers, Sleeping Barber, etc… Đừng nhầm lẫn giữa một cú pháp “lảm nhảm” với các bài toán đồng bộ vốn rất phức tạp, và nên đầu tư thời gian học về căn bản!

80kg

u Tom nhảy lên được 5kg tròn, nhưng rồi ham chơi, chấn thương, viêm nhiễm lại giảm xuống còn 4.7kg… Giống hệt chủ nhân của nó, tăng lên chạm mốc 80kg, rồi ốm một trận giảm xuống còn 78kg! Thực ra lên hay xuống thì cũng là chuyện thường, có lên thì có xuống, có xuống mới có lên, 80kg mà toàn “mỡ” thì không khó, “nạc” nhiều mới khó! Cố lên, đường vẫn còn dài phía trước… 🙂

pyrotechnic

ột kỹ thuật rất quan trọng của ngành hàng không vũ trụ, cũng như kỹ thuật vũ khí nói chung, gọi là Pyrotechnic – tiếng Việt thường dịch (chưa được đúng lắm) là Hoả thuật: sử dụng thuốc nổ với liều lượng nhỏ, có kiểm soát! Ví dụ như 2 tầng của tên lửa được ghép lại với nhau bằng những con ốc đặc biệt có nhồi thuốc nổ bên trong! Tại thời điểm xác định, máy tính trung tâm sẽ kích nổ những con ốc này, phá vỡ các mối liên kết và làm cho tên lửa tách tầng! Những quả đạn phòng không nằm trong ống phóng hàng chục năm, nhưng khi cần là vẫn có thể khai hoả được ngay lập tức một cách rất đáng tin cậy!

Một van đặc biệt khoá chặt bình nhiên liệu, cần một liều nổ nhỏ để bật từ chế độ khoá sang mở, liều nổ thứ hai được lập trình ngay sau đó sẽ tạo áp suất bơm nhiên liệu vào buồng đốt và khai hoả! Xe tăng, máy bay giữa thời tiết âm 20, 30 độ vẫn có thể khởi động nhờ pyrotechnic: nhét viên đạn đã chuẩn bị trước, chỉ có thuốc nổ không có đầu đạn vào một cái lỗ được làm sẵn, gõ cái kịch là viên đạn nổ, luồng hơi sinh ra đẩy piston xoay trục khởi động động cơ! Pyrotechnic cũng được dùng rất nhiều trong kỹ thuật dân sự, ví dụ như túi khí an toàn của xe hơi: khi xe va chạm, cảm ứng sẽ kích liều thuốc nổ nhỏ bơm phồng túi khí!

bột nở

hời điểm là từ 75 đến khoảng 85, tình hình là… đói. Liên Xô viện trợ cho rất nhiều bột mì, nhưng lính thì ăn bột mì luộc, luộc nguyên cục bột đặc cứng, độ cứng nằm đâu đó giữa bánh bột nếp và kẹo mạch nha. Kiến thức thời hiện đại bà nội trợ nào cũng biết là phải thêm bột nở – baking soda – natri bicarbonat thì bánh nó mới tơi xốp, dễ ăn! Thêm ít thì thành giống bánh bao, thêm nhiều thì thành giống… bánh mì! Khi không có bột nở thì người ta phải ủ bột cho nó hơi lên men, thì khi nướng, hấp nó mới phồng, xốp!

Nhưng chuyện tưởng chừng siêu đơn giản như vậy là nằm trong tay một số tiệm bánh mì gốc Hoa, hay đâu đó ở các thành phố lớn người ta mới biết cách làm! Còn lính ở các tỉnh vùng biên thì vẫn ăn bột luộc, đặc quánh hơn cả bánh nếp, và ăn trường kỳ nhiều năm như thế… mà không biết cách chế biến thành các loại bánh cho nó đúng! Bột mì mà ăn như thế nó nặng, sình bụng, tức anh ách, khó tiêu còn hơn cả ăn nhiều bánh bột lọc! Học Hoá, học Lý, học khoa học thường thức cho lắm vào, không biết để làm cái gì!? 🙁

thanh xuân

ó thành một cái khuôn mẫu – quy trình luôn rồi, các nam nữ diễn viên trẻ TQ đầu tiên sẽ được giao các vai thanh xuân vườn trường, vì hợp độ tuổi mà, năm nào cũng có vài phim thanh xuân mới! Sau đó họ sẽ được giao một vài vai phim cổ trang để thử nghiệm! Thử nghiệm thành công sẽ được giao các vai phim lịch sử, ví dụ như thời dân quốc. Qua được 3 ải này mới được giao các vai phim hiện đại!

Thanh xuân, cổ trang, lịch sử… đều là những vai “mơ hồ”, diễn biến tâm lý có thể tự do tưởng tượng, phóng tác, còn phim hiện đại nhìn vào sẽ thấy phốt ngay nếu non vai! Ai cũng sẽ trãi qua quy trình 4 bước như thế, nhưng cũng có một vài ngoại lệ, như Trương Tịnh Nghi trong phim này! Chỉ là một phim tuyên truyền phòng cháy chữa cháy, kết hợp với giảng dạy kiến thức cứu hộ thôi, mà người ta làm kỹ như vậy!

tổ hợp

ếu ủng hộ Palestine và Ukraine: là những người phản chiến chung chung. Ủng hộ Israel và Ukraine: là Mỹ nô đích thực! Ủng hộ Nga và Palestine: những người có am hiểu về lịch sử, địa chính trị! Ủng hộ Nga và Israel: những người theo thuyết tiến hoá Darwin, mạnh được, yếu thua! 😃 Nên con người mà, sự khác biệt là nằm trong từng điểm nhỏ, mới chừng đó phe mà đã đẻ ra 4 nhóm cơ bản rồi! Nếu thực sự “tổ hợp chập 2 của 5” (=10) cho đầy đủ thì còn “phân mảnh” ra nhiều nữa!

Ah mà quên, trong trường hợp của người VN thì sẽ là “tổ hợp chập 2 của 10 (5×2)”, vì phải thêm các trường hợp “giả” nữa: giả-Nga, giả-Mỹ, giả-Do-thái, giả tùm lum… Quan trọng là chấp nhận sự khác biệt, để tạo thành ý thức chung, phải có cách nào đó để vượt qua những khác biệt, đầu tiên là phải hiểu những hạn chế của ngôn từ hình thức, như kiểu TQ: một quốc gia, hai chế độ mà nó còn làm được đó thôi! Chương trình âm nhạc cuối tuần: Hành khúc kỵ binh đỏ – Marsh Budonnogo!

đổ thạch

ó một thời lên mạng xem “đổ thạch”, nói cho đúng là xem thắt dây, các nút dây trang trí là những dạng phức tạp, cầu kỳ và công phu, cần nhiều thời gian để học, nhằm tạo ra những sản phẩm mỹ nghệ nhìn bắt mắt! Người thắt nút trang trí chắc nhìn dân hàng hải thắt nút bằng… 1/4 con mắt, nếu xét về độ khó! Nói thêm bên lề, “đổ thạch” là gì!? Chữ đổ – này chính là “độ” trong cá độ, cờ bạc! Ngày xưa TQ chủ yếu xài ngọc nephrite (như Hoà Điền), nhưng thời hiện đại, khi họ đã tiếp cận được nguồn jadeite từ Miến Điện thì hầu như không còn xài Hoà Điền nhiều nữa.

Các mỏ ngọc ở Miến Điện khai thác ra, chuyên gia sẽ tiến hành phân loại sơ bộ. Loại chắc chắn là ngọc tốt thì bỏ lên tàu thuỷ, chở về TQ! Còn loại mà ngay cả chuyên gia cũng không phân định được, không chắc là cái gì… thì thải ra cho dân bán lẻ! Dân bán lẻ đem bán lại cho các “con bạc”, bỏ ra vài triệu mua một cục đá, xẻ ra nếu là ngọc có khi lời bạc tỷ, nhưng nếu chỉ là đá thường, kém chất lượng thì xem như mất tiền! Mà cái loại đã thải ra đó thì tỷ lệ thắng cực thấp, thế nên mới gọi là “đổ – đánh bạc”. Họ tạo ra một thị trường rộng lớn, kèm theo đó là một sòng bạc cũng cực lớn!

knots

út (knots) không khó, nhưng quan trọng là biết tình huống nào nên xài cái gì, có nhiều kiểu áp dụng rất sáng tạo và hiệu quả, quan trọng nữa là thao tác cho nhanh lẹ, chính xác! Kinh nghiệm mỗi người mỗi khác nên lúc nào dùng cái gì là do mỗi cá nhân đúc kết kinh nghiệm mà thành! Cột dây neo, buộc lưỡi câu, căng góc lều, chằng buộc hàng hoá, nối dây, etc… Đơn giản như căng sợi dây phơi quần áo sao cho không bị chùng khi đồ phơi nặng cũng không phải là quá dể đâu!

Cũng chỉ cần biết khoảng chục loại nút phổ biến là cũng đủ xài rồi, nhưng ứng dụng, biến hoá thì vô số. Cũng phải biết tính chất khác nhau của các loại dây (chất liệu khác nhau), có dây trơn, dây nhám, dây hay giãn, có loại dây vô nước thì giãn ra, cũng có loại dây vô nước thì co lại… để điều chỉnh nút cho phù hợp! Rảnh rỗi ngồi thực tập lại cho nó quen tay, “ngâm cứu” các thể loại nút, kẻo không lại quên, thậm chí có lúc đến thắt một nút số 8 đơn giản nhất thế nào cũng lơ ngơ… 🙂

Slavsa

ang trong cái mood nhạc Nga, Slavsa – Ivan Susanin – một trong những tác phẩm quan trọng nhất của nền âm nhạc cổ điển Nga, thường chỉ được trình bày trong những dịp long trọng nhất (ví dụ như lễ nhậm chức của tổng thống). Bắt nguồn từ một vở opera của Mikhail Glinka, người được xem là cha đẻ của âm nhạc cổ điển Nga! Vở nhạc kịch kể câu chuyện về Ivan Susanin, người được một nhóm thích khách Ba Lan thuê dẫn đường để mưu sát Sa-hoàng Michael I.

Susanin thuyết phục nhóm sát thủ này đi một con đường tắt nhanh hơn băng qua rừng… Từ đó về sau, không ai còn thấy Susanin và nhóm sát thủ kia đâu nữa! Đến ngày nay, Ivan Susanin được xem là anh hùng dân tộc, người đã hy sinh chính mình để làm thất bại âm mưu của kẻ thù! Câu chuyện của Susanin được thấy lặp lại nhiều lần xuyên suốt lịch sử nước nước Nga, kể cả trong WW2, giống như câu chuyện của Matvey Kuzmin, người được phong Anh hùng Liên Xô ở tuổi 83…