MIT的豆腐駭客

在MIT可以遇到各種奇奇怪怪的人,有很多是傳說中的大人物,像是發明WWW的Tim Berners-Lee就跟我在同一棟樓裡工作,即使在廁所裡遇到也不是很奇怪的事情。也有很多乍看之下就像一般學生,但認識後其實才發現他的一連串驚人事蹟, 像是跟我一起修Machine Learning和Database的同學Ted,竟然已經寫了好幾本書...。到目前為止,我認識一個最神奇的人是一個叫Dheera的印度學生。他雖然看起來是個標準的印度人,但他說英文沒有印度口音,更扯的是他竟然會說中文,而且不只是能用中文跟我聊天,連讀寫(簡體)中文都沒問題,甚至還會用拼音輸入法打字。他非常熱愛中國文化和中國食物,他今年暑假就自己一個人跑去北京,一路坐火車到新疆,就這樣在中國自己闖蕩了一個多月。一個會說中文的印度人已經讓人夠驚訝了,但後來跟他去逛中國超市時,才發現他不但對蔥薑蒜等中國食材瞭若指掌,而且還告訴我他其實還會自己做豆腐!!他說超市賣的豆腐不好吃又貴,所以他都自己做,他甚至還為了豆腐而自己做了製作中需要用到的特殊容器。除了會做豆腐外,他的房間裡還掛了兩個大大的紅色燈籠。很特別的是,從他的窗外遠遠看會覺得燈籠裡面好像是蠟燭,火光會不定時的些微閃爍,但真正的秘密是:那兩個燈籠裡面是燈泡,可是加上他自己寫的控制晶片讓兩個燈泡有忽明忽暗的效果,一切就是為了讓燈籠裡看起來像是真的有蠟燭一樣!!我只能說Dheera真是讓我大開眼界,真沒想到MIT除了有很厲害的科學家和工程師外,竟然還有這種會說中文的豆腐駭客...。(我想他上輩子一定是中國人...)閱讀全文

Google瀏覽器Chrome即將現身

一向以Web上的應用程式為主力的Google,終於又要向前邁進一大步了。根據Official Google Blog的公告,Google將在明天推出自家的瀏覽器Google Chrome。從Google blog和Google Chrome漫畫上可以看到Google Chrome有幾個特點:
  • Chrome內含新一代的Javascript引擎: V8,這是為了讓網頁上的應用程式能夠執行得更快更好,而不只是瀏覽頁面而已
閱讀全文

追求神乎其技的程式設計之道(六)

追求神乎其技的程式設計之道系列最近新玩具太多,差點讓我的blog被N82系列文章淹沒了。幸虧即時看到qing兄兩篇不錯的文章程式設計的兩個觀點 (1/2)程式設計的兩個觀點 (2/2),讓我決定還是來早點把這個系列寫完,不然就快變富奸了。qing兄的兩篇文章指出程式員的兩種型態,一是重視演算法、資料結構、執行效率的「效率魔人」,二是重視程式架構、擴充性、彈性、可理解性的「架構狂」。這兩種人其實都很好,要完成一個偉大的軟體,團隊中兩種人一定都要有。比較糟糕的是,有很多「第三型態人」,他們的信念只有一條:「程式只要會動就好」。第三型態人不在乎效率,也不管架構漂不漂亮,上面要求他做什麼,他就想辦法東湊西湊,從Google找程式剪貼,從MSDN抓範例來用,反正只要能隨便測過一個case就能交差了。其實第三型態人也不一定是不懂演算法、不懂design patterns,他們常常只是因為火燒屁股了,就不管三七二十一先弄出可以動的程式再說,效率或架構等到下一階段再來改就好...。問題是,下一階段又有新的功能要做,這些人再度面臨抉擇時還是會決定先讓程式「會動再說」。我看過很多各式各樣的程式員,只要碰到這種人,同樣的過程是履試不爽不斷出現。所以要成為一個優秀的程式設計師的關鍵是什麼?關鍵不在於coding速度有多快、懂多少演算法,或是背了多少patterns,最重要的是「熱情」!偉大的程式設計師都非常喜歡寫程式,寫程式的過程是一種絕妙的享受,他們執著的地方或許不同,可能是程式的效率,也可能是開發的效率,甚至是架構的彈性或是程式碼的精簡美觀程度,但他們都非常想要並堅持自己應該寫出「好程式」。熱情能驅動他們把軟體的某一個面向雕琢到極致,這需要超乎常人的毅力和堅持,以及絕不向壓力妥協的精神。只要具備這種熱情,不管你在乎的是什麼,都可以成為一名偉大的程式設計大師。

P.S. 雖然這篇文章講的東西很八股,但我發現這真的非常重要,看一個人的熱情就能知道他做出來的成品是什麼樣子。如果是我來面試,我一定會在面試時觀察這人有沒有喜歡寫程式的...

閱讀全文

讓Symbian程式自動連網,不要再問我要用哪一個存取點啦

