2009年11月19日 星期四

未來的『人類』科技(一)

有多少人會相信魔鬼終結者的世界會成真?智慧會從石頭裡蹦出來嗎?


比起有一天人類會以技術打造出純粹無機的智慧生命,我覺得我們會更早打造出與人類Hybrid的『混和物』出來。有機化學、分子生物學跟奈米科技的差距並沒有想像中來的大,人機介面的開發與進展,將很有可能大大地改變人類生存的方式。

想像一下以下情境:
盲人有一天可以透過新的電子眼接收影像,而處理視覺訊息的大腦區塊是採用幹細胞誘導技術『打造』出來的。
某種特殊的奈米元件透過自體組織培養技術消除抗原反應後,可以安全的注射進人體不產生免疫反應,目標先照過核磁共振描繪出生體藍圖,再穿上緊密貼合人體表面的定位衣準備對注射進人體的奈米元件進行『電波誘導』,被誘導的奈米元件經過自組織後著床在特定生理區塊即形成『奈米地基』,之後數波注射進去的奈米元件即可根據在前批構築起來的基礎上以特殊的酵素端子或誘導訊號繼續架構。
以這種方式,人類就可以把各種可能的裝置元件無縫的植入到人體裡面。想像一下,人的眼睛可以看到熱紅外線、耳朵可以收聽電波頻道,而只是觸摸或是貼上一個電極就能跟身體外部的運算、執行裝置做直接溝通。醫療用途上,骨折可以用陶瓷、碳纖維奈米元件直接接合,一個星期就可以出院強度還加倍。面對未來的超級電腦加上奈米機器大軍組合起來的超級多工處理能力,全身擴散的癌症細胞將面對可以每秒開2000臺微奈米級手術的奈米機器人醫生。而持續埋在老年人身體裡的監控系統也將透過居家電腦與醫院連線,新型感冒、流行病、毒物的抗體抗原監測、突發性血管栓塞抗凝血劑直接投入、無徵兆大量內出血阻截都可以自動執行。

這套裝置如果用用在腦部,人機介面就可以從機械式的操控進化到化學、電子式的操控。
奈米單元分散在整個腦部,就可以當成控制點,對腦部各部位以三角測量的方式定位出相對座標,同時透過被動電磁波偵測或是對人體既有的大型訊息傳遞線路-脊椎神經做訊息截聽,都可以做動作行為的預測與確認。由於靠近皮膚的元件可以跟外部的運算裝置做無線溝通,內部網路本身並不需要太強大的運算效能,很可能只是個可重新活化的奈米級生物晶片矩陣,使用體內的化學環境做運算。(待續...)

2009年11月8日 星期日

舊文:關於平等2006/04/29

在古代,窮人是完全無法想像真正有錢人的生活的。一個要飯的乞丐是無法想像娶了一打姨太太,家裡一兩百名傭僕的大戶是如何生活。
然而在現代,拜科技進步、媒體與資本主義發達所賜,不管吃的、穿的、住的、用的、有錢人能玩得到的我們通通都可以Google過來瞧瞧。而商人們也無所不用其極的想要將這些高價奢侈品賣入百姓家,來賺取更多利潤報酬。
也許我們的確一輩子也賺不到這麼多錢來享受這些,但是看得到就覺得不能擁有這些的自己很渺小、很失敗、覺得人生能作的"有限"的話,我想那不是命運殘不殘酷的問題,那是個人修養到哪裡問題。

的確這個世界不平等,的確不是每個人都有相同的機會與天賦。但是"大家都有一樣的起點"從來就不是這世界應該要有的東西。這樣的認為與抱怨,不過是人太過自我感覺良好的一種傲慢罷了。

在物理學實驗當中我們知道要讓一團氣體裡頭所有的分子都處於相同能階態是多麼不可能的一件事,我們也知道要產生出一團光子都同頻且朝單一方向行進有多困難。

這些都不是自然界有的,光阱才有可能讓幾顆分子同能階而雷射則是人為激發出來的,這些都是人類用智慧創造出來的東西,換言之,都是人們努力得來的成果。

我們活著的世界,也是人們努力出來的成就。

