Archive | gossip RSS for this section

nuance

很久以前看英文的技術書時學到「nuance」這個字,查字典的解釋是「細微的差別」,例如音調、顏色、見解等細節的不同。 我喜歡這個字,是因為這個字代表每個個體的獨特性。以音樂來說,貝多芬的第九號交響曲的樂譜只有一種,但是不同的交響樂團,不同的指揮家,甚至不同的音樂廳,演奏出來的感覺都不同。而這些不同的版本就有個人喜好、意境的不同。節拍快0.1秒、音符修飾的1/100差異等等,這些用科學統計方法來看,不具顯著性的差異,但是卻能表現出不同的風格。例如福特萬格勒在拜魯特的貝九就被視為是經典詮釋。 有的指揮家認為,要完全遵照作曲家在樂譜上的指示,忠實的呈現出來,貫徹作曲家的意志。但有的指揮家覺得,樂譜有其表達力的限制,應該要適時揉合作曲家的作曲背景,並由指揮/演奏去詮釋作品。但不論是哪一種,都要有一定的能力才能達到。 我是Leica M相機的愛好者,這款高品質的德國相機,堅固耐用,功能非常少,他僅有的功能都是讓你能專注在「拍照」這件事上。用Leica M拍出來的照片,優異的暗部細節和寫實性,讓我非常的喜愛。看習慣用Leica M拍的照片之後,看一般的照片就會覺得「少了很多細節」。有些人看不出細節差異,但是我剛好是看得出來的那種。 回到軟體開發上面,「nuance」這個字就更重要了。軟體開發雖然是一種「創作」,但是本質上和「演奏」比較像。演奏要以「樂譜」為本,加上演奏者的詮釋。而軟體開發也是有一個目標,例如「需求」,再由開發者去詮釋。但是這個目標不像樂譜,有非常明確的規範,所以開發者能夠發揮的空間非常的大。就算再詳細的設計文件,在真正實作時,還是有一大段空間要填滿。 例如,我想做一個線上購物網站,這是目標,但是在作出來之前,沒有人知道這個網站將來會長什麼樣。就算網頁看起來一模一樣好了,也許背後用的技術完全不同,也許scalability不同,也許performance不同,也許cost不同。而這一切一切的不同,就是由許多開發時的選擇累積出來的。這些自由選擇(詮釋方式),就是我所說的軟體nuance。 所以,軟體的開發者、設計者、架構者所作的大大小小的選擇,也就決定了這個系統的個性。和音樂一樣,在達到一定水準之後,沒有絕對的對錯,就只有「品味」(或喜好)的問題了。例如:貝九我可能比較喜歡卡拉揚的版本。 對軟體工程師來說,要有能力控制nuance,就必需要不斷增加見識廣度和技術深度,也要保持一顆熱情開放的心,願意嘗試新的東西,不能習慣於過去的作法。我的經驗是,我以為我已經看得夠廣夠深了,在和不同領域的人談過之後,我才發現自己看得太少了。同時,也要能培養出辨別「nuance」的能力,要知道作這個選擇會有什麼影響。 品質,是由許多小細節累積而成的,讓我們一起勉勵!

Continue Reading

blue pill or red pill?

真的很久沒更新了。 標題又是用The Matrix裡的梗,可是圖都有版權的,不能用。 工作繁重不能當作藉囗,有辦法的人還是能有規律的產出新内容。像Jamie Lin,現在每天一篇啊,會不會太厲害了一點。 要寫blog,就像駭客任務裡的莫非斯給你的選擇。你可以選擇藍色藥丸,繼續過習慣的生活。或是選擇紅色藥丸,很辛苦地試著對生活進行革命。Your choice。 沒錯,革命哪有不辛苦的。寫第一本書的時候,我採用硬撐的方式。把睡覺時間拿來寫稿,沒錯,結果是出來了,但是畢竟不是長久之計。身為hack everything的人,不能繼續這樣作。 所以,要工作、要休息、要看資料,要陪家人,還要寫作,這到底要怎麼作到?別急,我也在試,總會有辦法的。 總之,是到了繼續的時候了。和之前說的一樣,我會把新書的內容,用blog的形式發表。每一篇都可能不完整、沒有前後文、鬼打牆、或是不通順,都是屬於正常現象,請小心服用。 除了原稿,我還必需建立幾個open source的專案,作為工具和framework。所以真的是大工程,有點像挖坑給自己跳。的確,追求完美的性格又發作了。 對我要寫的內容有任何疑問和建議,都可以提出來,我會參考。但是不一定有時間回應,因為我要繼續前進。發表過的內容也可能重新改寫,所以如果你覺得這篇和你之前看的不同,就忘了過去吧,現在的比較重要。 又到了最難的結尾了,這裡有一個facebook自high粉絲頁好少人的,有需要就按這個讚(遞)。

