Risk

01:05上午 十一月 02, 2008 in category Java by ingramchen

風險?在金融危機期間,這可是個閃亮亮的題目。可惜這一篇不是你想的那樣,如果你是對金融危機題材有興趣而誤闖, 那你可以直接關掉了。這一篇仍然跟過去一樣,是一篇科技宅男的思路軌跡、一些理財上零零碎碎想法的小整理。(自 high 文~~)

我對風險這個字開始有感覺,始自於去年開始學一些理財相關的事,之前的生活,就是程式+程式+程式。其實現在還是 (笑)。 那時剛開始接觸,和熱心的同事們一直討論著股市/基金的東南西北,也曾作過靠股市致富的白日夢。不過這白日夢沒幾個禮拜就醒了,原因還蠻單純的, 只是看了綠角的部落格,然後花了一個週末k一本書。相較許多人是在市場中失利,搞到賠光光才恍然大悟。我真的覺得自己幸運到不行。

那本讓我醒來的書是 The four pillars of investing,作者是 William Bernstein。中文譯名叫 "投資金律",雖然中文版已經絕版了, 好在圖書館還借的到。本書提到投資的四個支柱,分別是風險、歷史、心理學、產業。書中一開頭深入討論 報酬來自於風險,這讓我大有矛塞頓開之感。

沒有風險就沒有報酬,更高的報酬來自更高的風險,然而,高風險卻不等於高報酬。

喔喔喔,我真的想大喊 eureka!! 人生在世,遇到這種開竅的時刻真的不多。相信很多人,包括我,遇到了這個 moment,都會像阿基米德狂喜般地從浴室衝出來,大聲告訴世人自己的發現。我剛看完這本也像是瘋子一樣,遇到朋友、同事就狂推薦....... 不過....... 當我轉述 Bernstein 的一句話給朋友:

投資不能賺錢,只能讓你不會變窮

....well, 我很清楚的看到對方臉上三條非常粗的黑線.... "風險" 和 "賺錢" 這兩檔事,大部份的人都會想聽後者吧? 長期推廣被動指數化投資的綠角也曾提到 -- "能夠接受類似觀念的人,跟他/她的成長背景和經歷很有關係。" 嗯,我後來想想也是如此。

anyway... 這篇不是投資金律的讀後感+推薦文,所以也不細談了。從那時候起,風險就一直掛在我心頭,從此思考任何事,總是會不自覺的拿風險過濾一下。而我現在處在正在創業的公司,風險這兩個字,纏得我更緊了。

有看過流言終結者 (Discovery Myth buster) 嗎?身為一個 tech geek,mythbuster 很自然地成為我定期收看的節目。 裡面的兩位主持人,分別是 Adam 和 Jamie,各自浸淫特效數十年,在節目中完成一項又一項的精彩流言驗證。有一點值得觀察的是 Adam 生性 活潑大膽,愛冒險,較無厘頭。而 Jamie 則是完全相反:嚴謹負責,知識豐富,重視風險。 想像如果這節目只有 Adam 一個人的話,以 Adam 橫衝直撞的作風,那這節目肯定是場災難,沒多久一定在火災/水災中結束。反之只有 Jamie 的話, 缺乏神來一筆的新意,太過沉悶,節目收視率只會跌跌落。兩個人的組合正好 perfect match,創造了長紅的收視率。

冒險創新和風險控管本質上完全相反,但個人認為是同樣重要的。只偏創意,就像是只有 Adam 的衝勁,但是卻沒有像 Jamie 那樣嚴謹的意識在把關。 沒有考慮風險,等於車子沒裝煞車,這樣真的到的了目的地嗎?

回到理財... 風險控管在理財中,我們可以透過資產配置和分散投資來達到降低風險。一般講資產配置都是提到將資產分散到不同的標地。 不過我在另一篇文章 (找不到了...) 中讀到一個特別的觀念,文中將資產配置的精神推到更廣,它將人本身也算是成是一個資產,必需一起納入配置中:

  • 如果任職於穩定的大公司 or 公務員,那麼你的投資項目應當增加小公司的比例,藉由多冒些風險提高投資的報酬
  • 如果任職於小公司,那麼應當多投資已開發國家的大公司,因為不景氣時大量小公司倒閉。不僅自己待的小公司倒了,連帶持有其他小公司的股票也受損。
  • 如果你身在上市公司,握有公司股票,那麼應當減少自己公司的持股,提高持有其他產業的股票。 因為如果公司倒了,不僅失業,原持有的股票也成壁紙。這是雙重打擊,風險太高。