舊文:論平等與自由 2006/05/07

自由是太過抽象而沒有定義的東西,從某個觀點來看,那是人類的幻覺。
從來沒有人能脫離慾望達到自由而還擁有做任何事物的動機。
從來也不存在完全脫離理性控制的自由,事實上,你完全脫離了理性大概就是完全的被慾望支配。

如果同時失去了這兩者,靈魂還可以剩下些什麼?

所以,在理智表層底下的慾望,受到外在環境的觸發或背景資訊處理的事件回應,不時的生產作為各式各樣行為的動機,最後受到理性的控制真正的發生行為,說不定就是吾人思想所擁有的全部了。

自由可能只是對於這種結構的不夠深入瞭解而產生的錯覺。

平等則是價值判斷的問題,除非眾人在同一件事情上都有相同的價值觀且以該價值觀觀之,所有人目前所處狀態皆相同,才能說這群人在這個問題上是平等的。

人們誕生自不同的土地,說著不同的語言,以不同的文化養育。最後,環境中不同的因果緣法將之塑造成不同之人...

命運相同的人只有一個,因為命運指的是一個人從出生到死亡一整個連續的時空地點所構成的世界集合。命運跟個人的定義是綁在一起的。

如果沒有完全相同的命運,何來相同的價值觀?
人既然只能有不同的命運,就只能有不同的價值觀。
而不同的價值觀底下,何來比較與公平?

在不同價值體系下的同一實然事物,並不必然具有相同的應然標準。
在不同的標準下作比較,也只是浪費時間而已。唯一存在的,就只有價值的載體(也就是個人)彼此間力量的相較了。

而力量有很多種形式,在人類社會裡頭最強的力量就是規範。舉例來說,法律與道德。

法律與道德,就是巨觀下社會作為一個體,其所相信的價值。而社會的力量即稱作權威。

面對這樣的權威,不去順從的就會被社會組織排除掉。
中古世紀不相信教廷的都會被當成異端而被全歐洲獵殺。在現代美國社會,不相信男女平等價值的會被告性別歧視而賠上大筆金錢。

從這點來看,人類世界就是眾多的意念載體粒子彼此交流、碰撞所呈現出來的圖像。

舊文:理性與感性 2007/05/13

當我們對一件事情有所主張的時候。
是藉由客觀理性去假設、分析,取得『何為實然』的背景。
再經由主觀意識來權衡價值輕重,獲得『何為應然』的結論。


西方哲學家說:
『對於不可言說之物,你只可保持沉默。』
『務須把能說清楚的說清,而不能言論的,就讓清楚的部份去澄明其輪廓。』

也像東方的山水藝術:
『畫木、點石、描遠山, 一切風景自在飄渺間。』

所以,雖然『留白』本身是不能描繪的,但若連『可以著墨』的部份都不能恰如其分的表現,那麼,喪失了希冀賦予的意義,白,也就是『無』了。

理性,也就是把握住真實的繪畫技巧。

對一個無法良好掌握理性的人來說,個人的主張常常是一時的衝動、激昂,而所謂『理性分析的結果』也不過是情緒上捍衛個人定見的自圓其說而已。

失去理性,也就無所謂對善惡、價值的區別...要瞎子討論顏色是無意義的。至於人活在世間的一切美好也就與醜惡混雜一氣而無從感受起。

2009年11月7日 星期六

如何幫助你的使用者成為最好的

如果你要經營一家公司,或者,你要加入一間公司,你應該好好看看這篇

http://www.globalnerdy.com/2009/10/17/its-about-helping-your-users-become-awesome-or-being-better-is-better-by-kathy-sierra/

如果你不幸或極幸運地是個軟體開發者,你該看看這位CEO這十年來做些什麼。

http://www.joelonsoftware.com/items/2009/11/01.html

2009年11月3日 星期二

NoSQL:一群 開源、叢集而且討厭RDBMS的人的聚會

NoSQL是一個社群,積極思考如何架構一個Open Source, 叢集, 採用非關聯資料庫的系統架構。

這次聚會裡面介紹了很多很棒的東西,詳細內容可以看看這篇文章:
http://blog.oskarsson.nu/2009/06/nosql-debrief.html