Continue Reading

Why Blogging

常常沒有人問我, 為什麼要寫blog? (沒錯, 是”沒有人”, 這句只是為了學各大blogger常見的開頭…) 請看Jamie的: 你必須開一個網誌,現在. 其實最早也是Jamie鼓勵我寫blog的, 我常常說, 沒有Jamie, 就沒有這個blog, 也沒有出書, 也沒有今天的我. 在這裡說的blog, 不是給自己和認識的人看的, 而是為了這個世界創造更多的價值, 不論是自己, 讀者, 或整個與你相關的環境. 像我是軟體工程師, 我可以把我的經驗分享出來, 讓有需要的人, 可以很快的找到方向. 這樣一來, 不但為別人創造了價值, 我自己也增加了無型的價值. 所以, 各行各業都可以寫blog, 不論目的是什麼, 你都可以造成一些影響. 這在網路還沒發達之前是不可能的事, 如果你對現在的媒體很不滿, 那網路就是你最好的發聲管道. 我要很明確的告訴你, 寫blog絕不是一件簡單的事. 如果沒有決心, 那就把它當成休閒就好, 不要期望寫blog能帶給你什麼額外的回饋. 每天上班就已經快累死了, 回到家只想休息啊. 生活上還有很多雜事要處理: 帳單還沒付, 電腦壞了要修, 車子要檢查. 即使是有空的時間, 我也可能和人吵架影響心情, 生病看醫生, 很多文件/書要看, 要靜下心來整理資料寫一篇有內容的文章還真是難啊! 像這個: 如何辭掉你的工作,改變這個世界,還有人付錢給你. 是很難達到的, 而且也不適合每一個人. 但是如果你想除了每個月領薪水, 還能創造出你和別人不一樣的價值的話, [...]

Continue Reading

Thoughts about Terracotta

Software AG acquires Terracotta 好啦, Terracotta不像Groupon、Twitter之類的受人囑目, 因為這畢竟是阿宅工程師才知道的東西, 被賣了也沒什麼人注意. 我和Terracotta有關是因為很久以前就看到Terracotta的文章, 看他寫得很神奇, 可以把多個JVM串起來, clustering成一個大JVM一樣. 會開始用也是因為, 在EC2上不支援multicast, 而大部份的session replication或distributed caching機制都依賴multicast, 所以開始使用terracotta作session replication. 效果還滿不錯. 只是還沒有試到很大scale. 被買走也算是完美出場了, 這些工程師也可以無憂無慮地再作好下一個產品, 真令我羨慕啊! 做出好用、有人用的東西, 才是我們工程師真正應該作的事. Terracotta bashed 其實我認為Terracotta的廣告很成功, 甚至有點誇大, 所以生意才作得起來. 但是同時我也覺得, Terracotta並不是一個差勁的產品, 而是一個好的產品. 廣告是誇大了點, 但是至少解決了我的問題. 不過大概從2006年起, 只要terracotta有文章(不論是不是像廣告), 大概都有一堆人來圍勦. 就說你這是舊技術換個名詞而已啦, 或是你的scalability很差之類的. 從theserverside吵到infoq, 例如最近的一篇: Terracotta’s BigMemory Aiming to Eliminate Garbage Collection for Java Caches , 就被Gridgain, [...]

Continue Reading

閒聊Google Chrome

勞苦功高的Browsers Web browser 可不是一個單純的application. 一但接上網路, 就有無限的可能. Server端更新功能, Client端就能馬上使用. 而且web application可以是super scalable的, 現在使用者最多的application, 像是facebook, twitter 都是web applications. 如果想要作一個Browser, 可不是簡單起個案子, 請10個工程師弄個2年就可以作出來了. 現在的Browser可是身負重任, 負責現今使用者大部份的網路活動. 一般的使用流程, 就是先去使用者打的網址, 把HTML文件抓下來, HTML文件裡可能有各種各樣的resources, 如: JavaScript, CSS, 圖檔, Flash, Java Applet 等等. Browser要知道應該對什麼東西作什麼事, 該下載的再去下載, 該run的去run一run, 然後把結果render在畫面上. 而且還要有extensions/plugins, 滿足開發者和使用者的要求. 還有還有, Browser還要試著幫忙修正錯誤的HTML, CSS, JavaScript, 以避免粗心的開發者寫個<div><p></div></p> 就整組壞去. 最後, 以上一切的動作都要快! 快! 快! 現代人是很沒耐心的, 一秒鐘是幾十萬上下的啊! 好吧, 光這個規格開下來就沒人敢作了, 所以主流還是只有Microsoft的IE. 沒辦法, [...]

Continue Reading