The Unbreakable WordPress

Back in 2004 when I set out to learn WordPress, I created a custom theme for Visualgui from scratch. I took WordPress’s classic theme, ripped apart and kept only the codes I needed for my site. I had total control of my markups and I knew exactly what to expect when WordPress processed my codes. I also decided very early on that my blog posts would only contain texts and nothing else (no images, no embedded video, audio or JavaScripts).

What still amazes me about WordPress is that the custom theme still works today. The markups had changed dramatically over the years from XHTML to HTML5, but the underneath structure remains the same. Another indisputable feature of WordPress is the one-click upgrade. My site has never been broken when I make the upgrade. I even tell all my clients with confidence to just click that button.

The downside of WordPress is that it takes a lot of work to build from scratch, especially if you don’t know exactly what functionalities will be used in the future. Take this site for example, I have no functionality for widgets because I don’t need them. My clients, however, would need those types of feature to be able to add extra things to their site.

A better approach would be to take pre-existing templates like The _s Theme, Toolbox or Twenty Eleven and customize them for your needs. The drawback is that you’re losing precise control of your markups and many functionalities that came with those themes you might not need. Working from complexity to simplicity is where WordPress is similar to Drupal. The different is that WordPress’s default markup doesn’t make Zeldman cries. In this regard, MODX shines because it gives you total freedom to write your markups.

MODX Gives Total Control

I am working on a client site using the latest version of MODX and I couldn’t agree more with the president and co-founder of MODX Ryan Thrash on “Remarkable Results, No Coding Required:”

We have always believed that the software that runs your website shouldn’t dictate its structure or force you to compromise your design to fit its mandatory theme layer. On the other hand, it should adapt to your explicit needs, today or tomorrow, and it should never force you to work with code in order to create a truly custom design.

That is the reason I picked MODX and am so excited about its flexibility.

R. Kelly’s Single Entendre

I didn’t know R. Kelly has a new book. Definitely going to pick it up after reading Andrew Marantz’s excellent piece on the book:

In his twenty-year exploration of the limits of the R. & B. sex ballad, R. Kelly has often toed the line between satiric and satyric. In his song “Sex Planet,” he made the obvious joke about Uranus; in his song “Sex In the Kitchen,” he made the obvious joke about salad-tossing; in his song “Pregnant,” male backup singers (ominously? chivalrously?) offered to “knock you up.” He has referred to himself as a “sexosaurus” and a “lesbian R. & B. thug.” He has attempted onomatopoetic renderings of cunnilingus and of flesh skidding down a stripper pole. He has yodeled, twice, in the songs “Echo” and “Feelin’ on Yo Booty.” (To perform the latter song in concert, he donned a top hat and cape for an extended operatic remix.) And then there is his unfinished magnum opus “Trapped in the Closet,” a series of twenty-two songs (and counting) featuring a gay pastor, a stuttering pimp, and a woman named Bridget whose husband is a midget.

“Xin Cho Tôi Yên Ngủ Một Ngày”

Ba đêm qua Cu Đán thức giấc mổi một hai tiếng. Sợ hắn đánh thức cả nhà nên phải ẩm ổng lên để dổ. Bang ngày đi làm phải tống cafe vào để tỉnh táo. Sau giờ làm việc thì cái đầu nhức như muốn vỡ. Bên ngoài thì nóng trên 90 độ. Vào xe mở máy lạnh thì máu cam tuông ra ào ào. Mắt thì mở không ra còn tâm hồn thì như đi thăm địa ngục.

Láy xe đợi đèn xanh thì thiếp đi. Bị bớp còi thì hoảng hồn đạp ga tiếp. Đến nhà trẻ rước Cu Đạo thì tấp vào chổ đậu xe có góc cây ngã ghế xuống nhắm mắt được 15 phút trước khi đón con. Buổi tối khi ăn cơm xong thì chỉ muốn đặc mình lên giường ngủ nhưng thằng Cu Đạo không chịu đánh răng. Hắn cứ chần chờ mãi. Năng nỉ hoài không được đành phải đè hắn ra mà đánh (đánh răng chứ không phải đánh hắn).

