Chụp ảnh đề lưu giữ kỷ niệm là xưa rồi, giờ phải là in mô hình 3D! Gia đình, vợ chồng, cặp đôi, bạn bè, etc… có thể đứng vào máy cho nó quét 3D rồi in ra cái mô hình mini nhìn sống động như thật, từ chi tiết, màu sắc cho đến cả… hình xăm! Công nghệ đang bùng nổ ở TQ, Hàn, Mỹ và nhiều nước khác. Chắc chắn nhu cầu về kiểu tạo hình này là rất lớn, dù giá cả còn hơi mắc! Chuyện quét hình 3D thì rất dễ, nhưng có nơi dùng công nghệ in 3D không màu, in xong tô màu lên, còn TQ không hiểu làm cách gì, hình như không phải in mà là đúc, mẫu tạo ra có màu sẵn!
Category: computer-graphics
telecentric
Mỗi ngày biết thêm một tí, trong video là một loại ống kính rất đặc biệt – telecentric lens, vật thể nằm trong trường nhìn của nó có kích thước giống nhau dù ở xa hay gần! Tức nó không tạo ra một phép chiếu phối cảnh (perspective projection) mà kỳ lạ thay, có thể tạo ra một phép chiếu đẳng cấu (isometric projection)! Điều này có vẻ khá là khó tin nhưng phép chiếu đẳng cấu thực ra không xa lạ như mọi người nghĩ! Thậm chí tôi còn cho rằng, bản năng đầu tiên của chúng ta khi diễn họa cấu trúc một vật thể là đẳng cấu chứ không phải phối cảnh. Xem thêm về một bức tranh vẽ trong không gian đẳng cấu ở đây!
Nhưng cụ thể, ống kính này được dùng để làm gì? Nó được dùng trong các ứng dụng đo lường, kiểm định, các ứng dụng computer vision, pattern recognition, etc.. sẽ tránh được nhiều lỗi sai về kích thước, vì dù có chụp gần hay chụp xa thì kích thước vẫn y như thế, xem như đã chuẩn hóa đầu vào! Một ví dụ khác là in vi mạch bằng phương pháp quang khắc đều dùng loại ống kính này để tránh sai số! Một chút suy luận là sẽ thấy ngay, ống kính không thể nhìn thấy được vật thể to hơn nó (lớn hơn đường kính ống), nên quên chuyện dùng để chụp phong cảnh đi, chỉ dùng để chụp những vật thể nhỏ và macro mà thôi!
25 năm sau
Hai mươi lăm năm sau, trên một cái máy tính có 16 GB RAM chứ không phải chỉ vẻn vẹn… 4 MB như hồi đó! Cái thời còn chạy Win 3.1.1, rồi sau nữa là Win 95, Win 97, Win ME, Win NT, etc… Mới trước đó chỉ độ vài năm thì thậm chí, máy tính… không nhất thiết cần phải có ổ cứng mới chạy được, chỉ cần đúng một cái đĩa mềm để khởi động hệ điều hành MS-DOS 5.0 rồi chạy Turbo-Pascal hay Borland-C để học lập trình!
Làm phép tính nhẩm để kiểm chứng định luật Moore, định luật nói rằng: mật độ transistor tăng gấp đôi sau mỗi 2 năm, tổng thời gian là cỡ 24 năm, tức là RAM phải tăng ước chừng khoảng 2 ^ (24 / 2) = 4096 lần, tính ra thì thấy đúng chính xác là như vậy, 4 MB x 4096 = 16 GB (!!!) Có quá nhiều thứ đã đổi thay, nhưng vẫn có một số thứ hoài không thay đổi, cái này ai trãi qua rồi mới cảm thấy có chút… hoài niệm!
screensaver
Nhớ lại những năm ĐH, có những lúc chả học hành gì, suốt ngày chăm chăm đi viết screen-saver! Giải thích chút về screen-saver, ngày xưa màn hình phổ biến là CRT, nếu hiển thị một điểm ảnh thời gian lâu sẽ bị “lưu vết”, đến khi tắt màn hình, hay thể hiện nội dung mới, nhưng nội dung cũ vẫn còn lưu lại mờ mờ ở đó! Nhằm tránh cho các điểm ảnh của màn hình hiển thị duy nhất một giá trị trong thời gian quá lâu, người ta đẻ ra cái gọi là screen – saver, để “save – cứu” cái màn hình đó!
Thế là chả học hành gì, chỉ chăm chăm đi viết screen-saver, là một file SCR (thực chất là một file exe) viết bằng Visual C++, trực tiếp với Win API hay dùng MFC. Chủ yếu là các dạng đồ hoạ fractal, vẽ cây, vẽ lá, vẽ hoa, vẽ tuyết, rồi các dạng kaleidoscope, và rất nhiều những dạng đồ hoạ biến ảo khác! Tự viết dễ có hơn 20 cái screen-saver, viết rồi cho nó chạy, ngồi dòm màn hình mà… “tự ngưỡng mộ mình”, cứ như thằng khùng vậy! Nhưng đằng sau đó cũng học được khá nhiều… Toán!
penpower
Hơn 25 năm trước, một lần đi hội chợ tin học mua được cái này, bút nhập chữ Hoa PenPower với đế cảm ứng 2×1.5 inch! Thế là tiếp tục học chữ với thiết bị này, yêu thích vô cùng, về sau xài nhiều, hỏng mất không dùng được nữa! Thời đó xem như hiện đại lắm, nếu so với cùng thời e là hơn xa iPad + Apple Pencil bây giờ! Thứ tự nét bút rất quan trọng, vì đây là 1 kiểu nhận dạng online (chữ “online” này hiểu trong ngữ cảnh bộ môn Nhận dạng & Xử lý ảnh), không phải đọc ảnh tĩnh, viết đúng thứ tự nét thì nhận rất chính xác! Lý do rất thích cái cảm ứng là vì không như các bạn gốc Hoa cùng lớp, chuyên nhập chữ Hán trên bàn phím máy tính tiêu chuẩn bằng phương pháp Thương Hiệt!
Mà cái Thương Hiệt thâu nhập pháp ấy khó quá, tôi học mãi vẫn không nắm được “yếu quyết” (cũng một phần vì phương pháp này không thật sự chính xác, siêu rắc rối và nhập nhằng), mà nhập liệu bằng bút viết thì nó trực quan, đơn giản hơn! Nên nhớ rằng thời đó cách đây hơn 25 năm, TQ đã tự làm ra những sản phẩm tin học như thế! Còn ở Việt Nam đương thời chỉ mỗi cái bảng mã Unicode tổ hợp hay dựng sẵn mà cãi nhau kịch liệt nhiều năm trời, không ai chịu ai! Đến tận giờ trên điện thoại thông minh với màn hình cảm ứng, giới trẻ TQ vẫn thích gõ phím bằng “Bính âm” cho nhanh lẹ, nhưng giới già thì vẫn thích múa ngón tay, vẽ chữ để trả lời tin nhắn SMS!
games
Thực ra viết con game để chơi là phụ, chính yếu vẫn là muốn thử nghiệm các kỹ thuật khác nhau với “lambda function – anonymous function – hàm không tên”!
Tự viết con game Solitaire này mấy năm trước, nhưng lười, không bỏ lên AppStore. Game mà tôi tự viết để tự chơi thì cũng khá nhiều, viết vì kiếm không được game tương tự đúng ý, cái thì quảng cáo quá nhiều, cái thì đồ hoạ quá xấu, cái thì nặng nề, tốc độ quá chậm, chạy không mượt, mà tôi chơi Solitaire, mấy ngón tay bấm liên hồi như đánh piano vậy! Trò Solitaire chuẩn chơi trên máy Windows tối đa chỉ 24K điểm, nhưng cầm cái iPad mà chơi thì trên 30K điểm là chuyện thường! Game này viết chỉ một source code, chạy trên tất cả các nền Apple (Mac, iPhone, iPad…), làm cái engine sẵn, đọc game rules từ file lên, hiện tại hỗ trợ đến 99 biến thể (variant) Solitaire khác nhau!
Nhớ lại đợt Sài Gòn giãn cách XH vì Covid-19, suốt ngày chỉ có chơi game giải trí, hoặc làm mộc, cưa bào, đục đẽo để vận động tay chân! Nói về chơi game, căn bản đó không phải là chuyện gì xấu, nhưng tôi thường chỉ chơi game logic đơn giản, mỗi ngày chơi 15 ~ 30 phút tối đa, không chơi các game có kịch bản hay những game mất quá nhiều thời gian! Tác hại của game đối với giới trẻ không cần phải nói, nhưng lỗi không nằm ở game, lỗi ở xã hội và giáo dục, tạo ra cho chúng nó một môi trường nghèo nàn, một tâm hồn trống rỗng, như cái lỗ đen sâu hoắm, nên ngoài những thứ vớ vẩn, nhảm nhí ra, chúng nó không còn biết điều gì khác, riết rồi thành thần kinh, bệnh hoạn và tệ nạn!
toán
Nối tiếp post trước, minh hoạ bằng một screenshot – chụp màn hình. Đến tận bây giờ vẫn còn xài khá nhiều toán, không phải là Toán cao cấp (vi phân, tích phân, đạo hàm, xác suất thống kê, etc…) mà chủ yếu là Toán rời rạc (discrete mathematics) và Thuật toán, thuật giải, thêm một chút Hình, Số và Xác suất thống kê… Chính là vì mấy cái này nên code vẫn còn có vài niềm vui, ngoài những chuyện debug phức tạp, nhức đầu, mệt mỏi và vô số những công việc… trâu bò khác!
Ở một góc nhìn khác, có thể… nhìn code đoán tuổi! Những người viết mã thành khối 80 cột như tôi có nguyên nhân sâu xa từ cái thời còn trên x86 và DOS, lúc đó màn hình text có kích thước 16 (dòng) x 80 (cột), còn màn hình thời bây giờ viết đến 160 cột có khi vẫn chưa xuống hàng! Đến tận giờ tôi vẫn cho rằng bắt đầu từ tầng thấp – low level là một điều nên làm, phần lớn coder bây giờ cái gì cũng biết, công nghệ nào cũng rành, chỉ một điều là không… rành code!
turtle graphics
Cái này, ai chuyên về Computer Graphics sẽ biết gọi là: Đồ hoạ con rùa (turtle graphics), tập API chỉ có 2 lệnh căn bản: moveBy và rotateBy, ví dụ: tiến 3 bước, xoay 45°, lại tiến 5 bước, xoay tiếp 90°, etc… hệ toạ độ hoàn toàn tương đối. Đây là kiểu API tự nhiên, phù hợp để vẽ Hình học Fractal.
Một thời, đám lưu manh cũng kiểu “ta đây biết rồi, chuyên đi đọc vị người khác”, đọc thấy trên blog tkxuyen.com được đúng 1 chữ Computer Graphics nên cũng bô lô bô la: ah, em cũng đồ hoạ máy tính nè, em xài Photoshop, Illustrator… Nhiều kiểu ngu đến mức không tự hiểu ra được ngu chỗ nào!
panorama
Hồi đó, không nhớ là năm nào, xài cái iPhone 4S (dạng cũng rất hiện đại lúc đó) chụp ảnh panorama, chất lượng tệ, không hài lòng nên đi mua cái Sony NEX5R, chiếc máy ảnh không gương lật đầu tiên, chụp panorama khá tốt. Hôm nay thử dùng chỉ 1 cái iPhone 7 cũ rích chụp pano thử xem, cho ra một cái ảnh 15000 x 4000 pixel (chờ ảnh load hơi lâu), má ơi, đúng là mình lạc hậu về công nghệ thật rồi! Haiza, đúng là thời thế, công nghệ đi quá nhanh, đẹp hơn hẳn máy ảnh chuyên nghiệp ngày xưa!
P/S: nói có vẻ ngược đời, nhưng từ xưa giờ vẫn quan niệm rằng: tôi chẳng cần phải biết cái éo gì về công nghệ cả! Tôi chỉ biết về kỹ thuật (techniques) thôi! Vâng, nói rõ ràng như vậy! Tôi chỉ biết những mánh mẹo, kỹ xảo lập trình xa xưa, những thủ pháp cấu trúc dữ liệu, tối ưu hoá li ti, thời của “programming pearls” – những viên ngọc lập trình ấy! Coder giờ toàn ở “trên trời”, công nghệ này kia, AI, Machine learning, Big data, nói như vẹt, chỉ có điều mấy cái “căn bản” lại không biết!