(話說回來我一直很討厭ORM,現在可好,有人給我很好的藉口拉~)
以下是主要的聚會議程:
Presentation slides and videos
Intro session - Todd Lipcon, Cloudera (slidesvideo1video2)
Voldemort - Jay Kreps, Linkedin (slides pdf pptvideo1video2)
Cassandra - Avinash Lakshman, Facebook (slides pdf pptvideo)
Dynomite - Cliff Moon, Powerset (slidesvideo)
HBase - Ryan Rawson, Stumbleupon (slidesvideo)
Hypertable - Doug Judd, Zvents (slides pdf pptvideo1video2)
CouchDB - Chris Anderson, couch.io (slidesvideo1video2)

VPork - Jon Travis, Springsource (slidesvideo)
MongoDb - Dwight Merriman, 10gen (slidesvideo)
Infinite Scalability - Jonas S Karlsson, Google (slides, video)


其中有Linkedin喔。

我的個人心得是,RDBMS有他強大的地方,但這些強大不見得是系統真正所需要的。
我們常常需要的不過是一堆的one -to-many關係的超級大Table,可以裝下超級多的資料,承受超大量的request per second。
Foreign Key真的是必要的嗎?在實際運轉的系統中,實在很少聽到資料庫的資料是可以刪除的。
ORM真的是必要的嗎?在Concurrent programming的世界裡,取回來的Mode通常只活了一個短短的request,Collection Data幾乎只用來Read,而對這個Model的任何Entry做Data Update常常不是一個簡單的操作,而是許多操作、資料檢核所構成的交易問題。
其實『資料庫網路應用程式』可以很不簡單、很豐富、不只是Table CRUD而已。

2009年10月28日 星期三

The Rules of AJAX Web Application Design - Part 1

Because I'm a Taiwanese, So I'll try to keep my blog in two languages, English and Chinese.

After more two years working in ZK, I think I'm quite good at how to design an Web Application based on Java technology,  although I'm still not familiar with Javascript, He~ He~.

Using ZK to build a Website is very simple, you write a XUL-like xml file(with extension .zul) to describe page structure, then you add event-listening method in controller, sub-class java file or even in zul file as some kind of sever-side script. finally, Inside event-listening methid you operate widgets and trigger business logics do make something really happen.

But, it's simple doesn't means it's easy, to build an AJAX Web Application would never be easy if you don't have enough knowledge and experience of the differences from plan-old HTML.

About knowledge I GOT NOTHING to say, you JUST NEED TO KNOW the very detail of Markup Language, browser, HTTP, app server and the programming language that you choose. ZK in here is YET ANOTHER AJAX FRAMEWORK, so it won't help you to make them easy, nor GWT or JQuery. All of them will torturing and fool you around before you have solid base knowledge.

Role No 1: 1024 * 768 No longer to be the limitation.

In traditional page based dynamic web programming(like ASP, PHP, JSP), the most popular resolution that user had in there screen had limited(not complete yet...)



算是把這兩年來一些做開發的心得給整理一下吧?
可能的話,打算給個三部曲之類的東西。


心得一: 1024 * 768 不再是網頁大小的限制。
傳統的Page Base網頁,螢幕解析度是多少頁面元素就是多少,跟堆積木一樣,1024 * 758 的畫面就是塞不下面積和超過的元素。
但是在AJAX網頁裡面,透過動態Layout元件(layout, tree, group, listbox)的幫忙,畫面可以被Flip, Swap, Collapse, popup, 我們在單一頁面空間裡能塞進的元素、功能都爆增了。

  • 透過 Collapsible,我們可以在需要的時候滑出特定Panel呈現功能介面。
  • 透過頁籤,我們可以將多個Tab疊在同一個Panel裡,每個Tab放各自的東西。
  • 透過Tree,具有Hierarchy特性的DataModel可以不佔空間的呈現其結構。
  • 透過popup,我們可以隨時使用一個佔據整個畫面中間的Dialog呈現非特定的操作介面與訊息。
簡單的說,網頁從2D 變成了2.5D。


心得二:Browser Request's Response的資訊量管理比以往都更加重要。