把自己當成配置的一部份,風險控管將更加的完整。

常常會聽到有人會說,投資股市債市,不如投資自己。well... 投資自己是值得去做的事,像是投資自己多學習能夠增加一技之長, 的確降低了失業的風險,但如果 "只" 投資在自己一人身上,那就完全沒有分散到風險,這是很危險的事。 自行創業的人算是這類人的極致,他們的資產自然是全部集中在自己的新創事業上,而且,幾乎是不成功便成仁。 在這麼高的風險下要存活,我想風險的控管勢必是重要的一環。至於怎麼做,我沒有經歷過創業,自是一概不知。 但我猜也許是靠人脈來分散風險吧?在危機時能夠靠人脈度過難關,能撐得越久,就越有機會成功。畢竟創業的成功與否,機運佔很大的部份。

接下來做個題目吧,利用分散的方式對自己實做風險控管:

國家經濟:我目前居住在開發中國家,台灣。賺取台幣薪資,台灣經濟未如已開發國家穩定, 本身風險已高。因此必須多持有已開發國家債券,及大公司的股票,並且減低持台股,台幣的比例, 當台灣發生危機時,工作本身雖然已受創,但最少還可避免資產損失。

居住威脅:台灣與中共之間一直保持著奇妙的平衡,這平衡能夠撐多久實屬未知。 並不是說平衡倒向哪一方,風險就特別大,而是 "未知" 本身才是風險。對未來越不確定,風險越高。 相較日本、澳洲、美國、歐洲等地,台灣目前風險實是大的多。最直接降低風險的方法就是狡兔三窟。 有本事拿綠卡,沒本事也要有國外的親友可以暫時依靠。

工作類型:目前我在科技創業的小公司裡奮鬥,雖然只是員工,並沒有面臨自己創業那種巨大的風險, 但風險也是挺高的了。所以在資產上小型公司的持股必需減少。網路類的持股也要降低。

結語

其實上面聊到的很多只是純技術面的考量.... 真正的大絕招應該是 "下流志向" (註) 提到的互助來降低風險 -- 如果在別人危險的時候,你願意伸出援手,而你危險的時候,有人願意幫你,整體的風險自然就大幅降低。 簡單講就是人脈。不過這種大絕招宅男是很難想像的。

註:下流志向是一本討論日本教育的書,主要探討現在學生學習的心態,以及繭居族的問題,有不少洗腦袋的新觀點。 好吧,我承認當時是看到下流兩個字就去翻了一翻.....

迴響[3]

It's Python

01:22上午 十月 30, 2008 in category Java by ingramchen

from: http://xkcd.com/353/

應工作需要,我也開始摸了一下 python,摸了一段時間... 嗯,還真好用。就稍微屁一下吧

使用 Python 最特別的體驗是: python 是由 sequence 和 dictionary 兩種資料結構所構成的語言。 arguments 是一個 dict,scoped variables/method 也是用 dict,連他的物件導向也是用 dict 兜出來的。而 sequence 的觀念則是混合在 string, tuple, foreach, list comprehension...等等之中。整個語言規則幾乎可以用 sequence 和 dict 去理解。簡單講,就是學習曲線低, 然後又有很高的延展性。light weight and powerful!

python 並沒像 ruby 那樣著了魔,處處講究 everything is object,我每次看到 ruby 的 3.times(...) 就很感冒。3 是數字,叫數字 "工作"... 這很違反我的直覺... python 比較沒這種煩惱,不過 python 有一些很基本的物件的性質 卻沒內建。 一個 list 的長度居然是 len(list) 而不是 list.len(),一個物件的字串形態居然是 str(myObj) 而不是 myObj.to_string()。str() 還可以用 cast 去理解,但是 len() 就真的不可原諒了。

除了 OOP, python 也提供 procedure 和 functional 兩種 paradigm,前者讓 python 可以做為一個 script 語言,後者提供了 語言高級應用的可能。functional 的功能沒有很多,不過我覺有 list comprehesion, map(), filter() 和 lambda 就很夠用了。 我之前玩了一陣子 Haskell,什麼 rfold, curry, tail recursive, monad ,blah blah 看的眼花瞭亂。那時我自己的結論跟大家差不多 ... 就是純 functional 語言永遠不會起來的。未來可見的方向是 -- 取其 functional 語言中的精華,予以簡化, 然後逐步納入主流的語言。以此檢驗 python 的過去歷史發展和現在的成果,就可了解它的發展方向是正確的。 python 提供三種 paradigm,語言功能相當的完備,不同的功能可以選用適合的 paradigm 來寫。大家朗朗上口的 "choose the right tool for the job",一個語言就可以滿足。

