typeface resources

Classical typesetters have delivered custom typography since the 15th century. Internet could not until now… Western typography had professional typefaces since the 15th century. Vietnamese still not has good-looking publishing fonts until now…

n my career, it’s among my habits to ask people whether they really understand basic things, it turned out many many times that it’s not so easy with even the basic programming techniques, basic algorithms & data structures… 😢 Just like the a, b, c… in the alphabetical table, even write a character down in a beautiful manner is not easy! Below I would try to cover some resources in learning the use of typefaces in designing.

3d graphical user interface

The code is written in C++ base on Clutter 1.2.4 library. It shows basic widgets: tabbed container, scrolling container, list box, combo box, check box, edit box, button, label, radio button…

1.   If you just want to add some eye-candy effects with the cost of a much more complicated GUI with “unorthodox” ways of representing information, that would be a very bad idea! The best way to understand graphics is not digging into math books, but rather computer graphics history, the ideas behing the NeXT computer, PostScript, PDF, NeWS & X windows system, Quartz & Cocoa…

2.1  Hardware with only a framebuffer and some blitting, blending devices.

2.2   Hardware with some 2D vector calculating abilities.

2.3   Hardware with different 3D calculating abilities supported in their GPU. Take a look into the Mesa3D code to understand how the graphics pipeline hardware & software stack works.

3.   I suggest that a graphics developer should try coding a complete module by himself from scratch, for example: orthographic or perspective projection module, bump – mapping implementation, light ray – tracing model… to gain the working experiences himself as reading theory from books won’t be enough. Eventually game & graphics requires lots of mathematics understanding & coding skills, and are not for average coders who only got used to “formal” (shallow) software methods, out – sourcing or such things!

his is my personal project in which I tried to evaluate some new ideas and concepts in using 3D techniques for GUI (Graphical User Interface). It’s quite tiny indeed (about 6000 LOC – line of code), all written by myself in about a month (mostly in my free times at weekends). So please don’t blame me on some un-completed or un-polished features, they are just for testing the ideas only. I would try to examine the trend of applying 3D graphics to GUI, but first, let have a look at the video below.

1.   The first thing to consider is not 3D engines or hardwares, it is about usability. Many traditional (2D) GUI out there are already complex and obstructive. GUI is about information presentation and presentation should be really simple and clear so that even my grand mother can understand and use. I’ve been seeking, trying to explore many new ways invented to represent information in 3D (or 2.5D) space, and I could say only a very very small percent of them could make a usable value. Users have long been familiar with 2D, and yet 3D hasn’t been very much persuasive.

2.   3D hardwares can be categorized into 3 groups (as listed on the left), and the 3D engine can be configured to off-load calculations to hardware. With the 1st type of device, only bitmap operations could be off-loaded. With the 2nd type of device, many drawing operations (the path_xxx functions) can be off-loaded. The 3rd type of hardware is most valuable since we can have its finish for ourselves a lot of work.

It’s important to understand the target device our software stack would be running on. If it is an out-date machine with just some blitters, we should use paint-like (aka: bitmaps) operations, while on most modern PC, draw-like (aka: 2D vector) operations are more encouraging. While bitmaps may offer nicer and more customizable GUI, the cons is it lacks the scalable ability that vector has.

3.   The last is about software implementation. Many of the graphics concepts are first introduced in software, which then embedded to hardware, which then standardized by software (like OpenGL or DirectX) again. Thus, many elements of a graphics pipeline is the production of a long history of interactive evolution. A graphics pipleline is not a general framework, it depends on very detailed, in-depth techniques to be operational in real-world application.

Game & graphics are the domains where most formal software methods would easily failed. 3D graphics developers should have good knowledge on graphics in general (bitmap and vector drawing), geometry, linear algebra & discrete maths, deep understanding on data-structures and algorithms… are strong pluses, advanced tips & tricks in coding and optimization is a must (game & graphics programming has always been a hell of tricks from the age of dawn) and finally good understanding on 3D techniques (model, scenegraph, projecting, shading, clipping, lighting, effects…)

linux sound server

1. Configure the PulseAudio server to broadcast itself and receive connections from clients. Configure the PulseAudio client to redirect audio output to server.

2. GMPC remotely play music on a MPD server.