Khi vào giường thì hắn giận dữ và cào cấu. Tôi đẩy hắn ra thì hắn khóc và la to, “Don’t do that.” (Đừng làm thế). Thấy hắn tội nghiệp và thấy mình cũng hơi nhẩn tâm, tôi ôm lấy hắn và nói, “Ba xin lỗi con. Ba thương con.” Hắn trả lời, “I am sorry. I love you too, daddy.” Thế thì hai cha con ôm nhau ngủ.

Đến hai giờ khuya lúc tỉnh giấc thấy đèn ở ngoài phòng còn sáng thì biết là bả xã còn thức với thằng nhỏ. Tôi bão, “Em đi ngũ với thằng lớn đi để anh ngủ với thằng nhỏ.” Vô nằm kế hắn vừa định ngủ thì anh ta ho lên rồi lăn qua lộn lại. Rồi thì mở mắt luôn. Cho bú thì lấy bình sữa chơi. Cho nằm thì la va lăn lóc chà mặt xuống nệm. Ẩm trên vai thì nói chuyện không ngưng. Đem vào nhà tắm thì ngắm nghía cây quạt. Đế gần 4 giờ sáng mới ngủ. Bây giờ thèm nhất là được róng lên: “Xin cho tôi yên ngủ một ngày…”

Xôi Với Xoài

Dạo này hay thèm món tráng miệng xôi với xoài của Thái. Ở gần sở làm có một nhà hàng Thái tên là Rien Tong làm món này rất hấp dẫn. Đĩa xôi nếp ấm và thơm với một lớp nước cốt dừa rưới lên mặt không quá ngọt và không béo lắm. Còn lác xoài thì ươm lạnh chín mùi ngọt liệm. Vừa sơi vừa hớp vài hớp trà xanh nóng thì đời cũng được lên mây năm phút. Tuần trước cũng định ăn nhưng kêu ra một dĩa drunken noodle còn thêm chai Singha nữa nên no quá ăn trắng miệng không nổi thật tiếc. Kể cho bà xã nghe món đặc biệt này bã bảo, “Để em xôi một nồi cho anh ăn đã thèm.”

Mấy tuần nay vợ hôm nào cũng chuẩn bị cơm trưa đem theo cả nên không ra ngoài ăn. Đồ ăn nấu ở nhà dù sao gì cũng tốt hơn ăn ở ngoài. Sáng thay gì ghé Starbucks mua cafe đá bà xả cho một ly cối artichoke nấu ở nhà để lạnh đem theo uống vì dạo này máu cam chảy như thác đổ không dừng. Mổi sáng đến chổ làm điều phải chạy nhanh vô nhà vệ sinh để xả nước. Kẹt xe thì chịu thua thôi.

Ngồi ở chổ làm đến 10 giờ sáng là chịu hết nỗi phải lội qua Starbucks để mua cafe cho tỉnh ngủ mà làm việc. Nhất là hôm nay nâng cấp lên “Cợp Núi” ngồi đợi mà ngáp lên ngáp xuống như lên đồng. Không biết “Cợp Núi” có gì mới lạ không nhưng thấy tóc độ nhanh hơn một tí. Nếu bạn sài Mac, nên nâng cấp.

Đán Yêu

Đêm qua được ôm con ngủ ba rất phê. Cái tướng tròn trịa của con thật là đã. Nhanh quá mới đây mà con đã được tám tháng rồi. Cuối tuần rồi về bên nội ai cũng cưng con hết. Làm sao không cưng cho được cái nụ cười dể thương của con để hở ra hai cai răng con thỏ.

Con thích nhất là được ba ẩm trên tay rồi chui vào phòng tấm. Tiếng quạt nhà mình kêu cọt kẹt như thiếu nhớt vậy mà con ngủ thật ngon trên vai của ba. Ai cũng bảo rằng ba lằm như vậy con sẽ quen nhưng thật ra thì cơ hội như vậy rất hiếm hoi. Rồi con sẻ lớn và ba sẻ không được ôm con nữa. Thôi thì được ngày nào hay ngày nấy.