python 語言的可讀性高這就不廢話了。但是強制縮排這件事讓很多人不滿。寫一陣子 python 後,發現強制縮排的確是有道理, 可以簡化語法。但是!但是!我發現強制縮排的問題不是強制,而是縮排的規則。python 只要上下的縮排的字元數一樣,就算過關。 我想這原意是希望保留一些彈性... 可是,假如你是用 4 個空白縮排的,然後你 google 一下程式範例,比方說 google app engine 的範例 ,查到的縮排卻是兩個空白的,這時剪貼到你自己的程式中就囧大了,只好手動修修改改... 這種事實在是很煩,目前我查到的 IDE 也沒有一個功能 能夠自動修正這種問題的 (手動排版程式碼,這是20世紀的事啊!) python 一開始應該狠一點就強制一定只能用4個空白來縮排就好了, 也不要允許 tab 字元縮排,全世界統一,這樣事情就簡化更多。(真的很計較 "強制" 這種事的人,不管規則怎麼定的有彈性,理由多麼充足, 都不會買帳的)

python IDE 目前做最好的 pydev extension (要錢),有 auto import 和 code completion (比免費的強), rename 和 extract method 等最基本的 refactoring 也有提供,勉強算是跟得上 21 世紀啦。我目前也是寫寫100行內的小玩具而已, 還不大需要 IDE 來管理 code。未來有沒有嘗試大型 python 專案的機會呢?我覺得是很少的,因為不適合。 大型專案比較重要的還是支援、維護、人力...etc,script 語言目前還是無法跟 java/c++ 等相較

python 最最吸引我的並不是簡潔的語法,而是無數的 library。python 程式真的多到翻掉,尤其我是用 linux 的,linux 到處都是 python,ubuntu repository 裡目前有 800 個 python lib,只有一個爽字可形容。 用 windows 的 developer,可惜了,你的人生錯過了 python... 我的意思不是 windows 不能用 python , 而是沒那個環境和機會讓你多接觸。就像在台灣也能學英文,但跟直接住美國學還是差很多啊! 如果要選一個 script 語言來當工具的話,語言本身 ruby 和 python 各有千秋,跨平台性兩者都不錯,但是...龐大的 lib 就代表高生產力啊, 所以 python 成為我的選擇。

script 語言的魔咒是什麼? U.N.I.C.O.D.E ! 任何處理多國語言的程式,不管大小,目前就用 Java 寫吧, 靠 python 嗎? 2010 年我再看看堪不堪用吧! python 3k string 預設型別總算是 unicode 了,過沒多久也要 release 了。 但是別忘了還有無數的 python lib 要轉換到 python 3k 去啊。 python 目前的成功就是自己未來的絆腳石.... 但是再怎麼痛苦還是得快點轉換,因為 21 世紀還不能好好處理 unicode 是一件不可諒的事~~~~

另一個 python 的賣點就是 google app engine。免費的 google cloud host 平台,超夢幻的! 有 google 撐腰,上面提到的成本、維護、人力一些 python 缺乏的好像就不再是缺點了。 我學了一點 python 後,馬上就開始研究了一下.... 但... 目前的結論是 google app engine 是一個玩具引擎.... 不是因為它的功能少,不是因為它的 ORM 不能 join,不是因為它還不太穩定....。而是它不能進行 heavy task!! 一個 http request 限制在幾秒內一定要完成,沒完成就 error ,也沒有提供 backgroud job。 我堅信一個道理:

電腦產生的價值來自於大量的運算和分析

一開始也許做做小小應用可以吧,等到網站大了,你會想要開始分析和研究資料吧?每次分析都把資料從 app engine 全部 dump 下來嗎?當場囧掉 ! 或者你打算做圖學或 bio 之類上的應用,需要大量的數學運算,那...... 真的只能自求多福了。未來若 app engine 不提供進行 heavy task 的功能,那 app engine 上的 app 永遠也做不大 (因為無法提供有價值的事)。而它號稱的 scale 能力也將沒人會用到...... (還真諷刺啊)

啊... 還有一些想屁... 今天時間晚了,就到此為止吧。對了, python 的書,推薦 dive into python 這本,它是一本深入深出的好書 (我沒打錯字,這本是給有語言基礎的人看的)。

迴響[9]

Yahoo hack day Taiwan 優勝!

11:14下午 九月 21, 2008 in category Java by ingramchen