ome funs with Linux sound system. Today, a small, lightweight laptop is well – suited for all my everyday need: email, web, office, music, video… A home PC is mostly used as file server or backup system. However, one thing you could never be pleased with the laptop is its sound, at least you still need a PC with good soundcard & speakers to enjoy music! Being lazy to plug-in the speaker jack most of the time, and in order to get rid of all those cables, we can choose two following approaches:

Setup a Sound server

1. Setup PulseAudio server on the PC machine and configure it to accept client connections. 2. setup PulseAudio client on the laptop. 3. We can choose to direct audio to local laptop headphone or to the remote PC (with our beloved good – quality speakers). PulseAudio can be a pain on some systems since Linux sound has always been a mess: ALSA, OSS, ESD, PulseAudio… As of Ubuntu 10.04 (Lucid Lynx), PulseAudio is quite stable, you would only need to:

sudo apt-get install padevchooser
# this will install PulseAudio device chooser
# which then trigger other dependency packages

Some old Linux apps (like XMMS, the music player I loved) would not know about PulseAudio. We need to configure it to use ALSA, which has been re-configured to work in bridge mode (ALSA would simply redirect signal to PulseAudio then).

Setup a Music server

Using MPD (Music Player Daemon – a music player working in client / server mode using a simple TCP text protocol) and a client like GMPC (Gnome Music Player Client). Though it may take some times tweaking around to get MPD working with PulseAudio, this would play very well mp3 files you stored on the server. I’ve been using all these 2 methods to have my music played while lying on sofa or in bed!

(And if you’re a vim – addicting user, you could use vimmpc to serve music for yourself while working inside vim).

đường chúng ta đi


Album Đường chúng ta đi – 1976 và Album Tổ quốc yêu thương – 1978

ột chứng tích của lịch sử, album nhạc đỏ (thu âm năm 1976) với sự trình diễn của các ngôi sao nhạc vàng: Lệ Thu, Họa Mi, Hà Thanh, Thanh Tuyền, Thái Châu… Lệ Thu, Hà Thanh thì hẳn ai cũng đã biết, còn Họa Mi, Thanh Tuyền… là những giọng ca chuyên hát cho phòng Tuyên truyền của quân đội VNCH cũ… Một sự kết hợp lạ lùng nhưng vẫn hay trên một khía cạnh nào đó. Biết rằng điều này là khó nghe với khá nhiều người, nhưng âm nhạc vẫn vượt ra khỏi các biên giới chính trị, dù cho cái biên giới ấy nằm trong… chính phần ca từ các bài hát!

Theo như tôi biết, rất nhiều ca sĩ, nhạc sĩ miền Nam cũ đã chọn ở lại VN sau 1975 và phần nhiều cũng đã có những bước đầu hợp tác với chính quyền mới. Chỉ sau đó, khi điều kiện sống quá khó khăn, khi có quá nhiều những ngược đãi vật chất cũng như tinh thần thì họ mới chọn con đường trở thành “boat people” mà ra đi. Như Phạm Đình Chương, Thái Thanh… chỉ ra đi sau khi bị tuyên một cái án “cấm sáng tác và trình diễn vĩnh viễn” tại VN, như Hoàng Trọng còn ở lại VN mãi đến tận năm 1992…

Lá đỏ - Thái Châu 
Cuộc đời vẫn đẹp sao - Họa Mi, Phương Đại 
Hà Nội niềm tin yêu hy vọng - Lệ Thu 
Lên ngàn - Họa Mi 
Bóng cây Knir - Họa Mi 

Thôi thì khoan hãy bàn về cảm xúc trong các bài hát. Riêng về phần hòa âm thì có thể thấy miền Nam đi trước miền Bắc (lúc bấy giờ) rất xa trong chuyện hòa âm nhạc nhẹ. Và riêng về kỹ thuật hát thì một mình giọng ca Họa Mi cũng đã hơn đứt tất cả những ca sĩ nhạc viện được đào tạo chuyên nghiệp của miền Bắc như Lê Dung, Măng Thị Hội… (hãy nghe bài Bóng cây Knir và so sánh). Tôi có cảm giác rằng dù sao với tiếng Việt, lối hát rõ âm rõ chữ, nặng về luyến láy, hơi rung… vẫn là một lối hát truyền tải được tình cảm và phù hợp với cái tai âm nhạc Việt. Sớm muộn gì rồi lối hát này cũng sẽ trở lại…

la chanson d’orphée

