電腦效能應用與安全研究室 Performance, Applications and Security Lab


我們的研究範圍很廣,從嵌入式系統、手機應用、一直到雲端計算、商務應用、資訊安全都有做。
我們的合作研究夥伴很多,包括聯發科、IBM、中研院、資策會,還有和台大、清大、交大的教授合組研發團隊
,包括高階應用處理器架構研究、虛擬化技術、異質計算、系統軟體等重要技術的研究與創新,我們很關切台灣人才與產業的未來。

2015年11月30日 星期一

Maker - 夢想的自造者

自造者是目前國內對Maker的翻譯,在當前一片鼓勵年輕人自造、新創的風潮中,對於有夢想、想突破現況的人來說,是再好不過的環境。

然而,所謂「多情自古空餘恨,好夢由來最易醒」,如果只是追逐時尚、圖一時之快,沒有真正的熱情,也沒有個人的創見,那麼自造、新創的夢是很容易醒的,或許也因此而留下餘恨。

所以好友蘇文鈺​教授感嘆說,作為一個普通的Maker最怕的就是遇到有人問以下這類問題: 「你這個人家早就做過了啊!而且人家做得比你早又比你好!」

我回他說,或許該先認清楚自我的定位,作為Maker所為何來? 初心是什麼?目標又是什麼?

對我這個自認為是舊時代的老Maker的人來說,回想起當年,Maker的意義很大,對我一生的影響遠比很多事物來得大多了。作為一個Maker,我學會自行創造夢想,有機會與同好們一起築夢,能夠為了追逐夢想而狂野奔放、堅持到底,至少在心靈上沒有被庸俗和邪惡所困苦或同化。

所以我說Maker是夢想的自造者,Maker的能力不斷創造夢想,也讓夢想堅持下去,乃至於讓我成為Problem Solver、Hacker、Innovator、Educator、Promoter...

Maker可以是好玩的,就像我從小到現在,逢年過節有空就會做塑膠模型一樣,有時候只是興趣,沒有要跟誰比高下,只是寓教於樂 - 在自造的過程中,教會自己一些能力,長一些知識,多一份快樂。

如果我小時候不親自做一台F-14飛機模型,我沒辦法充實地欣賞與想像那些我從書中讀到的關於F14的種種頂尖設計和科技結晶;如果我沒有自組一台PG級的機動戰士Z鋼彈,我也沒辦法實際領略其中巧妙的機構設計,以及透過把玩將我從動畫上看到的神奇變形的系統具象化獲得快感。

雖然聽起來頗幼稚的,但這不就是所謂的有夢最美嗎?

人生而有情,因為有情,則有喜、有悲、有樂、有苦。如何燃起熱情追逐夢想而成就自己、離苦得樂,則是大議題。試問時下有多少人無心於尋夢、缺乏熱情、隨波逐流度日? 當然,維持夢想需要相當的付出,夢想的破滅也有相當的代價,這是作為有情眾生之一的覺悟。

我從小喜歡動手做的個性,讓我曾經有過成為科學家、工程師、藝術家的夢想,至今這些夢想還在,熱情也還在,不因沒有成就而苦惱喪志,只是因為興趣太多,無法兼顧而已。

想起當年高中時代在電腦上做的東西,可能今天的Maker會不屑一顧。然而,打從我在Apple II上按照書上的範例輸入程式碼的那一刻起,我製造出一些夢。我夢想有一天,擁有高解析度、色彩繽紛的工作站,電腦可以幫我解決記憶不好的問題,自動化和網路可以幫我解決雙手不夠用、分身乏術的問題,更好奇如何做出令人滿意的人工智慧。

我的腦海中充滿著對未來的憧憬,而這個憧憬讓我求知若渴,讓我竭盡所能。但我知道我正在做的東西只是過程的一部分,我勉強自己背三民主義,為的是進入最好的系去追尋我的夢。

在大學時,我們有一群人在社團學著造小火箭,夢想有朝一日能做出大火箭。我修了六個學習的專題,雖然沒做出甚麼偉大的東西,但我知道我能做東西,而且能從做中學,能從其中得到樂趣。

因為樂趣而做,做了而產生樂趣,這樣就會有源源不斷的熱情。如何啟動這樣的正向循環,就是每個人的課題了。然而,如果因為贏過別人而有樂趣,為了樂趣而不斷想贏過別人,那就麻煩了。這是我們這種注重考試排名的教育文化容易產生的迷思,很多人不認輸,或是輸不起,因為必須以贏過他人來肯定自己、獲得樂趣。

還好,我有足夠的夢想來撐起自己,我不需要盲目與人比成就。我出國留學、去一流公司工作、到學校做研究,為的是學更多的東西。當然,我的些許成就,能讓我在尋夢的過程中獲得生活上和專業上的支持,所以我可以擁有不斷地前進的熱情和動力。對我來說,當電腦工程師和當資工系教授的初衷,從來就不是名和利,只是去園一個夢,一個幼年Maker的夢。

話說,沒有夢想,恐怕在科技的領域上很難走得長遠。

科技的本身往往是冰冷的,越是理性的論述,越是複雜的理論,越是周全的設計,科技的後面充滿的嚴謹但機械式的分析、建構、評估,如果身為一個無法從科技上獲得某種滿足感的科技人,就算以此維生、成名、創業、發財,但從某種人生的意義與從事某種活動的價值層面來看,是極為空虛無聊的。

我不想做冰冷的科技人,我不想過窮到只有名位和財富的日子。骨子裡,我還是狂野奔放的Maker。

當然,我早已不是幼年的那個我,夢想也越築越有個人特色,後來又陸續加入了其他的夢,而這些可以讓我廢寢忘食的夢想,也讓我擁有點燃生命火花的熱情。或許每個人都該從幼年開始築夢,或許該築屬於自己的、複數的夢,而夢與現實相連之處,或許正是感情所寄託之處、身心靈所關照之處。

或許我們可以學習把夢做大一些,學習如何把夢想家的動力帶入現實,學習如何不懼怕夢想的破滅;或許正是因為夢想所帶來此情此景,才好讓我們領略到人生中的因緣際會;或許正是因為懂得觀夢幻泡影,才懂得如何超越一切有為法。

2015年11月21日 星期六

轉型到Open Source的世界來尋寶