Ảnh lớn, cuộn theo phương ngang để xem.
coastline paradox
Benoit Mandelbrot xuất bản một bài báo trên tạp chí Science năm 1967, đặt ra một câu hỏi mới nghe có vẻ rất ngây ngô: Đường bờ biển của nước Anh dài bao nhiêu?
Giả sử ta dùng một cây thước dài 1 km để đo đường bờ biển, cộng lại với nhau thì được chiều dài ‘x’ km. Nhưng nếu dùng một cây thước khác, có chiều dài ví dụ như 100 m để đo thì lại được một chiều dài khác lớn hơn, ‘y’ km. Đơn giản vì cây thước 1 km là một xấp xỉ rất “thô”, ở giữa khoảng cách 1km đó, đường bờ biển không phải là một đoạn thẳng.
Dễ dàng nhận thấy, nếu dùng cây thước càng ngắn, thì chiều dài đo được càng tăng, và nếu chiều dài cây thước tiến dần về 0 thì chiều dài đường bờ biển tiến dần về vô hạn. Đây gọi là “nghịch lý đường bờ biển – coastline paradox”, và cũng từ đó (1967) xuất hiện một nhánh toán học mới, gọi là hình học fractal, nghiên cứu những loại đối tượng đặc biệt, như ở đây là bản đồ nước Anh, một đối tượng hình học có diện tích hữu hạn, nhưng chu vi… vô hạn! Đây là chủ đề yêu thích của tôi những năm cấp 3 và ĐH.
Vì nó liên quan trực tiếp tới đồ hoạ máy tính (computer graphics). Gọi là “nghịch lý – paradox” vì nó đi ngược lại với “trực quan” của chúng ta, qua đó nói lên rằng, những gì chúng ta suy nghĩ bằng ngôn từ, đôi khi chỉ là sự lừa dối, một sự lừa dối khó nhận ra vì suốt bao nhiêu năm, cách suy nghĩ của chúng ta bị đóng trong một cái khuôn máy móc! Một câu hỏi tưởng chừng đơn giản, ngây ngô nhưng trả lời nó lại không hề đơn giản! Riêng về đường bờ biển VN, nếu đo bằng phương pháp VN thì nó dài khoảng 2400 km, nếu đo bằng cách của Mỹ thì nó dài khoảng 3400 km, còn nếu đo bằng “toán” thì nó… vô hạn!
Có điều gì rất “Phật giáo” trong phép đo này, chiều dài của một đối tượng hình học không phụ thuộc vào “các định luật vật lý hiển nhiên”, mà ngược lại, nó lại phụ thuộc vào cách chúng ta đo nó! Nói nôm na, phiên phiến là… “tâm” nó tới đâu thì “tầm” (chiều dài đối tượng) tới đó. Chiều dài của một đối tượng “hình học Euclide” đơn giản đôi khi nằm ngoài “nhận thức thông thường” của con người!
vở sạch, chữ đẹp
Vở sạch, chữ đẹp… Một số có thể thắc mắc, vì nó vừa giống chữ viết tay, lại vừa không giống. Giải thích một tí, đây đúng là chữ tôi viết, dùng cây bút điện tử trên iPad! Xem thêm các posts với tag “inking”.
algorithms
Một phần quan trọng của 4 năm ĐH nằm trong cuốn này. Sách ngoại văn bìa cứng, bản in đẹp giấy tốt, đồng giá 50K/cuốn. Những năm 199x, FAHASA nhập sách ngoại về, bán chẳng ai mua, canh me đi qua lúc nó sale off, xúc luôn một lúc cả chục cuốn, từ Algorithms, Data structure, Computer graphics… cho đến Algebra, Advanced Calculus, Statistics, Mathematical Analysis, etc… Cũng là lý do tại sao thuật ngữ Toán, Tin… ko hề biết tiếng Việt. Cũng chưa thấy cuốn sách Tin học nào hay và bổ ích như cuốn này. Nói cho đúng là cái cách hành văn khoa học tiếng Anh của nó ám ảnh mình, ít khi thấy được một cách hành văn hay, súc tích, dể hiểu đến như thế, cộng thêm minh hoạ cực kỳ xinh đẹp.
Nếu nói mức độ hiểu vấn đề nó thể hiện qua khả năng diễn đạt, trình bày lại để cho người khác cũng hiểu thì tác giả cuốn này đúng là siêu đẳng! Về sau phát hiện ra, cả thư viện Đại học Khoa học Tự nhiên cũng chỉ có đúng một cuốn này, mình có riêng một cuốn! Không có thói quen đọc nhiều sách, theo mình, cả ĐH chỉ cần đọc chừng 3, 4 cuốn, và cả cuộc đời chắc không cần đến 20 cuốn. Đọc nhiều phí hoài tuổi xanh đi! Dự định sau này mình sẽ đóng cái kệ sách cao đến sát trần nhà, bỏ bớt những cuốn không đọc lên trên cao để không phải đụng đến chúng! Sách hay thì ít như sao buổi sớm, mà sách lôm côm lại nhiều như… lá rụng mùa thu! Sau bác nào đó thấy sách ngon, mượn ko trả, tiếc đứt ruột!
the man of wisdom delights in water…
智者樂水
Written with a Bamboo stylus on iPad, using my inking mentioned earlier! A quote from Confucius’ Analects, and its partial, literal equivalence in English on this post’s title. Looks like there’s still lots of space for improvements on creating real, good looking strokes (for Chinese round brush and other kinds of brushes). Really discontent with my Chinese handwriting, it’s never been good enough for me, it’s been degrading greatly over time without practicing! My handwriting reflects my messy, chronically — undisciplined character!
inking
My proudly – announced achievement for the last 6 working months, now is a registering (pending) patent in the U.S. It’s about create inking effect to handwriting on iPad (ideally with a stylus): you can apply many pen styles: ball pen, fountain pen, calligraphy pen, Chinese round brush, and different levels of ink wetness. You may have seen my handwriting in several – previous – posts, but this is completely different, a big step forward, much more a realistic look like ink on paper. You need to see it in action to witness how interesting the “beautification effect” it is!
Different pen styles:
Different ink wetness:
Another writing example, a poem in both Vietnamese and Chinese:
And now, a real world application, my new year greeting card, hand – written on iPad, printed on paper, with my signature and personal seal on it. Old vintage things are not to be perished, they just come back in new neoclassical forms, to have “inflated”, “degraded” contemporary values reprimanded!
styli
I was playing around with some iPad’s styli lately: the Wacom Bamboo stylus, TruGlide, Adonit Jot, Adonit Jot Touch, Jaja, Cregle’s iPen and ByZero. I’ve been loving the smoothness of Bamboo, but TruGlide is really an excellent one! The new Adonit Jot Touch seems to be promissing, and on the second position is Jaja (for pressure sensitive styli).
wwdc 2012
It would start within a week from now, the well – expected event of Apple’s world – wide developers conference of 2012 – WWDC 2012. To welcome the tech fair, on the left is a screen capture of what I’ve been working hard on for the whole last month (the video is not really clear since it’s shot with my phone), a photo browser UI like iPad’s Photos app. It takes time to learn insights into Core Graphics, Core Animation, and I’m still learning. For all those years of graphics I’ve been through, Apple UI and its graphics sysem are still sooo… brilliant and amazing to me! (and “our love has just begun”!) Keep heading North!
chuyện tình tự kể
Ngày nào, cho tôi biết, biết yêu em rồi, tôi biết tương tư, sau đây là câu chuyện tình tôi tự kể, ngày nào, biết mong chờ, biết rộn rã buồn vui đợi em dưới mưa…
Chúng tôi quen nhau tính về thời gian chưa phải là quá lâu, chỉ một vài năm gì đó. Nhưng nguồn cơn, nguyên do câu chuyện có lẽ đã được vun vén, manh nha từ lâu rất lâu về trước, tôi thương em dễ có từ thủa mẹ về với cha
.
Những lý do, ngọn nguồn chẳng thể nào mà giải thích và truy nguyên cho được đã dần đưa chúng tôi lại với nhau tự lúc nào. Tình yêu nào rồi cũng sẽ đi qua nhiều thăng trầm, đã có lúc tôi cảm giác chẳng hiểu gì về em, nhiều khi sự khó khăn của em làm tôi nản chí, cũng có khi tôi đã hoang mang, nghi ngờ em và chính mình.
Nhưng với tình cảm chân thành, bằng trực giác tự nhiên mách bảo, chúng tôi đã vượt qua nhiều sóng gió, để đến một ngày: ngày nào, cảnh thiên đường, đã mở hé tình yêu là trái táo thơm, tôi ghé răng cắn vào…
Đến đây thì hẳn các bạn đã đoán ra nàng thơ của tôi tên là… Apple – hiện diện trên các MacBook, iPhone, iPod, iPad xinh xắn!
the new ipad
Just got the new iPad (or we called it: the iPad 3) in hand today and I’m stunned by it’s new retina display. There’s not such a fever like when the iPad 2 was released, I guess since the new iPad is almost identical to iPad 2 in appearance, people will consider about the fact that they won’t be able to show it off. In term of general performance, iPad 3 does not stand out to the previous iPad, or it could be worse in term of 3D – OpenGL performance according to some reviews. From a programmer’s point of view, this could easily be understood since doubling the resolution means 4 times the memory and processing power for each graphics API, which also means Apple has been pushing things over the Moore law’s limit!
Personally I’m not really a passionate fan of these Mắc – Xinh – Tốt ⓵ (Macintosh) assets, but professionally as a computer – graphics coder, I’ve always admired the prestigous 2D graphics tradition come with Apple’s products. Back to the retina display, on the left is a reduced – size screenshot of this blog taken on the iPad 3 (see full version here, it would take some times to load).
2048 x 1536 is a huge resolution that does magic to the vector things, e.g: displaying fonts! Not only the screen is much sharper, even at first look, its color tone appears to be truer, and the new iPad gamut covers 44% more into the sRGB color space compared to the previous iPad. The second picture: funny capture of Walter Isaacson’s Steve Jobs autobiography put on – top the God of Wealth’s altar in our office!
⓵⏎Mắc – Xinh – Tốt: a phonetical transcription of the name: Macintosh, which is a play–on–words, Mắc means: expensive, Xinh means: cute and Tốt means: good in Vietnamese.
ios-widgets
Having written myself numerous UI widgets, from simple to complex, from Windows to Linux, from 2D to 3D… but I’ve just started writing iOS widgets not too long ago. Making iOS widgets is really fun, for we have supports from the most powerful 2D graphics system ever built, that is CoreGraphics (Quartz 2D). The code, hosted on github, is released under MIT license, check it out for a demo project, I hope that these widgets would be useful somewhere, but yes, I know, don’t complain about the code quality, most is written in a rush and still have flaws in it, use at your own discretion!
1. XFilePathHeader
This tabular header let you quickly browse a hierachy structure (like file system directories). The levels are shown as tabs, tap on a tab to jump to a parent folder, tap on the “Home” icon to jump to root folder.
2. XSegmentedControl
The Apple’s standard UISegmentedControl only displays text, not image. This class lets you use image along with text (or image or text alone) in any orders (image then text, or text then image).
3. XProgressTextField
This is a copy of Safari’s address textfield which shows a progress bar while the webpage is loading. Would continue to add more of these miscellaneous tiny widgets just for fun when I have time.
handwriting
This is part of the really fascinating broader concept of neo – analog
as mentioned in a previous post. Below is my handwriting with a stylus on my iPad (click to see large version), not too bad after 10 years of solely keyboard and mouse, not pen, right? Also, I’m quite excited with the coming Kindle touch (which should be delivered at end of the month). My thought is that it’s just a matter of time before e – ink would have color and refresh rate capabilities near those of conventional displays, and serious applications would be feasible within the vintage look and feel of e – ink!