在Page Base的時候,一個頁面能夠呈現的資訊量有限,而網站不同的操作介面會透過Hyperlinking切割到其他的Response的結果裡,所以單一Response裡server需要初始化的項目不多、一個畫面需要載入的元素也不多。

但是切到AJAX這個2.5D概念的世界之後:
  1. 更多的Business Object, Service initialization需要被執行。
  2. AJAX元件的overhead一定比陽春的HTML高。
想像一下一個有著超過15個Tab的頁簽,平均每個Tab需要啟動一個Service、包含 200個 Components的AJAX 網頁(也許是做ERP系統),沒有使用任何Lazy-loading的技巧,也不透過Hyperlinking做切割,這個單一Response的資訊量會是驚人的。

期待一個Response要Provide的資訊量有多大,那麼Server-side要執行的運算量就有多大、

一個AJAX網頁做的越複雜,Browser的運算負擔也越增加。

(不要忘記HTTP就是HTTP,HTML就是HTML,而該死的IE6全球還是有超過40%的用戶。)
當Browser Request's Response的資訊量開始產生Responsiveness的問題時,如何在可接受的範圍內不損及Usability 將這個資訊量切割到不同的Response裡,就是開發者的責任。
客戶用的瀏覽器越爛、網路越慢、server等級越差,就越考較開發者架構設計上的資訊量管理能力。
以下是一些常見的技巧:
  • Lazy-loading:將特定區塊的UI 元素以AJAX Request延遲載入到畫面上,這可以降低Browser Request latency。
  • Paging:對於Collection Component的呈現筆數進行限制是必須的,想要一次把10000個AJAX Component load到頁面上並不聰明。
  • Hyperlinking:不要AJAX過頭,有些開發者一開始AJAX之後就覺得用Hyperlink有罪惡感。HTML就是HTML,Hyperlink在阻隔不當操作、區分狀態、降低單一頁面Controller的複雜度、支援SEO是非常管用的。
  • Remove Unused Elements: 元素加得上去也可以拔得掉,可能已經不用的AJAX元素可不可以先拔掉,以後要用到再接回來呢? 



    2009年10月25日 星期日

    開放原始碼是很重要的

    之前在網路上與別人討論關於開發平台的選擇時。
    聽到有一派的人他們的說法是:
    『絕大部份的使用者並不會在意是不是 Open Source,
    甚至連是用什麼語言寫的都無所謂, 終究對於使用者來說,好用才是最重要的。』
    這段話衍生的意思似乎是:
    『所以開發者也不應該在意是不是 Open Source,一切以實用為觀點就好。』
    個人認為,使用者就短期而言可能不該在意,但是開發者以如此態度面對這個問題卻是不應該。
    就算是對使用者,『好不好用』很重要的沒錯,但也並不是唯一重要的。 人們追求『可計算的好用』時,得要損失多少他們不去計算的附加價值與機會成本呢? 而這些東西可以說就是一個專業開發者所應該為客戶思考的。
    而單就『最好用』來說,目前的通用開發平台以長期智慧投資而言,開放平台具有私有平台有更好的競爭優勢。
    我們考慮幾個事實: 
    最有效率、最能高度客制化的作業系統、Http Server不是私有的。 功能最強、最快的通用網路UI平台(Browser)不是私有的。 最前沿、最有價值的商業模式創新,早就離開了私有的平台。 就連手機這種容易被綁標的系統,開源的平台也逐漸的拓展進來了。 
    目前大概只有具有悠久歷史、功能成熟的單機大型應用軟體還是私有的比較好用。 況且,開放原始碼最大的重要性在於創造新的社會價值、規範體系,為即將到來的知識經濟社會結構建立基礎。而不只是它很多人參與、很強大、可以踢像Microsoft這種公司一腳而已。
    勞工離開了資本,起碼還留有技能去下一個資本家那裡繼續生產。

    可是知識工作者從前人習得了許多智慧,終於要開花結果的時候,其成果卻有可能要為私人所獨占,不能再成為他人思考的基礎。甚至發表相關論文、談話言論的權利都有被剝奪的可能。
    我不認為這是一個基於民主價值規範體系的社會所樂見的。
    舉例來說:

    如果有人寫出,基於XXX演算法所能寫出來最有效率的程式碼。那是不是從此以後這個人離開了公司,就再也不能去寫相關演算法的程式,也不可以在Blog上討論這門技術的相關細節,不然就要面對前公司提告的風險呢?如果這樣,是否知識經濟的社會將比工業經濟的社會帶來更大的不平等、更多的壟斷?
    今天我在公司寫程式,難道明天我出去其他地方,同樣的知識概念就要被禁用嗎?
    我為了公司的需求寫程式,並不見得代表我從此以後就得把我運用知識的權利賣給公司。
    話說回來,對一個法人而言,如果知識財產的保障過於薄弱,公司的獲利基礎又該建立在什麼樣的方面? 組織創造、創新的報償又要如何實現?
    以消極面而言,到底是誰侵害誰,是員工瓢竊公司財產,還是公司剝奪員工、社會使用智慧的權利,誰該禁止、如何懲處,孰輕孰重實在難以釐清。
    到底,軟體智財所要保障的財產權對象該是誰?是個人、軟體公司、還是社會?
    我相信,在這裡,開放原始碼運動提供了一種新的遊戲規則。
    開發者與軟體公司之間透過對於軟體產品賦予由公認第三方所建立的開放原始碼授權,即建立了一社會契約,在這契約中公司獲得主導開發方向的權利,並得益於內外部開發者的產出、社會獲得智慧的流通與再利用、開發者透過身為社會的一份子,獲得延續個人智慧產出的權利。

    在這種模式下,軟體公司不再能透過授權獲得大量利益。但仍然可以透過客戶服務、系統應用服務來獲取利潤,同時若能建立起基於新的商業模式的軟體應用服務,賺取鉅額報酬的可能性仍然存在。




    2009年10月19日 星期一

    開發ZK Forum的心得感想

    這兩個月以來跟Junior一起把ZK Forum重新寫過。

    收穫是:

    1. 果然有很多東西得要實際用下去才知道怎麼回答。
    如果只拿ZK 寫教學、Consulting用的還是測試用的程式,是不會發覺這些問題的。
    公司如果要增強Consulting的實力,打通客戶從採用到開發完成的門檻,減少ZK在實際開發應用上的一些問題(例如:Serialization, Clustering)做專案確實是很必要的,就算自己不做,最好也要有廠商可以長期合作才行。

    2. 公司內部的知識分享交流效率很重要。
    這次帶了三個Junior來寫,其實自己主要的工作變成是在訓練他們,而不是開發軟體。
    感受最深刻的是,跟他們綁在一起用同一台電腦工作後,才發覺一些自己覺得理所當然的東西其實並不是大家都知道的。Junior們最大的問題就是還不能清晰的在頭腦裡建立起模型,這使得他們在思考解決方案時,常常會選副作用很大的快速解。
    在這樣的團隊組成下,知識、訊息的分享交流變成最主要的任務,一個人犯的錯要可以變成大家的經驗。而程式碼Code Review的比例提高則是無可避免的。以這次專案來說,幾乎要達到60%才行。


    3. 比起單純的懂得ZK,我們更需要熟悉其他Java世界的知識。
    我們需要很多其他知識: 例如Hibernate, Spring, JBoss Seam, Tomcat 調校...
    這個專案讓我發覺自己在這一塊是缺乏的,還不夠好。一些設計上的錯誤花了我相當多的時間去重新調整。從Consulting Service的角度來看,客戶常常需要的是一個package而不是單純的ZK ,只講ZK大部分的客戶是不知道怎麼介接其他世界的。

    4. 我們需要界定list出許多常見議題,並建立Best Practice。
    沒有人有耐心,大家都希望清楚明確的答案可以彈指獲得,想像得到要考慮的議題都已經有人深入思考過。開發一個需要實際Production上線運轉的系統這些問題才問得出來,能夠先客戶一步去思考。

    5. 專案管理能力有待加強。
    特別是時程,還有規模。要訂定一個2個月時程大小的系統開發時程,我的能力還相當不足且不穩定。