Le ciel a choisi mon pays, pour faire un nouveau Paradis.
Au loin des tourments, danse un éternel printemps pour les amants.
Chante chante mon cœur la chanson du matin dans la joie de la vie qui revient!

ây rung cảm tâm hồn nhiều khi không cần đến âm nhạc tinh tế và phức tạp. Chỉ một giai điệu, một lời hát đơn giản nào đó cũng đủ để gợi lại cả một khung trời kỷ niệm, ước mơ xa xưa… Chẳng có gì phải xấu hổ khi kể rằng bạn đã từng yêu một giai điệu, một khoảnh khắc nào đó của quá khứ, để rồi mãi cho đến tận hôm nay mới biết bản nhạc đó tên gì, do ai hát!

Vì có hề gì khi mà giai điệu đó đã (vô hình) đến và ở lại mãi mãi trong tim… Và đó lại là giọng ca đầy ma thuật, khỏe khoắn và quyến rũ Dalida… và cũng như những dáng nhạc đẹp khác, bài hát đã được chuyển thể qua rất nhiều ngôn ngữ khác.

Lời Anh - A day in life of a fool 
Lời Việt - Bài ngợi ca tình yêu 

đờn ca nhạc… nhậu

Nỗi buồn hoa phượng 

Nửa đêm ngoài phố 

Đêm buồn tỉnh lẻ 

hẳng là dạo gần đây bị tra tấn bởi thể loại này hơi nhiều, cảm thấy cần phải… chính thức thừa nhận nó như là “một phần tất yếu của cuộc sống”… Một thể loại âm nhạc có sức sống cực kỳ mãnh liệt, phổ biến trong triệu triệu quần chúng thính giả, có thể được trình tấu thâu đêm suốt sáng bên chiếu nhậu mà không hề nhàm chán. Một dòng chảy âm thầm khơi nguồn từ hàng chục năm về trước, và vẫn còn được nồng nhiệt mến mộ cho đến tận ngày hôm nay.

Mặc cho bao đổi thay, thăng trầm của lịch sử, mặc cho những ai có cố tình không thừa nhận, vâng, tôi vẫn sống, vì tôi là một phần, dù cho ai đó có gọi là hèn kém, của dòng máu Việt! Người ta có thể gọi tôi là “nhạc vàng”, nhạc “ủy mị”, nhạc boléro kẹo kéo rẻ tiền, đờn ca nhạc nhậu .v.v. nhưng các bạn thấy không, bình dân đại chúng vẫn xếp chúng tôi sánh vai cũng những Phạm Duy, Văn Cao, Lê Thương, Phạm Đình Chương… Với các vị đó, người ta có thể cảm thấy xa cách, “kính nhi viễn chi”, chứ với tôi, người ta hát mọi lúc, mọi nơi, có thể buột miệng hát cho vui bất kỳ lúc nào người ta thích!

Người ta có thể phải vận dụng hết tất cả cảm quan, hiểu biết để cảm âm nhạc bác học, còn với tôi, người ta hát tự nhiên như những tiếng chửi rủa hàng ngày! Không dùng từ ngữ quanh co tránh né, chúng tôi thẳng thắn bảo rằng: tôi ca không hay, tôi đàn nghe cũng dở…, vì sự thật vốn dĩ… đúng chính xác là như thế! 😬 Đã có những thời kỳ “bách hoa tề phóng, bách gia tranh minh” (hay còn gọi là “vàng thau lẫn lộn”) giống loài chúng tôi luôn đứng đầu về lượng sáng tác cũng như lượng khán giả mến mộ! Có thể những tác giả viết lịch sử âm nhạc cố tình lãng quên chúng tôi, nhưng các bạn biết không, quần chúng luôn có được thứ âm nhạc và nhạc sĩ mà họ mong muốn!

Bên đây chỉ là một số ít, rất ít trong những người anh em chúng tôi. Nếu các bạn muốn, tôi có thể liệt kê danh mục các tác giả, tác phẩm đến sáng ngày mai cũng không hết! Bên cạnh số lượng, chúng tôi còn có sức hòa nhập, hòa tan cực kỳ lý tưởng, người ta hát chúng tôi trong mọi xó xỉnh từ thành thị đến thôn quê, người ta có thể hát chúng tôi chung với những người anh em (đã từng ở phía bên kia chiến tuyến) như 5 anh em trên một chiếc xe tăng, Tiểu đoàn 307 .v.v. một cách hoàn toàn tự nhiên và hảo hợp. Bởi suy cho cùng chúng tôi vẫn là anh em một nhà, như 5 ngón tay trên một bàn tay… Chừng nào văn hóa âm nhạc nước nhà vẫn “trăm hoa đua nở” (hay còn gọi là “vàng thau lẫn lộn”), chúng tôi đã, đang và vẫn sẽ là một phần tất yếu trong cuộc sống hàng ngày của các bạn!