Open source( 開源碼 )是時代趨勢,使用者極多的開源系統軟體,例如Linux、Android,很多廠商都愛用,廣泛用在伺服器和手機上。IBM早在1998年引進Red Hat Linux (註1),而一直視Linux為敵人、說Linux是癌細胞的微軟,就在前幾天宣布全面與Red Hat Linux合作 (註2)。
我當年在矽谷SUN工作時(2000-2005),公司深受Linux的威脅,員工的意見分為兩派,在幾年間不斷辯論,不斷嘗試各種路線,好幾位主管做不好就下台。「在某些方面打不過他,就包容他、利用他」,似乎是最後的結論,所以SUN在低階伺服器市場上逐漸引進Linux,把自家的處理機、作業系統和中介軟體用於中、高階市場。
後來Oracle收購SUN之後,也是走相同的路線。Oracle正在銷售的Big Data Appliance (註3),上面主打的是已經安裝、優化好的開源系統軟體,例如Hadoop、NoSQL、Hbase、Impala、Accumulo、Cloudera、Spark、Kafka等等。當然,Oracle也提供自家的軟體,繼續向那些不敢轉用開源系統軟體的客戶收取高額的軟體授權費用,有肥羊可宰,何樂不為?
這些公司很清楚,要如何放棄利潤過低的產品,如何引進公開好用的資源,在這個科技進展迅速、資訊迅速流轉的時代,要如何做抉擇,找出公司研發的策略,是管理決策階層的職責,也是對他們能力的考驗。決策錯誤就下台以示負責,是常見的事情,而高科技本來就是高風險,賭錯了也不是甚麼丟臉的事,否則Steve Jobs哪有東山再起、重回Apple的機會?
話說台灣,一大堆所謂高科技業的主管,即使這些年來把公司和業界搞到了今天如此慘澹,還能夠振振有詞地說年輕人不夠抗壓、政府補助太少,我覺得被稱為「慣老闆」是咎由自取。我在SUN工作的那五年,公司的股票一路貶值到十五分之一,從來沒有聽說有人說要跟美國政府要求補助的,而公司為了保住人才,還是年年加薪。相較於此,台灣科技產業的有很許多領導階層,非常地不負責任。
只會做那些擅長做的東西,對新的東西多半由道聽塗說而來,對其他領域的東西一知半解,卻要在專家和手下的面前裝出一副「我知道很多你們所不知道的東西」的樣子,是最令人厭惡的行為。在有些公司,中階主管們明爭暗鬥,如同政壇,政客出一張嘴,表面上對罵,實際上架空長官、壓榨下屬,私底下串聯分贓,甚至掏空公司。
前天有人問我產業這樣子該麼辦? 我說,這些人要把公司玩垮,我們也沒辦法,只是政府不應該用大家的錢隨便給補助,讓他們早點垮掉,才能活化鎖在裡面的人才,像Nokia衰落瓦解 (註4) 那樣不也是一條活路嗎?否則連人才都爛在裡面了,將來更慘。也就是說,這些年政府補助扶持產業這招,已經行不通了 -- 政府再怎麼補助,也沒有中國政府厲害,所以靠補助才能生存的公司,面對紅色供應鏈,實際上也競爭不過的。
那麼我們就放棄科技研發了嗎? 當然不是。一些朋友和我認為,台灣在眾多可以嘗試的方向中,可以做的一件事,是集中人才去探索那些「資本門檻不高、技術門檻高」的研發項目,包括既有的產業想轉型,或是新創事業想找方向,都可以考慮。舉例來說:
- 如果某一代工產業所需的資本門檻高,但如果技術門檻不高,那對岸可以靠著充沛的資金和人力,很快來佔領這樣的產業,現在大家都看到這樣的結果,但很多這樣的公司還在吃老本,難以轉型。
- 資本門檻不高的新創企業,如果技術門檻也不高,即便靠創意、靠經營模式,也很容易曇花一現,因為創意和經營模式很容易被複製,有錢的公司可以後來居上。
- 能夠發展出門檻高的技術,不只是技術有價值,人才也是國家重要的資源。如果台灣實際上能好好耕耘這塊,才是長久之道。我十月在荷蘭開會,深深覺得荷蘭產業的發展方法,很值得借鏡。
在資訊產業上,要發展「資本門檻不高、技術門檻高」的產品或是服務,一個非常可行的方式,就是利用高度發展的open source軟硬體的基礎,站在巨人的肩膀上,研究如何打造能吸引大家來使用的優質的系統和應用。資本門檻不高,因為做研發時不需要昂貴的生產機具,不需要昂貴的軟體授權,我們只要有一流的人才,就可以藉由閱讀open source來吸取世界頂尖的智慧,並且證明自己的技術能力 (註5)。
當前的問題是,在台灣的業界能夠領悟並且善用開源系統軟體的優勢的資本家和人才不夠集中。之前學界和業界曾經有一些open source的推廣以及研發計畫,很少有能夠聚集火力攻佔某領域站上世界舞台的作為。現在業界所使用的open source,早已不是搞懂一兩個open source計畫,也不是小眾搞一些自娛娛人的計畫就行的 ,如果可以從系統面貫串到應用面,會有更大的機會。
VMFive是一個例子 (註6)。在許多新創公司中,這家公司所涵蓋的技術層面是較廣的,從系統層面的虛擬化技術連結到應用面,大都採用open source,在某些關鍵點上進行優化,提升效率和功能性節省系統建置成本
然而,不少新創團隊,偏向低門檻的作法 ,或者低估技術門檻,一昧想在短期內開發出看起來很酷的產品,因此而走不遠 (註7、8) 。傳統系統代工廠的長官們,似乎還活在上個世紀,腦袋轉不過來,對open source一昧排拒,不懂open source的價值,不會運用open source,如何帶領公司轉型打仗? 眼中只有訂單,只會抱著大廠的大腿,不知道以前的運作方式已經落伍了。
話說 2006年時,我們一行人在參訪HTC的時候,公司所有高層都出來對我們簡報,軟體部門擺在最後,乏善可陳,似乎是最不受重視的部門。當時還沒有iPhone和Android,HTC只會做Windows CE作業系統的智慧型手機,唯一微軟願意讓HTC插手的是與硬體相關的驅動程式(device drivers),所以也沒甚麼前瞻研發工作可做。
在當時那種封閉的生態系,只要緊抱著Microsoft、Intel、IBM、HP等大廠的大腿,提供價廉物美的組件和代工生產,就可以賺得很高興。早在智慧手機之前,PC和周邊的代工產業已經風光了十多年,所謂Wintel的供應鏈,包括Asus、Acer、廣達等系統廠,以及相關的零組件廠,就像當年的HTC一樣,在軟體上沒有甚麼研發空間。
那段期間(2006~2009)我開授Linux Kernel and Device Drivers課程,學生趨之若鶩,廠商也來邀約演講,因為廠商開始導入Linux,但極度缺乏Linux核心人才。學生為了就業而跑來修課,因為學會寫Device Drivers就可以找到不錯的工作機會。
很多資訊工程的人才到這些產業去幫硬體裝置寫firmware和device drivers,雖然很多人因此成為科技新貴,但我常常聽到這些軟體、韌體工程師向我抱怨,做來做去都是差不多的東西,沒甚麼長進;而且技術門檻不高,要與人競爭只有設法做得比別人快,所以常常要趕工加班,累到過勞爆肝。後來我不大想開這門課,因為我不願學生去幫缺乏研發企圖心的廠商賣肝,而且我認為這種行業撐不了多久。
2009年,Google正式釋出Android的開源碼,而HTC也幫Google開發出世界上第一款Android手機。挾著以往做Windows手機的經驗優勢,HTC靠著硬體技術、研發速度、穩定性、工業設計、行銷管道,在一開始那幾年做得有聲有色,非常風光。
HTC崛起的案例,大部分可以說是受到open source和Google的加持,加上員工們辛勤努力,所產生的必然結果,也算是時勢造英雄。Android最早由2003年成立的新創公司開始研發 (註9),2005年被Google收購後繼續改進,總共歷經7年才釋出,如果不是Open Source和Google,不可能造就HTC一時的榮景,也不可能與Apple競爭。
可是,Android雖然是open source,但規格主要還是掌握在Google手上,所以HTC做了幾年,又回到老路,在系統上並沒有特別突出的賣點。當時HTC除了在軟體上抱著Google的大腿外,在處理機上抱著Qualcomm的大腿,看人家給甚麼就做甚麼,在系統設計上沒有很大發揮的空間,所以我看了搖頭,不知道他拿甚麼跟人家競爭。
當時我問HTC與聯發科的朋友,兩家公司為何不設法合作?有人猜測是高層有心結,有人說HTC怕得罪Qualcomm,而聯發科的朋友光是做山寨機就忙得不亦樂乎,兩邊都沒有合作的意願。我想,如果當時有合作,現在HTC可能會多一條活路。
「成也是open source,敗也是open source」。如果沒辦法在open source的基礎上加料,端出好菜,那麼其他公司趕上來,尤其是紅色供應鏈挾其廣大資本和市場,自然搞不過人家。所以如何善用open source,是一門大學問
我們現在談open source,主要看的已經不是手機和傳統雲端服務,而是務聯網(IoT)和Big Data產業所用的系統。為了IoT的市場,許多單位開發開源的軟體,包括ARM公司的Mbed (註10),不是沒有原因的。簡單來說,IoT談的是利用資訊科技去提升各項既有產業的效率與服務品質,主導權在既有產業,而這些公司當然會希望有可以公開受檢驗其安全性,可以自行根據應用做客製化,容易找到開發人員的開放式平台。Big Data所使用的系統,如同上述Oracle Big Data Appliance的例子,早已大量使用open source。
封閉的系統,除非能做到像Apple那樣,才有辦法存活。但世界上有幾個Apple? 幾乎所有的大公司,連Microsoft和Apple在內,也都積極使用和貢獻open source,但台灣有些公司還在想要如何保護。現在連硬體都得要開源,像是Arduino和Raspberry Pi這類產品,已經招來大量應用開發者成為社群,逐步侵占工業電腦的市場。甚至像UC Berkeley的RISC-V這樣的開源CPU越來越進步,效能接近ARM,可以讓開發者自行客製化指令集,社群積極開發工具組,越來越有吸引力﹑。
可惜台灣大多數既有的產業並不見得重視這塊,部刀ˋ到開放的好處。我們邀請業界來贊助學校的課程,有些人一劈頭就問,你們培育出來的人才,有多少人會來我公司嗎? 我們做產學合作,政府和業界劈頭就問,要產出什麼專利,產出的結果要歸誰?業界不願積極贊助開源的教育研究,那教授和學生自然就做他們自己喜歡做的研究了,所以產學落差日益加大這件事並不意外,政府也管不了,業界再大聲疾呼也無用,要就自己來跟學校合作
台灣業界最大的一個迷思,就是誤以為開源的東西沒有價值。這點我前幾天已經論過,有興趣者請參考 (註11)。我們看到很多機會,只要夠厲害,就能夠找到商機,而且know-how可以搞到博大精深,加大技術門檻。如果發展出門檻高的技術,不只是技術有價值,人才也是國家重要的資源,技術和人才都是世界一流的大公司都在積極爭取的。
這是一條可長可久的路,等待更多有眼光的企業家和有智慧勇氣的年輕人來探索。有興趣的話,我這個看過風景的人,可以找嚮導來帶領大家入門尋寶。
(註1)http://www-03.ibm.com/linux/redhat.html
(註2)http://www.forbes.com/sites/janakirammsv/2015/11/11/a-closer-look-at-microsoft-and-red-hat-partnership/
(註3)https://www.oracle.com/engineered-systems/big-data-appliance/index.html
(註4) http://technews.tw/2015/11/13/nokia-7/
(註5)http://buzzorange.com/techorange/2015/11/12/coding-2/
(註6)http://vmfive.com/
(註7)https://www.facebook.com/notes/洪士灝/本立而道生-不要低估技術門檻/1058810250816783
(註8)https://www.facebook.com/weifenl/posts/871591229603778?fref=nf&pnref=story
(註9)https://zh.wikipedia.org/wiki/Android
(註10)https://www.mbed.com/en/
(註11)http://buzzorange.com/techorange/2015/11/18/open-sources/

2015年11月19日 星期四

厚積而薄發

林偉棻教授這篇是非常值得分享的文章。我幾天前評論當前的新創氛圍時說到「本立而道生」,與林老師的見解類似。林老師是我台大電機、密西根大學的系友,她在Apple工作過一陣子後回到台灣貢獻社會。

在個人學問和德行上,「博觀而約取,厚積而薄發」是相當重要的內斂修持之道。廣博地觀察世間人事物,在深究學問時要懂得收斂和聚焦;深厚地耕耘、有系統地累積實力,卻只是淡泊淺易地分享心得。

當然,有人看蘇軾的言行,似乎很高調,哪有什麼「厚積而薄發」?我三不五時在臉書部落格上發表意見,在有道者面前,恐怕是「膚淺卻猛發」。或許是學養不夠,值此關鍵時刻,孔子說:「不得中行而與之,必也狂狷乎」,只好拋磚引玉、丟人現眼,或許能吸引那些真正「厚積而薄發」的有道之士出來現身說法。

現在教育的問題很大,但如果我是學生的話,為了自己的前途,難道只把問題推給教育當局,就不好好學了嗎?或是人云亦云,馬馬虎虎學學,就一窩蜂跟著人家說教育無用、學位無用、大環境不好,趕緊去找鐵飯碗、金飯碗、搞創業?沒有打好基礎,沒有想清楚就這樣做,有其危險性。