Thật ra thì tánh của con cũng rất dể chịu khiến ba má cũng không phải căng thẳng. Con được bú no ngủ đủ là con cười không nhăn nhéo không phàn nàn. Nhìn thấy con vui tươi ba cũng được phần nào an ủi. Người làm cha này cũng không tệ lắm. Cám ơn con ngoan của ba.

Design Elements: Typography Fundamentals

A smart, approachable guide to the basics of typography. Kristin Cullen’s Design Elements: Typography Fundamentals focuses on the language of type and typesetting tips with rich visual complementaries. Yet what makes the book a pleasure to read and the subject easy to absorb is Cullen’s accessible instructional writing.

Nhạc Trịnh Công Sơn Qua Tiếng Hát Ngọc Lan

Dòng nhạc Trịnh Công Sơn không phải là sở trường của Ngọc Lan nên cô hát rất ít so với số lượng bài cô để lại cho đời. Khoảng 800 ca khúc cô thu âm, 32 tác phẩm nhạc Trịnh (tôi được nghe). Tuy nhiên đó cũng là thế lợi vì cô không bị gò bó bởi kỹ thuật hoặc ảnh hưởng từ những danh ca đã thành công lẩy lừng với nhạc Trịnh, nhất là Khánh Ly. Ngọc Lan không chỉ hát khác hẳn với Khánh Ly mà còn thổi vào một luồng không khí mát lạ, ngọt ngào, trong sáng, và đầy cảm xúc riêng của mình vào ca từ nhạc Trịnh.

Vì 32 bài được tập hợp từ nhiều album khác nhau nên lối hòa âm phối khí mỗi bài mỗi nét. Tuy vậy nhưng lối trình bày của Ngọc Lan vẫn thống nhất nên người yêu nhạc Trịnh và tiếng hát Ngọc Lan được thưởng thức suôn sẻ. Riêng cá nhân người viết này thì tập trung vào giọng hát và ca từ nhiều hơn là phần hòa âm.

Trong “Đêm thấy ta là thác đổ”, Ngọc Lan ca nhẹ như hơi thở và dịu ngọt như dòng suối. Giọng cô gần gũi tuy nhịp trống có phần nào chen vào sự thân mật giữa cô và người nghe. Nếu có thể thay đổi nhịp điệu điện tử bằng tiếng trống nhè nhẹ để nhường không gian cho tiếng hát cùng lời tâm sự với tiếng đàn acoustic guitar thì tuyệt vời hơn.

Với cách hát mọc mạc đầy cảm xúc, Ngọc Lan diễn tả rất đạt những bài mang tính cách triết lý của Trịnh. Trong “Một ngày như mọi ngày”, Ngọc Lan trút hết tâm hồn vào lời ca như đang tự sự lòng mình:

Một ngày như mọi ngày
Đời nhẹ như mây khói
Một ngày như mọi ngày
Mang nặng hồn tả tơi

Hoặc những lời thơ lý thuyết của loài người trong “Cỏ xót xa đưa” như: “Người đã đến và người sẽ về bên kia núi”. Và cũng giống người nhạc sĩ tài hoa, Ngọc Lan không chỉ coi nhẹ mà còn ca tụng cái chết trong giai điệu tươi vui của “Bên Đời Hiu Quạnh”:

Đường nào dìu tôi đi đến cơn say
Một lần nằm mơ tôi thấy tôi qua đời
Dù thật lệ rơi lòng không buồn mấy
Giật mình tỉnh ra ồ nắng lên rồi

Với những tác phẩm khá tiêu biểu đã được nhiều ca sĩ thu âm như “Ru em từng ngón xuân nồng”, “Ru ta ngậm ngùi”, và “Hạ trắng”, Ngọc Lan lôi kéo chúng về với thế giới riêng biệt của mình. Sự tuyệt diệu của cô trình bài “Ru em từng ngón xuân nồng” là không để sơ hở kỹ thuật. Nghe thoáng qua thì thấy cô ca rất dễ dàng nhưng lắng nghe kỹ mới để ý lối bắt câu ngắn gọn không quá chau chuốc và sự kiểm soát hơi thở của mình. Cách phân câu điêu luyện của Ngọc Lan có thể nhận ra được trong bốn câu đầu của “Ru ta ngậm ngùi”. Cô chuyên chở từ giọng thấp trầm (contralto) đến giọng cao (mezzo-soprano) rất nhã nhặn, không thều thào hay gào thét.