為期 24 小時的 Yahoo hack day Taiwan 總算結束啦!總共四十多隊參賽,一起角逐第一名獎金 30 萬元。我們的團隊 "科科科" 在瘋狂 hack 之後,很幸運地取得優勝!

先來看看我們完成了什麼東東:

圖說:圈選 "伯朗咖啡" 後,按右鍵出現相關的四個 yahoo 資訊 widget

這是一個 firefox extenstion,當你在任何一個網頁上選取想查詢的一段文字後,按下右鍵,旁邊會 "滑進" 四個 widget box,裡面分別呈現 flickr, yahoo地圖, yahoo生活+, yahoo知識+ 的查詢結果。而最後查出來資料比較少的 widget 會自動淡色處理。(想當然而,當你選取一段的地址時,yahoo地圖 widget 會是最好的結果,其他三個則有可能淡掉)

這能幹什麼?先想想原先 web 是怎麼連結的?用 hyperlink !但超連結是網站所提供的,用戶一直都是被動的接受 hyperlink。有了這一套工具,任意一段你關心的文字,都可以成為新的 "hyperlink" 連到其他資源。在 hack day 這兩天我們實作了 yahoo平台所提供的四個主要服務,要增加更多服務也不會是問題。

這個工具另一個功能是將 widget "黏" 在網頁上:

圖說:剛才選出的 "伯朗咖啡地圖 widget" 黏在右邊,接著查 王力宏 後,出現四個新的結果。

看一段網頁的時間可能很長,中間有很多你想關心的資訊,當你用 widget 查出後,覺得不錯,想等一下再看,我們可以點選 widget 右上角的 "便利貼 icon", widget 馬上會滑到網頁的最右邊,並且黏住,等到你後來想看時再回頭來找。

整個功能大致上就是這樣,光用描述的有點難想像,等到可以開放下載後,有興趣的人玩一玩就可以了解整個概念了。抽象點講,這個工具打破傳統瀏覽的流程,將每個 "動作" 切的更碎,而且依自己的習慣再重新組合,mashup 各種web服務,最終達到更快找到資訊的目的。(這是我的說法,原本的 idea 是由 tempo 提出,他應該有更完整的說法)

好了,接下來說點感想吧。每一組在最後可以 present 的時間只有兩分鐘,真的很短 (哈!不是我上台,所以壓力不在我身上 :-P) 。不過... 讓我當下緊張的是,幾乎所有人主題都是做網頁的,我們隊員越到後面更感徨恐,想說該不會做錯方向了吧 = =。後來評審群在最終評審的前夕,會 "召見" 可能獲選的隊伍,藉由更了解作品來決定獲獎與否。我們隊沒有被召見... 當時心情真是掉到谷底啊,雖然大會辦了熱鬧的歌舞來 high,不過實在是 high 不起來啊~~~ (得失心超重的,我)。當然最後由 yahoo co-founder David 公佈 "口卡口卡口卡" 優勝時,心情馬上飛上天啦 科科科。

我們的題目到了三天前才敲定,然後各自留個半天調查相關的技術,禮拜六當天就匆匆上陣了。我們的團隊共七人 (核心開發四人):

  • Leader: tempo。 tempo 負責技術,美術整合以及整個大方向的構思,還有 "準確地" 分派工作。我們可以及時完成這個作品,全靠這位船長不斷的 push 和掌舵啦。
  • Javaworld 站長:koji。koji 負責實作 yahoo 所有 api。koji try api 跟他講話一樣快,這種事交給他,霹哩霹哩叭啦叭啦一下就搞定啦。
  • mygamespocket站長:haska。haska 負責我們作品的 js animation,集數年 flash game 動畫技術經驗,js 的 animation..... 他一下就作完了........
  • koji的閃光。她負責美術的部份.... 我對別人的閃光一向是 no comment。(啥?)
  • 老闆娘:cjin。她負責... 呃... 應該是加油打氣 ( ̄^ ̄)/
  • 我:我負責製作 firefox extensions 以及 jQuery 的相關整合。整個過程在 "X聲連連下" 完成。(我要寫 java 啦~~ 哭哭)
  • 超過大會規定的第七人:cjin 肚裏的 baby。他負責帶來好運啦!!

在技術方面,由於準備的相當蒼促,連 firefox extensions 都沒寫過就直接開工。過程中遇到好多次瓶頸。只要有一個瓶頸突破不了,可能產品就生不出來了。firefox 的 XUL 是我們遇到最大的問題 (簡單講 XUL 的 document 物件不等同於 HTML 的 document 物件,光是這一點就讓大部份的 js library 通通破功... )。koji 那邊的 yahoo 地圖也受到影響,到後來只能繞遠路用 iframe 解決。現在想想能在短時間內各個點都突破還真的有點好狗運哩!