我提倡多元,但沒有鼓勵學生們抄短線,或是像無頭蒼蠅般亂鑽。除非有蟑螂般的本事,像前幾天課上討論的CockroachDB開源資料庫系統(註)有那麼強大的存活能力(survivability),能夠利用全分散處理的架構,不需要首腦(master)也可以存活,自行復原。

多元即是博觀,專業即是約取,厚積即是立本,有了這些基礎,對未來的道路就可以看得更清楚,才有薄發或爆發的資糧和空間。蘇軾這段罵得很好:

『然今之人者,學未成而急於用,腹含半經,便輕用於世也。不憂己學之不足,徒懼未能有用之時。故學之未精,便輕用其力,以致事不成,而人輕之也。』

這段蘇軾用來罵自己身邊得志小人的話,也很適合在今天罵那些「腹含半經」卻因緣際會而掌握權力的門神和跳樑小丑,以及提醒那些半吊子、不學無術卻想一步登天的年輕人,也讓我們多些自我反省。

眼光放遠來看,思考如何在超過40年的歲月中在高科技職場上持盈保泰,還是尋覓哪裡有穩如泰山的位置,還是設法撈一票後抽身?我大膽預測,不會自學、缺乏適應力、沒有獨到眼光,一招兩式靠著機運晉升管理階層的人,會在不久的未來迅速被取代。有能力的人,雖然嶄露頭角的時刻較晚,但在重要時刻會有用武之地。

「博觀而約取,厚積而薄發」這句話,雖然古老,卻也是在快速變遷社會的現代知識分子可細水長流的中道路線。

(註)https://github.com/cockroachdb/cockroach

2015年11月18日 星期三

新世代的FPGA

剛剛看到一篇關於IBM剛剛發表在SC15的論文,使用FPGA來加速big data storage和middleware的報導(註),剛好佐證了我們正在做的研究的意義性。

傳統的FPGA的用法,有很多限制,真的要用FPGA加速應用,必須有突破傳統的程式發展典範與框架(programming paradigm and framework)、編譯器技術與runtime support、計算機系統架構、設計與除錯工具等等。

我們也和IBM有些淵源。故事要回到四年前,IBM Austin Research Lab在2011~2013年間與我們合作FPGA加速的技術,那時IBM合作的夥伴是Altera,IBM把FPGA放在Power CPU的旁邊,讓FPGA可以直接存取主記憶體,在當時是很威的設計。全世界沒有幾台原型機,特別運一台到南港給我們做研究。

後來,IBM一連串改組,FPGA加速計畫不知何去何從,南港的伺服器部門大部分轉給聯想。但我們仍舊繼續這方面的研究,沒有金援,就自己湊錢買有點貴而且代理廠商不大懂得支援的FPGA加速卡。

我們在去年發表一篇關於程式發展典範與框架的論文,有興趣者可參考:
MobileFBP: Designing portable reconfigurable applications
for heterogeneous systems, Journal of Systems Architecture (2014).

前幾天才獲得通知,說我們投稿到FPGA 2016 Conference的最新研究成果被接受了,所以明年二月底有機會去北加州(Monterey),現在開始也可以多談談新的研究內容。

論文題目是: A Platform-Oblivious Approach for Heterogeneous Computing: a Case Study with Monte Carlo-based Radiation Simulation, to appear in FPGA 2016.

我們正在做的研究目標類似文中這段所描述的:IBM Systems Group developers will create solution stacks for POWER-based servers, storage and middleware systems with Xilinx FPGA accelerators for data center architectures such as OpenStack, Docker, and Spark.

期許我們的研究能與世界同步,徵求人才中。

 (註)http://www.anandtech.com/show/9790/ibm-xilinx-sc15-collaborating-for-better-powerfpga-system-integration

本立而道生 - 不要低估技術門檻

奇群公司的募集群眾資金研發的「貓臉辨識餵食器」,說是低估硬體開發的難度而難產, 向群眾道歉(註)。在此我不想就細節評論這件個案,但我想藉此提醒想創業的人,不要低估系統開發的難度。
現在有太多創業競賽過度強調包裝,甚至主辦單位還特別找人來教參賽隊伍如何把作品「投售」(pitch)給評審。當一天評審下來,忙著拆包裝找技術涵量,發現許多團隊根本不考慮系統面的問題,包括硬體成本、效能、耗電量、網路費用、即時性、例外處理等等實務面上的問題,而且問題不小。
某次擔任某個競賽評審時,我問主辦單位能不能讓大獎從缺,因為作品內涵不夠,但主辦者面有難色。後來知道,不只獎金一定要發出去,而且還要輔導和推銷得獎團隊去創業,這是上級長官交付的任務。有趣的是,媒體人士擔任的評審比學界多,主導了得獎作品的評分,而從結果中發現,他們大多無視於技術面上的問題和難度。
想起一句老話:「君子務本,本立而道生」。本是什麼?想要得什麼道?可能在創業時要思考清楚,業也是有分善業與惡業的。
(註) http://www.bnext.com.tw/article/view/id/37988

2015年11月17日 星期二

開源(open source)的大趨勢

今天我們「系統研究專題」課堂上談了開源(open source)的大趨勢。除了開源程式碼已經成為主流之外,資料、硬體也逐漸搭上開源的列車,原因是甚麼呢?

難道開放和分享,是人類的天性嗎? 不要鬧了,果真如此,那我們為什麼有很多東西不願跟他人分享? 為什麼有私人財產、私人企業? 為什麼文章要有著作權,發明要有專利、智財權?

如果有機會請有錢的人、企業家,做點「拔一毛以利天下」的事,看看他們做不做? 我不是批判他們,而是說「開源」這件事,並不是人類的天性,而是基於利益考量下的產物。

坦白說,我喜歡開源的精神和支持開源的做法,但我一直覺得Richard Stallman的Free Software的理念陳義過高、無法落實。就我的觀察,開源多多少少有其利益考量,並不見得是義舉。

首先,貢獻開源程式碼、資料、硬體設計者,以下簡稱「開源者」,往往可以因此展現能力、獲得好名聲、交到好朋友,不必要到處請託,也有機會讓大人物看到長才,一步登天。開源者的知識和能力,對於想使用開放資源的族群和公司,是寶貴的資產。

其次,開放的資源,往往只是起點,好的開源計畫會吸引好人才一起進來開發,讓好的更好。好計畫加上好團隊,再加上有眼光的企業家,大概就成功了一大半。這是為什麼有些開源計畫能夠快速創業、成功吸引投資的原因。

再者,基於開源的產品,比較容易獲得客戶和使用者的支持和信任,所以推廣容易。雖說資源本身是免費,但使用者的支持和信任,以及衍生而出的回饋與品牌形象是無價的,而這些無價的東西往往可以用某些方式創造出價值。

最後,擁有大量使用者的開源技術,由於使用者的回饋和幫助修正,使得開源技術的穩定度和成熟度隨著時間而增加。反過來說,「閉源」(closed source)技術的維護與更新,需要持續投注人力,需要在自家訓練新人,技術可能因為人才流失而無法維護,不穩定的因素較高。

會在課堂上講這些,是因為學生懵懵懂懂,而業界對於開源的觀念也有其侷限性。我被業者嗆過很多次,說技術如果開源,東西都被看光光,怎麼賺錢?

近年來,靠著「閉源」技術賺錢的公司,逐漸踢到了鐵板。有些公司靠著老字號金字招牌,還可以哄騙那些不懂技術的客戶。然而,諸如「買IBM的伺服器就不怕被老闆罵」的思維已逐漸淡化,連IBM都把低階伺服器部門賣給聯想,微軟開始與開源的Linux合作,要不是踢到鐵板,怎會如此?

因為敵不過開源技術的大趨勢,廠商踢到鐵板,只是早晚的問題而已。當然,專利和智財權,是開放資源的敵人,但只要能用開放資源賺錢,負擔合理的專利、智財費用,也還過得去。

相較之下,如果一昧保護,自我設限,可能會搞到產品沒有人理會,技術一文不值。有一些開源技術,來自於失去競爭力的產品,但這類技術本身也日落西山,為時已晚,沒甚麼看頭。

我在課堂上帶著學生看了一些近期的開源計畫的案例,來佐證以上所述。這些案例,包括:

1. Google的Open Source Projects網頁上列出的17個計劃簡介。(https://developers.google.com/open-source/projects)

Google號稱公開了20,000,000行程式碼,900個開源碼計畫,而網頁所列的這17個代表性計畫,都是我所謂「廣義的開源系統軟體」,包括作業系統、程式庫、引擎、程式框架、程式語言編譯器、開發工具,都是提供給應用開發者使用的軟體。由此可見開源系統軟體的重要性。

2. 2014年度最佳十大新鮮開源碼計畫("The top 10 rookie open source projects", http://www.infoworld.com/article/2875439/open-source-software/the-top-10-rookie-open-source-projects.html)

不是只有大公司才能做出好的開源計畫,這裡由媒體選出的十大新人獎,當然不見得一定是最佳的,不過很有參考價值。同學們可以看看程式高手怎麼樣從有系統地解決自己身邊的問題開始,藉由分享和交流成果,獲得贊助,逐漸壯大成為世界級的計畫,有的也成為商業模式。

3. RISC-V所提出的開放式的處理機架構標準 (http://riscv.org/)

Intel和ARM這兩家公司,藉由他們所定義的處理機架構(instruction set architecture),來占據處理機的市場。但這些二十多年前就訂出來的架構,究竟還能風光到幾時?

如果今天有個拋棄一切舊架構包袱、砍掉重練的開放式處理機架構標準,而且有個高品質的社群提供開源的硬體碼和系統軟體,在效能上能夠與ARM和x86並駕齊驅,可以讓我們整個系統的軟硬體都是開源的,不只能夠節省成本,而且在系統設計上將會有無比的彈性以及軟硬體相互優化的空間。

好了,短短三節課,我們沒辦法講太多細節,只能讓各位瞭解整個大趨勢,但我們已經帶各位入門參觀了。這個大觀園裡,有數不清的好東西,還有很多好人,不要因為門票是免費的,就以為沒有看頭,就不進來玩。

我們下周會挑個重點領域來多講些技術,在那之前,各位不妨抽空自己探索一番。如果能好好花時間去看懂以上提到的計畫案例,那應該會有不少收穫。

數學與計算模擬

對我來說,數學是很好玩的東西,小學開始拿著數學百科全書自學,幻想有朝一日能發明某個偉大的定理。但到高中後遇到電腦,到大學後搞懂「混沌」(chaos),瞭解很多東西只是戲論,不需要執著和拘泥於其中。

數學,撇開純粹理論性的研究,在實際應用上,作為科學研究法則之一的「analytical method」,好處是可以推導出公式解(exact solution),但缺點是很難幫複雜系統推出公式解,所以在工程應用上受到相當大的限制,這時往往得靠電腦來輔助。

過度重視數學分析和要求公式解的結果,會忽略了其他的科學研究和工程設計的訓練。科學方法重視:觀察 、解說 、預測 、確認、評估、發表(參考維基百科),而我們的科學教育在資源有限的情況下,只能讓學生被動地去學習科學知識、推導公式、用公式解題。

除了用數學理論和電腦做數值分析之外,實驗(experiment)是第二種科學研究法則,計算模擬(simulation)是第三種,而近年來,資料分析科學(data analytic)成為第四種重要的科學研究法則。學習用其他方式研究科學和工程,不是退步,而是進步。對我而言,與其在公式解上鑽牛角尖,我寧可多去學習多種科學研究方法,或是如何將數學導入實務研究。

我上週與台大數學系和物理系做計算物理研究(computational physics)的兩位教授餐敘,他們認為國內一向不夠重視計算模擬,因為台灣早年根本沒有高效能的計算設備,發展極為緩慢,在教學研究上還是以理論和實驗的流派為主,但現在雖然高效能計算日益普及,應該重新來思考這個問題。

我覺得模擬器的使用,會逐步被放到中小學。與其說是模擬器,不如說是「模型的建構、逼真度的驗證、用以預測結果、解構模擬對象」的科學研究方法的訓練。資料科學,也是如此。真正的科學研究者,探索的是真理,不拘泥於研究方法,沒必要堅持流派。

2015年11月15日 星期日

複雜系統的自造者

剛剛,我用一分鐘之內瀏覽完一篇Yahoo!機器學習研究團隊的貼文(註)後,嘆了一口氣,也鬆了一口氣。

能一分鐘看完,是因為這篇所講的,剛好就是我上週雇到一位研究助理所要做的事:請他去整合和研發出一套能用GPU加速Hadoop/Spark的系統。因為我們已經做過一些研究(例如Hadoop接上GPU,也裝過Caffe/OpenCL),所以我想這套系統應該可以在幾個月內建置出來,主要還是因為人員的訓練需要花時間。(想來工作嗎?)

嘆一口氣,是因為「想做的東西已經被做出來了,而且幾乎和我想得一模一樣」,所以感嘆我們的進度緩慢:一年前就想做的事,因為資源、人力不足,到現在才有比較足夠的能量來用力動手做。

鬆一口氣,也是因為「想做的東西已經被做出來了,而且幾乎和我想得一模一樣」,那證明我們沒想錯方向,所謂「英雄所見略同」。往好處想,我們就可以省點事,只要搞懂人家的東西,有辦法在人家做好的東西上面堆東西就好。

例如,在上面加上Google最新的開源碼機器學習軟體TensorFlow,或是用FPGA來加速如何?

坦白說,我在國內演講、談論這類想法時,最後不少聽眾總是以「你講得很對,但我們還是等等好了」的態度結束對話。我可以體諒這些聽眾們肩上的包袱,所以當面也沒想對他們個人說什麼,但很不客氣地在此說一聲,就是因為這樣不思進取的文化,把產業給拖垮了。

幾個月前,某家大公司的老闆與我談完後,說他很少遇到有這樣想法的學界人士,很欣賞我們的做法,交代手下要找我合作,但之後與他派來的手下談沒兩下,我就傻眼了。跟我說他們公司在雲端產業上做了很多研發工作,但每當我要切入技術面做深入討論時,他就顧左右而言他。

已經有多次了,我發現有不少大公司的中階主管,只會從國外廠商那邊道聽塗說,知道很多專有名詞,知道供給與需求的現況,但根本不懂系統軟體的技術面,也不懂如何創新研發。之後那家公司沒再連絡,我相信老闆的企圖心,但不知中階主管是如何對老闆回報?

我猜,草草了結的可能原因有三。第一,他不在狀況內,似乎有聽,但我不知他是否有懂;第二,他自己本身應該已經有一大堆工作和責任,大概會選擇跳過這種短期無法收割的研發,老闆如果問起,可能就隨便打發掉,反正我跟他又不熟;第三,老闆日理萬機,極有可能想不起來這檔事,我這個人又不喜歡勉強別人,不會主動去提醒他。

但是沒關係,反正國內還是有識貨的公司,資源雖然不多,還好這裡面用到的全都是開源碼軟體,不需要花大筆錢買,我們可以靠自己來努力,讓自己跟上時代,這也就是目前我所謂推動「開源系統軟體」的想法。我們靠自己來做點東西,就像自造者一樣(maker),有機會做出令人刮目相看的東西。

不過,要學這類效能導向的系統技術,不像學純軟體,必須要有個像樣的系統,光是在建置實驗環境上就很傷腦筋。我們最近好不容易拼湊出一個麻雀雖小、五臟俱全的運算叢集,花了很大力氣去湊錢,還得幫設備找空間,很麻煩的。

我們自己建一個以100Gbps Ethernet為骨幹網路的叢集,接上儲存、計算兩用的端點,有大磁碟空間、大記憶體、GPU,上面用KVM和Docker Container跑Hadoop、Spark、Caffe,還特別找廠商來教學生使用高速網卡做RDMA。

雖然人家Yahoo!和Google用上萬台伺服器做的事,我們沒有資源做,但我們可以思考如何善用幾十台伺服器來做研發。一個全高的機櫃可以放進16台3U的機器,最多可以放入總量2PB的硬碟、32TB的記憶體、128TFLOP的GPU。

知道嗎?十年前最快的超級電腦,也不沒有這麼強,現在世界排名第500名的高速電腦,也不見得比較好用。如果能好好發揮這樣的機能,就有很多機會做出很不錯的事,機器學習只是其中之一。

不過,要發揮機能,說的比做的簡單,有多少人做得到呢?就是一般人做不到,才有趣,才要學!我們以自造者的思維來研發創新,自己建系統、瞭解系統、提早把未來的應用發展出來,這是我目前想做的前瞻研發計畫以及想推廣的活動。

人才和教育訓練是最重要的,有意者參加我們的團隊和活動,無論是有心自我學習、有志於前瞻研發、想接觸最新科技,或是關懷學術產業發展單位,我們都熱忱歡迎。

(註)網址:http://yahoohadoop.tumblr.com/post/129872361846/large-scale-distributed-deep-learning-on-hadoop

程式語言

剛剛在臉書上與朋友談論到程式語言。

C/C++對我們做系統研究是很重要的,不過對於某類開發者來說,則強調利用scripting language來使用現成的工具做應用,求新求快。我們應該不能說這些程式語言有高下,但有些人像是入了某個宗派,一昧說自家的好,別家的不好。

說自家的好處,也無可厚非,只不過針對語言的使用情境應該要分辨清楚,而不是以偏概全地說,學某某語言才是王道。我想東西只要有用,都有其重要性,況且程式語言只是個工具,學生要能舉一反三,無論學生先學C、Java還是Python,重點都在於計算思維,如果真的懂了,第二種語言只是一碟小菜。

但教者和學者要知道語言與應用的關聯性,各種語言有其最佳的用途。學生如果不會C的話,進我的實驗室或是到業界從事與系統相關的研發工作時就會有問題。當然,這不代表學生不能先學Python再學C,也不代表他不能花時間學 Python或其他,而這個例子,當然不代表所有資訊產業。

不過,所謂「由奢返簡難」,由scripting language入門者,在遇到較低階的語言時,比較常有適應不良的情況。而設計應用軟體的,用很多友善的圖形介面工具,如果突然來做系統軟體,也常常適應不良。這是習慣問題,並不是改不了,如果當時學習得法,不是硬記的,問題應該不大。如果是硬背的,那當然就麻煩大了。

以下專談系統軟體人才的訓練:

我們發現大多數學生到了研究所,對於系統軟體所需具備的程式能力還欠缺許多,而過去系統廠大多只希望受過訓練的學生去幫系統寫驅動程式,所以學生們也不願積極學。所以我最近在推動的開源系統軟體,也有一部分的原因,是基於這些問題。然而有太多系統商等著要揀現成人才,卻不願贊助人才培育,只會大喊人才不夠。

我人微言輕,平時指導幾位學生,或是跟朋友們分享我認為系統軟體的重要性,而教育的決策,需要更多人一起來影響。例如,廠商若認為系統軟體很重要,不妨多提供一些高級研發的工作機會,或是直接提供資源贊助做系統軟體教學研究的老師。

我隨時歡迎關心人才培育的業界朋友來提供意見和資源,當意見是好的,資源也到位的時候,那麼對的事情就可能發生;但如果沒有直接給予資源,可能意見再好也沒有用。培育菁英系統人才是很耗資源的,需要有先進的設備和足夠的經費,我們才能多做些貢獻。

未來的金飯碗?

這所謂的12大金飯碗,有一個共同的需求:「善用大量計算解決問題的技術」。過去用作軍事、先進科學研究的計算技術,未來會結合大數據,同時低價化普及化到各種民間用途。

我不同意「金飯碗」的標題,因為容易誤導,而且原文用的是「顛覆性」(disruptive)領域。這些領域,之所以會被顛覆,共通的原因和過去那些被顛覆的領域一樣,往往是因為「新計算科技的性價比」遠遠超過舊的,所以被大量採用,取代舊科技的市場。

要顛覆舊的模式,談何容易?腦袋裡面只有舊想法的人,很容易就被顛覆了。以追逐「鐵飯碗」的想法去求「金飯碗」,恐怕會什麼都沒有。

2015年11月14日 星期六

搞清楚狀況再發言,很難嗎?

的確很難,以我自己為例,看到某些東西時心有所感,就會想記錄下來,若不如此,好比船過水無痕,那個心境已不在,沒有寫的動力。

此外,有些時事性的討論,如果不在第一時間加入,幾天後就沒人看了,當然會想在第一時間發表自己的意見。

然而,轉念一想,如果寫下的東西只是為了「逞一時之快」,而那個「心境已不在」似乎說明了感觸並不是值得收藏,那麼寫與不寫真的有差嗎?如果必須要在第一時間之後所發表的意見就沒有人看,那麼發表的東西真的有很大的意義嗎?

克服以上的慣性,並不容易。

而且現在的媒體報導,品質越來越難以掌握,看到媒體報導時,我都得三思:報導是否真實?論述是否合理?幕後是否隱藏特定動機?

舉例來說,前天各大媒體大肆報導李登輝前總統到成功大學演講的過程中,遭到陸生嗆話,於是有大批鄉民藉此高聲謾罵對岸,結果發現這個新聞報導的內容與現實差距甚大。(參考:http://buzzorange.com/2015/11/13/china-student-and-the-fact-of-these-news/)附帶一提,我不認為任何的政治訴求,可以高過於對事實的認定。

時代在改變,很多新的東西不是我們當年的樣貌,複雜的東西也不見得可以想當然耳。因為媒體品質低落,我們不能照單全收,只好在看的時候小心求證,但低劣的東西看多了,我們也容易在不知不覺中自以為是、以偏概全、過度放大自己。

例如有一篇網路文章,貼出小學三年級的數學試卷上老師批改內容,理直氣壯地罵教育、罵老師,殊不知自己完全在狀況外,不懂甚麼是「概算」。(參考:http://ww.thefundaily.com/cat65/node712910/24253)附帶一提,對於工程設計來說,概算非常重要,在構思時通常是在腦中或紙筆概算。(概算是否應該在三年級教,考題設計好不好,則是另外的問題。)

所以,我的原則是「不為惡」,評論已獲證實的事、分享無傷大雅的事,盡可能對事不對人,除非「人」已經成為「事」中重要且不可分割的一部份。因為對人造成的傷害,並不是更正內容就可以輕鬆了事的。

我的做法是,把想法記錄下來,但發言內容如果有狀況不明之處,需要進一步查證和釐清的話,則先不公開。除非內容有時效性,則我會盡可能標示狀況不明之處,以「假設語氣」和「弱化修飾詞」給意見。

我知道,這樣一來,我的文章的時效性不夠,內容不夠勁爆,但我想我寫文章最重要的是對自己負責,而不是取悅讀者,更沒有必要隨媒體起舞和瞎攪和。

望多一些本土廠商能夠拿出吸引員工的故事和實質作法

貼這篇(http://buzzorange.com/2015/04/09/costco-salary/)不是幫推Costco,而是希望多一些本土廠商能夠拿出吸引員工的故事和實質作法。

我上週去Costo,結帳時發現帳單有問題,分心看帳單時把皮夾忘在櫃檯,結帳半分鐘後到客服區訊問帳單時,發現工作人員把皮夾送來,而且訓練有素、很有效率幫我解決帳單問題,這讓我覺得工作人員素質頗佳,因此對這個故事是有切身感受的。

至於報導標題說桃花運什麼的,我就不知道了,因為沒個人經驗,內文也沒說什麼,恐怕又是標題殺人法。

臉書動態時報與臉書網誌

我兩年多沒用臉書網誌了,因為不好用。最近注意到臉書網誌與之兩年前的有些不同,所以試用了一下,做了點實驗,使用上還算方便,但是...

為什麼今天上午貼出同樣的內容,約莫四小時後,發在臉書動態時報上的收到290個讚,與同時貼出去的臉書網誌所收到的82個讚相比,大約是3.5倍?如果算分享的次數的話,大約是15比1,差距更大...

我想到幾個可能性:
(1)臉書的演算法比較優先推動態時報?
(2)臉友比較喜歡看動態時報?
(3)臉友的閱讀的習慣造成臉書優先秀動態時報?
(4)臉友看動態時報時比較樂意於給讚?
(5)比較喜歡看動態時報的臉友比較樂意給讚?
(6)臉友看網誌時比較不喜歡給讚?
(7)比較喜歡看網誌的臉友時比較不喜歡給讚?

以上的可能性,還可以排列組合出更多的可能性;如果我在臉書工作,可以取得更多資料,寫些簡單的程式,透過大數據分析,或許不需要太多時間,就可以完整回答這個問題 -- 大數據可以回答很多社會人文心理面的問題,前提是要有資料。

不過,我雖然沒有足夠資料,但根據我這個小實驗的結果,如果目標是提高點閱率的話,不要選擇放網誌,而且放網誌似乎沒有特別的好處,還是很難搜尋 -- 除非內容有多張圖表,非用網誌不可。

結論:臉書網誌功能對我來說仍然是雞肋。

2015年11月11日 星期三

悅讀程式

我說過寫程式像是寫文章,但仔細想想,我們很多人學習寫程式的方法,和學習寫文章所採用的過程,似乎有很大的差別。(網誌上的圖片,是從書架上找到的,我高中一年級時讀過的兩本原文書,放在這裡紀念我那段學習程式設計的歲月。)
大部分人如何學習寫程式?從寫Hello World!開始,一路學習程式語言的語法、控制結構、資料結構、演算法等等,但即便是資訊系的學生,除了課本中的範例程式、習題解答、程式競賽題庫之外,究竟看過多少別人寫的程式碼?
少得可憐。
學寫文章可就麻煩多了。我們從小先學會聽話、說話,然後才學認字讀文章,過一段時間後才開始學寫文章,這是自然的過程。如果沒有讀過幾篇文章,光是研究文法、修辭學、背成語辭典,可能成為好作家嗎?沒看過小說,可能成為小說家嗎?
不大可能。
很多作家每天還是大量閱讀別人的作品,欣賞和學習別人的才華。日常所讀的文章,多半比自己所寫的多得多。藝術家、建築師也不是整天埋頭苦幹,常常要去看過別人的作品。
但為什麼我們不是這樣學寫程式?為什麼覺得參加程式競賽得獎才是程式高手?
因為「急就章」。想要再最短時間內獲得一項技能的「認證」,最有效率的方式,就是針對認證所考驗的項目做準備,不考的就不準備。因此,學生會先去搞清楚,程式競賽考什麼?程式設計課期末考什麼?碩士班入學考什麼?程式技能檢定考什麼?某公司面試考什麼?
但急就章訓練出來的,問題很大。就拿進到研究所的學生來說,看不懂別人的程式碼,寫出很爛的程式碼的,不會用程式開發工具的,比比皆是。我們為了要做系統研發,不得不花很多時間訓練學生去看別人寫的程式碼,但不少學生視為畏途,甚至會排拒,以為要寫出屬於自己的程式才是神人。
對這類同學,我想我幫不了忙。
我想,急就章的作法很多,不是只有程式設計。國內學英文的方式,也有文章讀得太少的問題,和學程式設計的過程類似。台灣學生學習英文時,偏重於文法、單字、成語,很多學生除了課文之外,沒讀過幾篇文章,於是常常有些成績還不錯的學生用英文所寫出的論文,讓我目瞪口呆,欲哭無淚。
那麼,想扎實地學,學好後證明自己的能力,該怎麼做呢?
這裡有個簡單的方法:從大量「閱讀」開源程式碼開始訓練自己,到達能夠「悅讀」高品質的開源程式碼,進而對重要的開源程式碼計畫做出「貢獻」。
舉例來說,幾週前,大學沒畢業的黃敬群教授(jserv),帶著的一位剛從台大電機系大學部升碩士班的學生,到奧地利發表他們利用這個暑假對Linux/Xenomai開源碼所做的貢獻。沒有期刊論文點數,貢獻不被台灣的學術界承認,但這趟旅程獲得業界的贊助。
在國外,數不清的優秀軟體人才,熱心參與開源碼計畫,匯聚成高品質的社群和人脈;歷經千錘百鍊的開源碼計畫,擁有許多精益求精的程式碼,開再多課也講不完。
既然講不完,學校只是帶領入門而已,修行在個人。
我在2000年離開學校到矽谷的SUN公司工作時,看到身邊很多同事整天盯著螢幕看程式碼,有一天我忍不住問一位資深的同事,為什麼這樣做?他露出不可思議的表情後說,找別人最新釋出的程式碼來看,已經是習慣,也是興趣,沒事就會如此做,而且他們會以程式碼論英雄。說著說著,一邊指著螢幕上的程式碼,開始評論起作者的寫作風格。
此後,我不敢自稱為軟體工程師,因為我知道我看過的軟體程式碼太少。但是因為工作需要,我必須分析幾個大型軟體的效能,想辦法找出瓶頸加以改善,包括當時最精良的作業系統Solaris,網頁伺服器iPlanet Web Server和Apache HTTP Server,以及幫通訊加密的NSS和OpenSSL,也用了開源碼解決不少工作上的需求。
幸好,我廣結善緣,周遭這些同事幫了我很大的忙,公司裡面厲害的人太多,我也從他們身上學到許多。也因此,我始終還是不敢自稱為程式專家,因為和這些同事的程度差太多了,追都追不上,還好我另有專長。
十年前回國後,莫名地接到了要開一門新課「Linux Kernel and Device Drivers」的任務,我這個非程式專家,花了很多時間了解Linux kernel的原理和程式碼。為了教「平行與分散式程式設計」,我也得學Hadoop、CUDA、OpenCL等新出來的東西,但我在教學相長、樂在其中的同時,我發現很多學生是不看程式碼、不懂得自學的。
因此,我想鼓勵想自學的朋友一起來悅讀開源碼系統軟體。
挑選系統軟體,有幾個原因:第一,世界上非常多開源碼計畫,我不想太發散,我們必須先聚焦在特定領域上;第二,系統軟體與台灣的產業高度相關,可培養產業轉型所需的軟實力,又不會距離太遠;第三,這是我個人的研究專長和興趣。
因此,我稍早說我這幾年想推動開源碼系統軟體,除了這些軟體本身的重要性之外,還有其更廣泛的教育意義:希望讓我們的學生和業界朋友,一起來多讀一些高品質的程式碼,研討大型的軟體專案的架構和運作方式,來提升自己的眼界。由此入門,逐漸能充分運用和賞析別人的作品,應該比較有機會成為高段的軟體設計師。
我希望多成立一些愛好開源碼系統軟體的社群,藉由賞析和討論這些重要的開源碼來促進軟體人才的跨國交流和合作,希望大家能一起來提升國內系統軟體研發的水準。不然,我們很難有世界級的軟體人才。
話說,學程式設計和學英文,可能相輔相成,這是我個人經驗談。
我自己因為高一時迷上了電腦,嫌當時中文翻譯的書太少,時常到重慶南路的書店站著原文書,也省吃儉用買了不少書回家看,不知不覺中增進了英文閱讀能力。隨後我發現,學校英文考卷上的閱讀測驗和作文,對我來說都不是甚麼大問題。
延伸上述個人的經驗,我提出幾個臆測:(1)多讀優質的開源碼,有助於英文的學習。(2)程式設計的訓練,有助於英文寫作。(3)英文能力的提升,有助於理解高階的程式碼 (4)英文能力和程式能力的提升,有助於與國外交流以及走上國際舞台。
話已經說在前頭,這只是我一時興起的臆測,是否適合每個人,請自行判斷。但現在隨手可得的電子書、程式碼教學、線上課程這麼多,如果師父帶進門之後,因為不懂得大量閱讀而學藝不精的話,恐怕要怪自己了。

2015年11月8日 星期日

台大電機高材生在矽谷被開除又如何?

這篇【一時魯不代表一世魯!台大電機高材生在矽谷被開除後的反思】(http://buzzorange.com/techorange/2015/11/06/i-got-fired-in-sv/)值得年輕朋友參考。

美國的公司很現實,你的才能對公司有幫助,公司就會付出相當的代價雇用你。反過來說,工作能力不符合公司的期望,被解雇是常見的事,管你是台大電機還是柏克萊畢業的。

我猜,作者被解雇的原因應該是「程式能力不足」。這個推論來自於作者的自我嘲諷式的說:「唯一小小的障礙,就是我想成為軟體工程師,可是我還不會寫程式 。 」

「寫好程式」這個技能,往往不是隨隨便便可以取得的。寫程式像作文,即便天資聰穎,也需要幾年的學習;文章要言之有物,更要能夠連結到個人的生命經驗或專業領域,也需要一段時間。

然而作者在柏克萊讀書時可能輕忽了學習程式的難度,他說:「在柏克萊讀書的一年之中,從開學第一個禮拜就開始跟這些新創公司面試,明明知道會被拒絕還是硬著頭皮上。每次的面試我都會準備一大堆問題, 把自己當然投資人一樣東問西問。技術,團隊, 商業模式。 我知道內行人一定覺得這樣很可笑 不過對我而言,每次的學習都如同取經般重要。 一年內我面試了超過一百家公司,過程的坎坷暫時省略, 最後拿到了五份聘書,加入了這家我覺得團隊技術都很棒的公司。」

看到這段描述,我只能說:「Good luck!」,因為作者顯然很有學習的動力,也非常有毅力,而且相當自信,因此當我遇到這類想法的優秀同學、同事、學生時,除了支持的話之外,不想多說些甚麼,他們多半也聽不進去,因為這是他們相信的成功之道。

只是我個人認為,如果想要去一家軟體公司,最好還是先想辦法把寫程式的功力鍛鍊到某個程度比較好。很多東西要靠自學,需要動手做過,我寧可把去一百家公司應徵的時間,拿來充實程式技能,這是比較務實的做法。

作者之所以選擇在一年內面試了超過一百家公司,幕後的思維可能源自於幼年時期的訓練,因為他說:「從小到大,通常都是人家丟給我一道題, 我把它解出來,然後解不出來就抄旁邊的。作業如此,選科系如此,價值觀如此,一路高雄中學台大電機柏克萊亦是如此。」

在一年內參加超過一百家公司的面試,等於是多方蒐集考試題目,搞清楚這些題目的解答,不管是否真懂,就能通過面試,等於是一條捷徑。我想,這其實不只是作者個人的想法,也是許多台灣學生們共同的想法。

資工系畢業的學生不大會寫程式,早就不是新聞了,因為他們努力的目標,一直就是通過某項考試,而不是充實就業能力;而他們似乎相信,只要進到某個場域,同樣的做法依然可讓他們過關斬將。(不然呢?)

如此有毅力,也真的拿到了聘書,但真正的問題此時才開始。有些人看似一帆風順,其實內部充滿了問題,如同在不肥沃的土壤上揠苗助長出來的植物般,看似長得快、爬得高,但不具特色、沒有方向、外強中乾、心靈空虛,承載不了大事業。

以上只是觀感,不是對作者的批評。我相當欣賞作者的反省能力以及文章後段的感悟。沒有失敗,不大會反省,也難以進步。經過一番風雨,我想作者的再出發應該會有新的感受和收獲,而這個失敗則是其人生重要的轉機。

2015年11月6日 星期五

大數據分析與高效率異質運算

在萬物聯網的時代,人機互動頻繁,機器與機器之間以高頻率合縱連橫,大數據分析成為提升智慧和生產力的重要工具。在很多場合中,運算不再只是為了滿足傳統需求或是取代人力,而是為了增進使用者經驗、預測物理世界的行為、建構擬真的電腦世界、探尋未知的知識、賦予人類新的能力。許多以往只存在於科幻電影的情節,可能會隨著運算能力的成長而逐漸出現在我們眼前。

然而,由於數據之大、分析之複雜,要率先開發出上述的應用,必須仰仗高效率的運算能力。在這樣的情況下,史無前例地,異質運算已不再是超級電腦和少數科學家的秘密武器,而是開發者用以挖掘大數據金礦的新銳工具。誰能夠善用多核心處理機、計算叢集、GPU、FPGA、硬體加速器,誰就有可能領先群倫,率先在新領域上建立灘頭堡。以往我們在超級電腦上所鑽研和使用的技術,大量地被用來加速大數據的分析,懂得如何駕馭這些技術與工具的專家,也應運成為炙手可熱的人才。

在這八個小時的課程中,我們將擇要解說大數據分析與高效率異質運算的基本概念,介紹具代表性的軟硬體的架構與技術,最後做若干個案的探討。這是一個進化迅速的領域,我們希望藉由本課程的內容來澄清和增進這個領域所需的運算思維、連通概念與實務,作為入門的階梯。

1. 大數據分析的基本概念
2. Apache Hadoop開源碼計畫
3. 高效率異質運算
4. 連通大數據與異質運算
5. 個案探討

(以上是準備中的短期課程的課綱)

2015年11月5日 星期四

開源系統軟體的教學與研究計畫

這是我接下來幾年在技術和學術上想努力推動的目標,希望有共同興趣的學界、業界朋友有機會能一起來打拼。目前,我已與台大徐慰中教授、成大黃敬群教授有了一些初步的討論和共識,我也很歡迎對上述構想有興趣的教授、長官、朋友們提出建議和參與行動。我正在徵求對於開源系統軟體有興趣的(全職或兼職)研究助理和行政助理,有意者請與我聯絡。

注意到,這裡談的是「系統軟體」,而不是一般的開源碼計畫,目標不是創造新的開源碼計畫,而是探究如何善用、改造、特殊化既有的開源系統軟體去創造高品質的系統和應用。

【開源系統軟體的教學與研究計畫】

開源軟體(open-source software),對於資訊科技的發展扮演非常重要的角色。尤其在系統軟體的領域,開源碼計畫更是遍地開花。90年代以Linux作業系統為核心開始集結各種開源碼軟體,顛覆商用軟體壟斷的世界,乃至於有00年代的雲端運算的普及 -- Android手機作業環境和OpenStack伺服器作業環境均採用了大量的開源碼。

近年,更有許多專為物聯網和大數據應用設計的開源系統軟體計畫,例如ARM推出給物聯網使用的mbed平台(註一),用於大數據儲存與分析的Hadoop(註二)。作為使用這些系統與中介軟體的一般應用開發人員,或許只需要略為了解其原理,搞清楚程式設計介面(API),應該不會太難上手。但是要如何針對應用的需求和系統的特性進行效能調校(performance tuning)、客製化(customization)、特殊化(specialization),則必須深入理解系統的工作原理和實地耕耘相關的系統軟體。

放眼國內業界,很多的高階、前瞻的資訊科技研發項目,都需要上述具備足夠能力來發揮與開拓開源系統軟體的潛力和價值。能夠好好調校Hadoop,善用新的系統架構,產生十倍以上的效能,或是解決十倍大的問題,以千萬等級的設備達成他人億元設備所不能達成的功能,這樣的機會隨處可見,如果國內有更多兼通理論與實務的系統人才,那麼台灣會有更多的機會將長年投注於硬體產業所產生的優勢轉型提升至系統層次,例如專為某類型大數據應用特殊化的大數據專用系統(big data appliance)。

但問題是,我們該如何訓練這類兼通理論與實務的系統人才呢? 在資工系的「作業系統」「計算機結構」這兩門課程中教授了不少系統的工作原理,但大多數的學生不容易將原理加以運用;到了業界後,也不大容易透過零碎的訓練課程和單一的工作經驗來整合出完整的系統理論與實務能力。

因此,我想利用「開源系統軟體」作為主題和媒介,展開一系列的教學和研究活動。我希望能邀集到國內通曉開源系統軟體的專家學者,到我下學期開設的【開源系統軟體概論與實務】課程中教授重要領域中具代表性的開源系統軟體,一方面探討這些軟體幕後的原理和設計的方法,一方面要求修課學生瞭解與實地接觸這些開源碼計畫,帶領學生們探討這些計畫的未來發展方向,並且鼓勵學生在期末專題中提出可行的研究計畫。

同時,我想這也是很多學校和業界所注重的領域,因此我希望盡量將課程和研究的資源與學界和業界分享,並且也希望業界來幫忙推展開源系統軟體的教學與研究。我希望利用這幾年的時間與大家一起來深耕開源系統軟體的領域,厚植技術開發與學術研究的基礎,基於開源碼的精神,打造出一個以貢獻和互助為宗旨的技術交流和分享平台,再以此平台培育優秀系統人才以及幫助業界開拓未來。

目前構想中的一學期(18周)的課程概要如下,課程內容可能需要進一步做取捨或修改,如果內容太多,無法割捨,只好考慮開成上下學期兩門課。我們的下一步則是規劃一個【為期兩到三周的暑期密集訓練課程】,如果進度順利的話,將在明年暑假提供給學界和業界參與。講課的部分,錄下來上網應該沒問題,但課程的重點是實做的部分,這也是系統人才不易培養的原因,我希望有辦法設計出容易上手又有深度的實作課程,加上開源硬體,看看能否解決這個問題。

【課程概述】

開源系統軟體的重要性,如上述,不再贅述。

由於重要的開源系統軟體很多,我們將選擇IoT與Big Data領域為當前的重點,挑選具代表性的軟體,製作教學模組。每一模組針對特定領域,教導學生學會使用該領域的代表性軟體,同時鼓勵學生深入探索該領域其他的開源系統軟體,訓練學生舉一反三,進而引導學生思考如何研究改進開源系統軟體。學習使用、多方探索、研究改進,是成為高手的三部曲。我們希望以這門課程帶領學生入門,也希望藉此建構強而有力的開源系統軟體社群,吸引更多高手來教與學,共同來提升臺灣的開源系統軟體的水準。

【課程目標】

在於讓研究所與大學部高年級修課同學:(1) 瞭解開源系統軟體的背景技術知識 (2)  學習使用開源系統軟體開發應用 (3)探索相關的開源系統軟體 (4) 探討如何改進開源系統軟體

【課程大綱】

1.  Introduction to Open-Source Software
1.1 History and concept of open-source software
1.2 Use of open-source software
1.3 Value of open-source software

2. Open-source development tools
2.1 Project and version control system (github)
2.2 Compiler tools (gcc, LLVM)
2.3 Performance analysis tools (perf, Oprofile, valgrind)

3. Open Source Hardware
3.1 Arduino
3.2 Raspberry Pi/Banana Pi
3.3 RISC-V

4.  Open-source Operating Systems
4.1 Linux kernel
4.2 Linux application development
4.3 Android
4.4 Real-time OS
4.5 ARM mbed
5. Open-Source Virtualization Software
5.1 KVM
5.2 QEMU
5.3 Docker

6.  Network Services and Security
6.1 HTTP servers
6.2 WebKit
6.3 OpenSSL
6.4 OpenStack

7. Software Defined Network
7.1 OpenFlow
7.2 Network Function Virtualization
7.3 Software Defined Storage

8. Distributed Systems
8.1 Apache Hadoop and MapReduce
8.2 Apache Spark
8.3  Apache Kafka

9. Machine Learning
9.1 Support Vector Machine
9.2 Caffe Deep Neural Network
9.3 Apache Mahout

10. Project Presentation and Demo
成果發表會

(註一) ARM mbed OS, https://www.mbed.com/en/development/software/mbed-os/
(註二) Apache Hadoop Homepage, https://hadoop.apache.org/

2015年11月4日 星期三

在人生十字路口上做研究

有位素未謀面的台大電機低我24屆的學弟來信,說「目前人生正在一個非常艱難的十字路口,盼望能夠向一些師長們請教,藉由一些指引和建議來幫助自己做出最好的決定」。我想,他所遇到的問題,可能也是不少年輕朋友會遇到的,所以把遇到的狀況和我的想法分享在這裡,讓在類似處境的朋友們做參考,同時也歡迎各位先進給一些建議。

他目前正在美國某一流大學就讀博士班的第二年,但在研究上遲遲沒有太多進展。他說「由於不太能適應老師的研究模式以及帶領學生的態度,這段時間以來比較像是為了應付老師並給予研究進度,比較沒有自由去發揮,過得並不是很開心,開始思考是不是有更好更適合自己的地方可以選擇。就在前一陣子,跟老師講開了所有心中的想法,決定做到這學期為止,下學期慢慢思考是否要轉換去其他的實驗室,或是就拿到碩士學位出去工作(美國或台灣)」。

除了跟指導老師相處的問題之外,他說「在這一年半摸索(實驗室的研究領域)下來,會覺得這個領域的問題都還滿開放也還算有趣,但並不是很確定自己是否能夠有心作很長期的研究。聽到許多前輩或是網路上的文章會說,作研究要有長期抗戰的準備,也有長久保有恆心與毅力,並且未來工作可能也是要繼續從事研究,才能真正發揮博士的價值。」

他也有相當程度的反省,說「我想我可能就是台灣教育制度底下,那一類只會考試達到目標上好學校,但是十分缺乏自己想法只會隨波逐流的人吧,一直都不是很明確知道自己想要從事怎麼樣性質的工作。在做研究這方面,我相信如果有投注大量心力下去,應該還是會有些成果,最後拿到博士學位,但是在這上面需要的時間成本真的太高,而且我不希望自己只是為了拿到博士學位,而過著自己不想要的生活。因為個人家庭因素的關係(家人的健康跟經濟因素,以及正在遠距離交往的女友),可能無法忍受待在美國太長的時間,因此心中打算大概三五年內就會想要回台灣。」

他忠實地寫出想法和自省,也讓我有所感觸,因此我特別多花一些時間,除了回答他信中特別詢問的三個問題之外,連帶著寫出一些個人的心得。這些大哉問,沒有標準答案,除了分析一些客觀條件之外,我多談了個人層次的東西,並非推銷個人理念,而是希望每個人在潛心思慮後,能建立一套有個人特色、屬於自己的立身處世之道。

Q1. 我第一個想要請教老師的問題是,如果拿到美國博士的學位,立刻回台灣的業界工作,是否優勢有限,不如直接拿完碩士去業界累積經驗呢?(對於學界或是當教授並沒有太大的興趣)

A1. 我想,回台灣的業界工作,先知道台灣業界的狀況。以我個人的所見所聞,台灣目前的業界比較需要「即戰力」,如果你的專長不足以對公司在短期間產生重要的貢獻,公司大概不會想以高薪僱用你,這個跟你的學位在哪裡拿的,應該沒有太大的關係,主要是業界的文化。所以,以剛拿到博士學位的人來說,除非你擁有某家公司極缺乏的關鍵技能,才比較有可能高薪被僱用。

如果在美國拿到博士或碩士後,只是去小公司做個一、兩年技術研發工作之類的經驗,當然對於回台灣工作有些許的加值作用,但我不確定這樣的工作經驗是否有決定性的差異,因為待在小公司也不見得能夠擴展太多的視野,而一、兩年的歷練實在太短,很難真正取得關鍵性的技術。當然,國外一流大學的碩博士學歷,在日常生活中聽起來還是很不錯的就是了,只是業界中低階層的工作,比較注重的是工作能力,不是學歷。

不過呢,在美國大公司工作過五年,被上司賞識拔擢過、完成重要使命、見過世面的人,是有差別的,而且從言談舉止中是可以看得出來。以我個人的經驗來說,進大公司與一流的人才共事,以開發一流技術、超越世界級的競爭對手為目標,執行跨團隊的計畫,而且在做出一些成績的同時開發自己的潛能,這樣的經驗是非常寶貴的。

這樣的經驗給我多少優勢呢? 我想,對我來說最大的優勢,可能是比別人多了一些選擇工作的權利吧? 我十年前選擇回國教書,台大資工系之所以僱用我這個沒發表過期刊論文的人,大概是因為我的業界經驗;而我這十年間之所以可以做些層次還算不錯的產學研究,不斷有公司以高薪挖角回業界工作,也應該是拜業界經驗之賜。

其次,由於當年博士班與業界訓練的經驗融合在一起,讓我學習到如何在某些領域不斷超越自己,學習高處不勝寒的環境中挑戰自己,即使回台灣教書之後沒有充足的資源,就算平日只能教學校裡的菜鳥低空飛行,但過往的經驗,仍舊使我可以回到那個高度去眺望世界。

但飛得高,不見得會賺錢。如果要純粹論功利的話,拿完碩士去業界累積經驗,對於心中並不大嚮往達到以上我那個不知所云的高高度的人來說,或許是最省事的辦法。道理很簡單,像你這樣有資質在美國一流大學拿博士,但對於在學校當教授沒興趣的人,通常很容易就可以在業界成為中流砥柱,提早三五年開始職涯,自然是不會錯的做法。就算後悔了,之後再回學校拿博士,也不會太難吧?

反過來說,多花五年拿了博士,再花五年去業界歷練,過了十年之後,台灣變成甚麼樣子? 台灣業界的需求是甚麼? 誰知道呢。如果找不到像樣的工作,賺不到預期中的黃金屋,那該如何面對自己和家人?什麼個人的高度又有什麼意義?所以說,如果純粹從物質層面來思考,念博士像是不大划算的賭注。我當年如果沒有念博士,現在可能早就賺夠,成為科技新貴、住豪宅、開名車,但我並不特別羨慕那些,因為我還頗認同這個一路跌跌撞撞走到現在的我。(請參考我對第三個問題的回答。)

另外,就我的觀察,台灣的社會和業界可能會改變很大,我猜測是朝我樂見的方向發展,但有很多不確定的因素。我個人很主觀的看法是,雖然現在國內缺乏尖端人才或是浪費人才的現象時有所聞,但業界遲早會需要有實力的人,因為台灣人夠聰明,總有人會找到出路。而這條出路很清楚,不是靠著天然資源,也不是靠著賣土地、賣勞力,是靠著腦力。

這好比三十年前很多優秀人才出國,留在國外發展居多,一則認為回到台灣無用武之地,一則不看好台灣當時風雨飄搖的環境,但那些少數回國的人,以及留在國內沒有出國的人,後來發展得挺好的。所謂三十年河東、三十年河西,台灣這十多年看起來在很多方面一直在退步,但或許這種種的教訓也是足漸累積再起的能量,未來有更大的進步空間。

但未來台灣的產業究竟會如何?該選擇哪個專業領域比較好? 我想這剛好也就是您第二題想問的,所以請參考我對第二題的回答。究竟該如何看待這些世局變動和個人的生涯規劃?我在第三題的回答中略述我的想法。

Q2. 第二個問題是,是否要在一開始確定自己有興趣的領域是非常困難的事情,往往需要做些賭注?這段時間下來,我會認為一個能夠給予引導並正確帶領學生的老師才 是決定博士班是否具有價值的關鍵,研究的領域或是題目倒是其次,只要自己不會太排斥就可以了?

A2. 說難聽一點,大多數的資工系大學部剛畢業的學生,對於資工系的專業認識還不大夠,對於業界的生態也似懂非懂的,在選擇研究所專業領域時,像是瞎子摸象。憑著懵懵懂懂的印象去做選擇,有點憑運氣,但有時候興趣是可以培養的,所以在選擇興趣時或許也不必太過計較利害得失。認真嘗試過,如果真的不感興趣,那就換個興趣吧,可以平常心看待。

理想上如此,但一般人為什麼不能平常心看待呢?因為當我們把興趣賦予價值的時候,興趣就不再是純粹心理面上的興趣,而連結到維持生計和事業發展上,往往必須做出某種程度的妥協,這也就是你說的「只要自己不會太排斥就可以了」。我想,人生中時常會出現這樣需要妥協的局面,真正要平常心看待的,可能就是這些妥協了。逐漸提高自己的能力和視野,在面對需要妥協的局面時,能夠悠然面對,是何等的境界?當然我們一開始不會如此心安理得,必須訴諸於外在的因素,但我想說的是,隨著生命經驗的豐富,我們學習如何調適自己、面對未知、安住於心,這才是大課題。

離題遠了,回來談談小課題吧。資工系的領域很廣,而且變化快速。學生如果本身的視野有限,又沒有對特定領域絕對的喜好,選擇一位自己能夠欣賞和信任的教授,也是一個好做法。當然,在選擇指導教授時,同時也考慮到教授的風格和領域。

如果未來想去學界,那麼選擇的範圍大很多,但正如你所說,教授能否給予引導並正確帶領學生的老師,才是決定博士班是否具有價值的關鍵。因此,成天在外忙碌的大牌教授未必是最佳人選,剛剛進學校的菜鳥助理教授也未必不好。

如果未來想去業界,那麼選擇教授的風格和領域也是頗重要的。有些教授時常有產學合作計畫,那麼做這類型計畫所受的訓練,自然比較可能符合未來業界的需要。雖然說領域可以畢業之後再轉,但是通常不大容易。譬如做演算法研究的博士,不大容易轉行做系統,反之亦然。不過可以設法擴大領域,或是做跨領域的研究就是了。

Q3. 第三個問題是,是否「研究」這個工作只真正適合那些能夠有恆心毅力與熱情的人呢?(關於念博士的問題,我也看了許多網路上的資源(Quora或是老師網誌上的文章)但感覺有些更根本或是心理層面上的問題,始終沒有獲得解答)

或許是家庭背景的關係,也是經過了一些華人守舊觀念的思想,在這邊的日子常常會覺得,如果能夠趕快工作有了穩定的收入,結婚並成家立業,還能賺錢孝順父母,就是很大的滿足了,往往會一直羨慕著那些已經去工作的同學們,進而常常覺得自己在這邊念博士班,追尋著一個好像不是自己真正想要的目標,心態上往往很難調適。如果跟別人說,因為覺得在這邊太累了,想要回台灣好好找個工作就好,可能又很怕會被當作草莓族,說是無法吃苦。該如何找到真正適合自己的志業跟生活,並跳脫那些刻板的思維呢?

A3. 所謂「樂極而生悲,苦盡而甘來」,追根究底,大環境的變遷、個人外顯的成就,如果所造成的,也不過就是人對於自然的輪迴變化所生的感受而已,那麼撇開生存之所需,所謂的恆心、毅力與熱情,他們的意義和原動力在哪裡?

如果所謂的恆心和毅力,只是幼年培養和訓練出來的習慣,那也不過就是一些內化之後的框架和束縛而已。不是說這樣的框架不好,因為你這二十年的恆心和毅力,讓你進入台大電機系,乃至於跟著你到美國一流學校做研究。但是,不明白其意義與原動力,恆心和毅力,也只能帶你到現在這個境界了,而且不只如此,他們也有可能成為你未來人生中的束縛。

如果恆心和毅力的原動力來自於「熱情」,而你能夠確知這股熱情是取之不盡、用之不竭的,那麼你就能夠樂在其中,而恆心和毅力的意義性就昇華成為貫徹與發揚這個熱情,根本不用談甚麼責任、義務。

雖說道理可能很簡單,但人生是非常複雜的,「找到熱情」和「明心見性」一樣困難。來得快、去得也快的熱情,是不足以承載人生的。取之不盡、用之不竭的熱情,能夠讓心中時時充滿希望和溫暖,但未必是狂野奔放的。諸葛亮有句名言:「非澹泊無以明志,非寧靜無以致遠」,隱約描述了他的熱情。

對於你這第三個問題,我覺得,與其說「研究」這個工作只適合那些能夠有恆心毅力與熱情的人,不如說高境界的熱情、恆心、毅力,往往是有能力深刻品嘗和研究人生的人才能體悟到的。同時,我也認為,與其說你在一個目前人生正在一個非常艱難的十字路口,不如說你正在尋求突破自己,真正開始思考如何找到那個真正的自己。

不要怕失敗,被人家當成草莓族又如何? 真正重要的是你有沒有料... 有沒有好好認識你自己、研究你自己、欣賞你自己? 我想,這也是生命中很重要的課題,不妨把握這在這個十字路口上的機會,多做些研究。

2015年11月3日 星期二

把握新創的機會

話說前年VMFive剛成立的時候,幾位創辦人來我,我大力推介給實驗室學生,但同學們似乎是興趣缺缺,後來VMFive大放異彩,獲得資助,廣徵人才,但大多數學生似乎還是寧可跟隨學長的腳步,去一些路人皆知的公司。

同一年,葉丙成教授想創業,我推介給學生,還跟葉教授一起開課培育能翻轉教育的人才,但還是很難找到願意投入新創事業的資工人才,後來葉教授獲得鴻海投資1.8億台幣, 成立了BoniO。

我去年幫Appier諮商,後來也是大力推介給實驗室學生,終於有一位學生畢業後去這家我很看好的新創公司工作,看看Appier獲得7.5億元的B輪資金,大部分憑藉著公司經營者的眼光和公司的技術研發能力。

今年另外有一位學生畢業後創業去了,在NTU Garage和幾位志同道合的朋友開創了Himelight,我日前也推介過,公司目前發展得很不錯,希望未來會大發利市。

坦白說,我願意大力推介的新創公司不多,從以前到現在也不過就推介過這幾家... 當然好的公司不只這幾家,但即便我說再多,一般同學普遍還是對新創公司有所疑慮,覺得進大公司比較安全。

當然,這些年新創成為風氣,但新創公司良莠不齊,也是個問題。但我有我的判準 -- 沒有真正創新企圖心的,技術含量嚴重不足的,包裝華麗但商業模式矛盾的,只能依賴政府補助的,我一概不推。

只不過我窮酸教書匠一個,沒有錢投資,我也不是那種手中握有大筆創業基金的大長官,對於這些我所看好的新創公司,幫不了什麼大忙,實在有點遺憾。所幸他們都很爭氣,沒有讓我跌破眼鏡。我認為自己看新創公司的眼光還不錯,大概是35年來不斷關注資訊科技,目前人不在產業界,手上沒有股票的緣故 -- 所謂「旁觀者清」,大概就是這個道理吧。

這些都是軟體公司。誰說台灣只能做硬體和代工? 山不轉路轉,最黑暗的時代也是最光明的時代。躬逢其盛,希望年輕人能把握良機,但也要慎選公司,在在都在考驗你們的勇氣和智慧。

2015年11月1日 星期日

出考題

評論: http://buzzorange.com/vidaorange/2015/04/27/mandarin-examination-papers-for-5-grade/

我出的考題也常常令學生或考生跌破眼鏡 ;-) 我好幾年前就開始這樣做,如果問我原因的話,我的回答可能與這位老師類似。還好,對我來說,頂多是修課學生不滿,教學評鑑分數受影響而已,沒有被家長或補習班指責過。

據說,坊間流傳,台大資工的研究所考試的某些科目考的東西「難以預期」,背考古題不大有用。我想,這正是一些老師和我所希望傳遞的訊息:不要死背書,要會活用知識。(不過,出這類題目真的辛苦許多。)

有些學生說,看到考卷上出現課本裡沒看過的題目,而且題目敘述超過一整頁的時候,腦袋就呆住了。我想,很多學生可能沒有受過這樣的訓練。當然,為了不讓「用功背書、悟性不高」的學生過度受挫折,我通常還是會出一些基本題就是了。

如果每位老師都願意這樣出題,我想應該可以改變一些讀死書的風氣,只可惜研究所距離中小學太遠,一般學生和家長還是會先想著解決眼前的考試再說,很少有老師甘冒大不諱做這種吃力不討好的事。