typeface

All names on the Vietnam wall in Washington DC was carved in Optima, a font designed by the legendary Hermann Zapf. Optima style is well-balanced between ancience and modernity, it’s said that Zapf used golden ratio in designing it!

ince it began long time ago, my obsession for typefaces has never stopped. From typography to calligraphy, from Latin letters to Chinese brush characters, from hand-writing to web fonts… typefaces represent the most basic, most intrinsic but most important to a visual identity: it’s not the thing they see, it’s the thing they read! Typeface, it’s not about a style of writing or printing, it’s about the long traditions of hand writing, wood and metal letters printing continue into the digital age, it’s about aesthetics!

Nowadays, for typography, www is still the “lowest common denominator”, where just a handful of typefaces meet. It’s really hard to demonstrate the beauty of typefaces on the web. Previously I had a post on web embedded font, other solutions exist using Flash or JavaScript to render fonts on web pages. Up-to the present day, I’ve never felt pleased with the aesthetics quality of any Vietnamese font yet!

Take a look at our major (printed) newspapers (e.g: Tuoi Tre, Thanh Nien…) and even art & designing magazines, most of them sticks to the very basic (and ugly) Arial or Verdana, why don’t they consider using more elegant ones like Helvetica or Palatino? (these have Vietnamese Unicode support already) Yet, there are also many nice free font families to use: Gentium, Liberation, DejaVu, Linux Libertine, Droid, Bitstream Vera

Look at the prices of professional fonts sold on many type foundries, you would understand values of the work! A font designer is somewhat similar to a sword-maker, their names don’t appear on publishing, book, newspaper… but those products bear the tacit pride of centuries-old craftsmanship. Image below: the flowery Zapfino, named after Hermann Zapf, shipped with Mac OS X, now serving as test-bed for many font-rendering engines.

3d

e are building something like this, a 3D user interface. Day by day, we’re witnessing more and more diversities in computer user interface: concepts, designs, look and feel, animations, effects… While some would stick to an bare – bone, obscured text console, the others prefer some fancy, eye – candy GUI with all its bells & whistles. Things are much easier now with many 3D libraries and tools. Remind me about how I did all the 3D things: polygon, mesh, texture, sprite, shading, lighting, scene – graph, etc… with C & assembly on DOS!

goswf

great tool to learn Go (weiqi): goswf, so nice the flash board game! You could learn the moves as well as view comments on each move! Below is Game of the Century, the famous game between the legendary Go Seigen (black) and Honinbo Shusai (white), head of the Nihonkiin (日本棋院 – Nhật Bản kỳ viện – The Japanese Go Institute) at the time. The game lasted for 3 months, please note the 160th, the white’s ingenious move! There are thick books on this game, but there’s never been any simple comments on it!

vim for programmer

VIM “IDE” with symbol – browsing and auto – completion

Various utilities inside VIM: media player, calendar, file explorer…

have been using VIM for most of my daily programming, and everyday, I’ve been discovering new things about VIM. We can tune VIM into a full-fledged and powerful IDE (Integrated Development Environment) that far surpasses every others! With ctags and taglist.vim, we can build tags database, which would then enable searching, browsing all symbols, variables, functions in a code – base. cscope enhances ctags even more with advanced search & browsing features. And I would need no external diff tool since we’d already have vimdiff to compare and merge code.

Working with different types of version – control system, we’d already had vcscommand.vim, which can help interfacing with svn, cvs or git! To interact with file system, I would use NERDTree or vimExplorer, a lot of tasks with fs is done even without leaving VIM! I’m not fool enough trying to do everything with VIM, but there are many other plug-ins that you would find useful: a.vim and c.vim would help you a lot in C/C++ programming, calendar.vim helps you viewing date, and keeping small notes (diary) for each day, musicbox.vim serves you with media playing inside VIM, and vimail helps send, receiving emails with just a few convenient keystrokes!