這一次的團隊經驗,讓我覺得最有感觸的是分工合作:集合各方人材,分派 "對的、適任的" 工作,最後再完美的 "合體"。leader tempo 在這一點上功不可沒.... 嗯... 好像太狗腿了,要講點壞話平衡一下:"馬的!用完全沒碰過的技術就上陣比賽,你神經也太大條了吧!"

講完了.... 呃,我漏了什麼.... 對了,是主辦單位 = =。yahoo 年年舉辦 open hack day,亞洲區第一個就選上台灣,實在是很有心,整場活動熱鬧非凡,event 不斷,看得出來是花了巨資,用心的規畫,就是為了要帶給 developers 活力與創意。只是.... 很不對我的味啊?在場的 developers 能 high 起來的好像也是少數,大家都在埋頭骨幹。別人怎麼想我不大清楚... 我心裡的 OS 是 -- "我是來比賽寫程式拿獎金,可不是來玩的" -- 我只想安安靜靜的寫程式。原本想營造的 "歡樂" 氣氛似乎有點變了點質... 聽說國外的 open hack day 都是沒有獎金的,所以有很多隊伍都是純來搞笑的。話說回來,東方人比西方人保守很多,尤其是 developer 圈的人。如果不用重賞,純靠歡樂帶勁的活動也許吸引不到這麼多團隊了。主辦單位這一次在台灣首辦,應該有不少的心得和收穫,希望未來越辦越好囉! (我想對主辦單位而言,這一次目標有達到 -- 一大堆 developers 瘋狂用 yahoo api 啊!)

最後,我們的作品將在尋問 yahoo 官方意見後,再決定釋出讓大家玩的時間 (firefox extensions source 整個是 open 的,所以比較麻煩一點)。不過大概很快吧,我想。畢竟是 yahoo OPEN hack day 嘛!

update1:

圖說:科科科隊與 Yahoo co-founder David Filo 留影 (圖片為轉載自 cjin)

相關連結:

update2:

啊.... 我們沒有把作品的名字說清楚,好像造成了一些誤會的樣子。這個作品是應用 "firefox extension" 的技術實作,不是名字叫做 firefox extension。我們沒有替這個作品命名啦,不過有個 code name ,叫 Free Gate (任意門)。就是多啦A夢的任意門啦!取其可以隨時隨地到世界各地處去之意。

update3:

tempo 在他的 blog 中提到,這個 "free gate" 最原始的構想來自於 mozilla ubiquity,但似乎有人誤認為我們的作品建構在該 ubiquity 之上了。well,目前還沒辦法釋出讓大家玩,所以大家亂猜是可以理解的。這裡我還是說明一下開發的細節好了,以免大家過多的猜忌:

ubiquity 在界面上是使用 xul 的 popup panel 這個元件 (有興趣的自己去挖 source 吧),這個方法比較簡單,而且還是 firefox 原生支援的元件 (所以 ubiquity 速度不錯)。但是我們嘗試過 panel 元件後,發現做不到我們要的效果 (第一個瓶頸),只好放棄而改用土法在網頁內插入 html。改採 html 的做法後,又發現原本我們已經另外寫好的 js animation 和 yahoo api 都整合不了 (第二個大瓶頸) 這真是讓我們萬念俱灰.... tempo 馬上轉向挑戰 greasemonkey,但試了老半天這條路還是行不通。後來很幸運的發現原來是 xul 和 html 的 namespace 互衝造成的。但即使是互衝解決了,jQuery 還是只能用一半的功能 (第三個瓶頸),yahoo map 也不能動 (第四個瓶頸)。原本我差點就要去改 jQuery 的 source 了,好在 tempo 阻止我做這種浪費時間的蠢事。最後決定還是盡量避開 jQuery 不能用的部份,然後 yahoo map 改套 iframe 來解決...

講得太亂了點... 科科,簡單說,如果可以直接套 ubiquity 就做出來,就不用這麼辛苦啦。這一個作品的構想雖源自於 ubiquity,但事實上我們不認為 ubiquity 的 command line 導向是條正確的路。畢竟滑鼠才是瀏覽網頁的王道啊!

update4:

Yahoo 官方將當天的 demo movie 上傳到 youtube 了,下面的影片 3:00 到 5:00 分鐘之間是我們作品的 demo ,看一下囉:

當天 demo 時出了點狀況,animation 跑的有點不順 (不過也很難 tune 就是了)

迴響[17]