入手內建Wifi的N82後,還蠻常會利用它的wifi連上網,不管是直接上傳照片到Picasa,或是用Opera Mini上網看看新聞,用到網路的機會其實還真不少。可是Symbian平台有一個非常煩人的「功能」,每當需要連接網路時,就會跳出一個視窗問你要選擇哪一個存取點(GPRS、3G、Wifi AP等等),照理說這種東西應該第一次連網選一次就可以了,沒想到Symbian竟然每開一個需要連網的程式都要重新問一次。標準流程是這樣,問題一:「是否允許應用程式XXX使用系統及傳送或接收資料?」(明顯的廢話問一次就好了,為什麼每次執行都要重問一次啊!!!),問題二:「選擇存取點」(於是我就得從一堆永遠不會選的emome、MMS、Streaming...選項裡去選我的Wifi AP,最可怕的這也是每開一個程式就要選一次!!)這種笨到家的設計讓我想到一個Apple的Mac廣告: Vista Security。這個廣告在諷刺Vista的「超強」安全性防護,不管你要做什麼都要先問你「Cancel or allow?」雖然我不用Vista,但看到這廣告竟然有種心有慼慼焉的感覺,什麼時候Symbian和Vista變成好朋友了啊.....花了點時間研究解決方法後,終於找到一個不錯的方案,分享給大家參考,可以省掉很多選擇存取點的麻煩。首先,第一步先安裝Psiloc Connect。這是能夠自動按照設定的優先順序選擇存取點的程式,它預設使用Wifi連網,會自動找最強的Wifi訊號來用,如果沒有Wifi時可以設定要不要自動連接GPRS或3G。裝完這個軟體後,它會在系統裡新增一個名為 "Psiloc Connect" 的虛擬存取點,每次只要選它就採用你先前設定的規則去連接網路,非常方便。做到這裡時,只能解決一小部份的問題,因為兩個對話窗都還是會一直跳出來,所以接下來還得關掉這些煩人的對話窗。關於要求選擇存取點的對話窗,這其實是有點複雜的問題。第一個要先知道的是Symbian原生程式和Java程式(J2ME)對於存取點的設定和連結方式是不一樣的。如果是原生的Symbian程式,應用程式自己有能力讓使用者設定一個預設的存取點,像是內建的瀏覽器(也就是「網路」)或是RealPlayer都有提供這種設定,但這也意味著如果應用程式不提供這個設定,我們就沒轍了;而對於J2ME程式而言,預設存取點的設定是在應用程式外來處理的,也就是說我們可以強制對每個J2ME做這種設定。以下是J2ME程式的設定方法:先到「應用程式」裡,找到「程式管理」這個軟體。打開後再選擇要設定自動連網的程式,以下以Opera Mini為例。按確定開啟後,就會有一連串的設定,我們要設定的是「存取點」還有「連線方式」。連線方式選擇「總是允許」,預設存取點則選「Psiloc Connect」。這樣設定完就大功告成了,以後每次開Opera Mi...閱讀全文

讓Google Calendar與iCal及Nokia手機行事曆同步

自從新手機N82入手後,讓我最困擾的莫過於行事曆的同步問題。我一直都是用Google Calendar長大的,因為以往的環境是只要有電腦就一定能上網,所以我可以把所有行程資料都放在網路上,有需要時直接上網就能看到,也省去了分散式儲存會帶來的資料同步問題。然而現在多了一個隨身攜帶的smartphone,加上我又不想花錢申請3G或是其他的data plan,所以如何將不能隨時上網的手機行事曆與Google Calendar同步就成了一個麻煩的問題。雖然在S60上已經有幾個行事曆同步程式,像是gCalSynCalSyncS60、或是GooSync.com,這幾個軟體或服務我都試用過,但很不幸都無法滿足我的需求。gCalSync其實是完全無法執行,本來以為是憑證問題,但我即使把N82「調整」過後,也還是不能執行。CalSyncS60倒是還蠻不錯的,適合只有單一calendar的簡單情況,可惜我需要同時用很多calendar(更糟的是這些calendar還有不同時區..),CalSyncS60就無法支援了。GooSync.com是提供同步服務的網站,它的免費版也只支援一個calendar,如果要用多個就得付費才能用。其實我差一點點就要付錢用GooSync.com了,還好在最後關鍵時刻我發現了不知道什麼時候開始Google Calendar竟然已經能和iCal同步了!Google提供了詳細的教學文章說明如何在iCal裡設定和Google Calendar做同步,不但能同步多個calendar,連多時區也不會有問題!(而且iCal還提供很方便的按鈕可以切換時區,請見下圖右上角)按照Google的說明將Google Calendar和iCal同步後,事情就很簡單了,因為Nokia官方就有出iSync的plugin,可以自動同步通訊錄以及iCal裡的行程資料。有了這樣的解決方案,我回到家只要打開iSync,按下同步鈕,連線都不用接就能透過藍牙把最新的行事曆資料和手機做同步,實在是超級方便啊~ (當然,如果能直接在手機上透過wifi連到Google做同步就更完美了...)Google支援iCal真是天大的福音,不僅是照顧到廣大的Mac族,而且也完美(又免費)的解決了我的困擾。Google萬歲!!閱讀全文

Symbian S60好用程式大整理

Nokia專用Google系列S60或J2ME通用
  • 來電照片顯示Full Screen Caller
  • 即時通訊+VoIPTalkonaut除了Skype以外常用的IM全都支援了。至於Skype可以用官方的Skype Mobile(目前只能用文字傳輸,接電話還要算錢,是半個殘廢的BETA版..) 在官方還沒有更好的版本前,就先用Fring吧。
  • 又小又快的J2ME Twitter client...
閱讀全文