Với “Hạ Trắng”, Ngọc Lan cất lên hai chữ “Gọi nắng” như một phép lạ xua mây bay đi để “Nắng lên thắp đầy”. Tiếng saxophone thanh thao của Thanh Lâm cũng reo hò theo để làm nổi bật thêm giọng ca đầy cảm xúc. Trái lại thì tiếng kèn soprano chua chát, cùng với cách phối khí rùng rợn, đã lấn đi tiếng hát của cô trong “Ru Tình”. Không chỉ vậy mà phần điệp khúc còn chen vào phần hard-rock guitar choáng cả màng nhĩ. “Ru tình” như thế chắc tình cũng phải bịt tai bỏ chạy. Vả lại bài này thu âm vào lúc cơn bệnh đã khiến giọng Ngọc Lan mất đi chất đậm đà. Sai lầm hơn nữa là bài “Lời buồn thánh”. Lời hát thì buồn thảm, “Chiều chúa nhật buồn / Nằm trong căn gác đìu hiu”, mà nhạc thì dồn dập điệu new wave như đang ở một vũ trường. Có lẽ người nhạc sĩ hòa âm nghe ca từ buồn quá nên làm nhạc nhanh cho đỡ sầu thảm. Thôi thì cứ xem như là một thí nghiệm lạc đề.

Có một số bài không phải ở người hát mà là hòa âm làm mất đi những vẽ đẹp. Nếu có thể tách lời hát ra và làm hòa âm lại thì chắc rất hay. Dù sao đi nữa đây cũng là những sản phẩm rất quý còn duy trì trong làng âm nhạc Việt Nam.

Ngọc Lan đã đem tiếng hát cho đời rồi cũng đã lặng lẽ ra đi. Cô hát mấy câu cuối của ca khúc “Lặng lẽ nơi này” như gửi gấm tâm trạng của mình:

Trời cao đất rộng
Một mình tôi đi
Một mình tôi đi

Đời như vô tận
Một mình tôi về
Một mình tôi về… với tôi.

Và tiếng hát thương yêu ấy đã về vùng trời bình yên.

Updated June 25, 2022

Canh Phòng

Vợ dưới lầu bơm sữa. Hai thằng ngủ hai phòng. Thằng nhỏ hét vổ vổ cái đít cho ngủ lại. Đến phiên thằng lớn thét cho mượn tay ôm đỡ ghiền. Tiện tay thăm tả luôn bằng không hôm sau ước giường phải giặt đồ còn cực và tốn hơn.

SMACSS & SASS

I had to read Jonathan Snook’s SMACSS twice, the second time much slower, to digest the author’s analytical process on CSS categorization. In a nutshell, Snook divides his styles into five parts: base, layout, module, state and theme. I like his naming convention to make the stylesheet more readable. For example he uses prefix like .layout- for layout.

When writing my CSS, one of the rules I try to avoid is deep nesting and Snook suggests the same:

We are trying to strike a balance between maintenance, performance, and readability. Going too deep may mean less “classitis” within your HTML but it increases the maintenance and readability overhead.

The chapter on CSS preprocessor serves as a great introduction; therefore, Hampton Catlin (inventor of Sass) and Michael Lintorn Catlin’s Pragmatic Guide to Sass is a perfect complement to get started with Sass. The lean, concise instructions will help you start using Sass’s features including variables, mixins, nesting, importing, extending and take it to the next level with Compass.

I have started to apply Snook’s categorization in my CSS and it is indeed very effective. I am also working backward to get my style.css rewritten into style.scss only to recompile back out to another style.css. It seems like a redundant’s redundant task, but the process helped me see how Sass handles CSS. I recommend both books if you still have yet to make the leap to preprocessor.

Contact