Jeremy England 的生物起源論

Stromatolites.jpg

Stromatolites from Wikipedia Commons.

大約年初有一波新聞介紹 MIT 生物物理學家 Jeremy England 關於生物起源的研究。新聞被轉載又被翻譯之後不小心變成了某種「下一個達爾文」之類的標題 … Orz

但剛剛真的(終於)聽完他接受 7th Avenue Project 的廣播專訪,才大略了解他的論點是

  • 「生命現象」是人工的定義,「無生命」的結構與系統也有可能有朝向有序結構發展的趨向。
  • 這不違反熱力學第二定律,因為生物起源環境是開放的複雜系統。
  • 從無序產生有序的「生物起源」活動可能是個宇宙中無論時地隨時發生的自然現象,甚至發生在現在的生活環境中,但在現在的地球可能是因為被 RNA/DNA-world 的「生物」主宰所以被壓抑,也有可能是發生在我們觀察不到的尺度(或面向)。

他說他的理論可能可以補足現在生物起源論中,人們聽起來漏洞很大的假說(而不是取代進化論等):原始地球會產生生命是因為有宇宙中獨一無二的環境「剛好」讓一堆無機的胺基酸與核酸碰撞在一起然後「剛好」成功開始複製自己的結構,然後「剛好」和其他結構產生天擇競爭。他希望能實作出數學模型與模擬,來解釋這些「剛好」只是模型可預測的自然現象,不是不可知的「超自然」謎團。

另外一個有趣的事是這位學者是成年之後才歸依猶太教正統派的教徒,廣播當中也有討論到他對於信仰與他的研究的關係的見解。

可以先讀一下維基百科的生物起源論條目,回顧一下高中生物課或是自然科學博物館介紹的主流見解。

Looking Backwards, Connecting the Dots

So the day came.

I have not much to say like everyone else on the web and mess media. I don’t want to go on skin-depth things like how he transformed the computer industry and the world – I didn’t even agree most of the tactics he used (like, all closed-source, closed and single distributor model for the iOS platform, etc.).

I want to share something personal with you here, instead.

I did a lot of things that didn’t make sense to my parents, nor to myself at the time. Ever since mid-school, I spent countless hours making websites. I was the computer guru to my high school classmates because the guestbook/chatroom service I built was practically the online social network to them. When I went to college, I chose to take physics as major instead of computer science because I thought there were more wonders in the mechanics of the physical world instead of inside a computer. That turned out to be true, and the wonders unfortunately succumbed me; my grades in physics classes were never higher than the one and only computer science class I took. I didn’t know what to do at the time; I didn’t want to, and couldn’t go for the regular career a physics-major in Taiwan would usually do, that is go to graduate school, and to TSMC/UMC or other semiconductor companies straight from school, the flagship industry of Taiwan – The promise land with dicent salary and social recognition.

Nevertheless, I got my B.Sc. anyway. I stall a bit by deliberately not to meet the graduation requirement (which is, ironically, English requirement) and stayed for a fifth year. I joined MozTW and took care of Firefox localization, started to get to know people in the technology circle, many of whom are big names I admired. I gave lectures at meet-ups and events, wrote web application for Firefox promotion. I co-organized events, designed event websites. I built a paper toss game in the IE9 hackathon event and was awarded an XBox 360 + Kinect. Eventually, I am recognized by people as a qualified front-end developer.

(Full text of Steve Jobs’ 2005 Stanford Commencement Address)

I don’t actually remember when I see the speech for the first time. At first it didn’t make an impression. It was not until some day, I realized “connecting the dots by looking backwards” is exactly what I did, and do right now: Without these “personal homepage” I wrote before college, I wouldn’t know how server-client architecture works. Without my college projects in the physics department, I wouldn’t have any idea how to organize a full-scale rich-content website, nor the chance to improve my communication skill. Without MozTW I wouldn’t be known by my talented peers. Even physics has a part when I looked backwards – The paper toss game I wrote at the IE9 event is actually based on physics simulation skill I learned in school. I hated that class, but without the knowledge the game wouldn’t have such animation effect.

Indeed, Steve was right all along. “You can’t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. … This approach has never let me down, and it has made all the difference in my life.”, he said. By looking backwards, I found everything I did somehow makes who I am today, and they surely made all the difference.

This is what Mr. Jobs meant to me. Nothing technological nor innovative, purely personal. So long, Steve, you lived a good life. This post is my tribute to you, and you will certainly be missed.

IE9 Hackathon

Skip to IE9toss demo, source code and explanation.

星期六去了 IE9 黑客松,算是一場輕鬆的寫程式、認識其他 Web Developer 的比賽。滿錯愕的,因為以為是個 50/60 人以上,類似 Yahoo! Open Hack Day 一樣的大型活動,結果簽到簿只有少少 20 人,超緊張的,本來想說如果人多,做不出來可以打混… XD。到的時候有點晚,感謝 josephj 收留讓他坐他旁邊的位子。食物果然如活動介紹上面寫的一樣相當誇張,早上麥當勞,中午吃了海壽司,下午有星巴克,最後外面的零食跟雞排就 pass 了。

回到活動本身。上官大大出的比賽題目是寫出 2D 迷宮遊戲,或是 Paper Toss 遊戲。我選了 Paper Toss,因為感覺動態遊戲效果比較好,而且迷宮遊戲要求的滑鼠、鍵盤控制我比較不會。後來把握時間把 spec (XD)要求的功能都寫進去了,也盡量用了想到用的到的 IE9 新的 HTML5 技術。也因為不會做 Art,剛好為了搞笑,所以我就做了個把 IE9 Logo 丟進 HTML5 標誌的遊戲:

DemoSource

用到的技術可以在 Github 上面的 README 看到。寫一些感想:

  • 大部分的同好都是選迷宮,原因是因為不知怎麼處理丟東西的物理。其實 free fall 不需要真的解方程式來套或是像強者如 whsienc 把 box2D 拿來用,只要跑 loop,假設 loop 每次執行的時間為單位時間(要不用這個假設,實際量瀏覽器跑 setInterval/setTimeout的時間也可以,jQuery animation 就是這樣),每次執行位移的變化量就是速度乘單位時間、速度的變化量就是加速度(重力)乘單位時間。而且自由落體是各方向獨立的,X/Y 可以分開計算。
  • 風阻力用高中物理的近似,造成的加速度和速度成正比,所以每個 loop 再把加速度減掉設定的係數乘上目前的速度。不過這就沒有各方向獨立了,但我在程式還是把他當成方向獨立,因為這是黑客送不是物理模擬 XD。寫這些計算程式大概花了 1/3 的時間。
  • 知道可以這樣寫是因為大一物理系計概 … 這個運動不難,解出來其實是二元偏微分方程組,把方程式丟進程式也可以把動畫套出來(以我現在的工數能力可能解不出來就是orz)。但也是因為計概才會知道運動模擬應該要這樣寫,因為真實世界有方程式解的運動相當有限。說來也滿好笑的,雖然很喜歡寫程式,但當時其實很討厭那門課。
  • 在跑的動的情況下,東西上 canvas 滿方便的。而且預設的底是透明的,所以可以浮在任何背景的前面,裡面的東西只要 clearRect 就可以清掉。
  • Webkit 的 drawImage 對 SVG 的原生大小判斷是有錯誤的(所以上面的 screenshot 裡 HTML5 logo 才會比例錯誤),同樣的程式碼在 IE9 是對的,所以就保持那樣
  • Firefox 因為不明原因會 JavaScript Error,無法執行遊戲,我還沒 trace (大概也不會管了。Pull Request anyone?)
  • 撞到了 jQuery 這個 Issue:jQuery.camelCase() & jQuery.css() incompatible with IE prefixed properties。後來寫的 Wordaround 是 josephj 教我的。
  • 寫完 -ms-text-shadow: 發現沒效之後問了 ericsk 才發現 IE9 沒有XD text-shadow 本來就沒有 vender prefix,IE 也沒有支援就是。

再來,講一下主角,IE9,其實活動前後我的看法沒有什麼變化:

  • IE9 還是可以套進原本的開發流程:用 Webkit Nightly + 文字編輯器,全部寫好上 feature detection 之後再到其他瀏覽器調 style 和小的 JS 錯誤。但好處是相較於其他 IE,因為它更接近標準而且終於有堪用的開發者工具,所以調起來又更輕鬆了一點,終於不是為了支援 IE 程式碼要增加 50% 這樣。我猜是參考了很多 Webkit 的行為。
  • 但是呢,HTML5 DocType 沒有正確的在 ddsakura 的電腦上觸發 IE9 模式,於是就壞掉了。不知道是之前有設定 overwrite 掉還是真的有問題。
  • 另外,雖然效能終於趕上了其他瀏覽器(明天正式推出,正式版一字排開 Fx 就要被比下去了),但是還是少了一些功能,所以功能偵測和 fallback 還是不能少(至少我上兩個星期寫的兩個程式都不能用,我想要 Web Workers 和 FormData Interface 啊啊啊)
  • 還有一個不幸的事實是,因為 WinXP 不能裝 IE9,故 IE6 很有可能再活個一兩年…

一直都認為一群人組成的團體是沒有靈魂的;一家公司為股東追求利益天經地義,所做決定無關善惡道德。某家公司做了和我們相信的理念相同或是相反的事情,都只是剛好而已。如果 MS 往符合理念的方向移動,該給的肯定還是要給啦。上官大大主辦的開發者的活動真的不錯,大家有空真的可以把握機會投投看。我也是在那天才真的認識了 josephj,經由他和 hlb 聊天開釋才真的搞懂最近那些 JS Loader 和 AMD Spec 在幹嘛。啊,還有在同一間學校 ID 看很久但是都不認識的 grassboy

嗯,以上絕對不是因為拿了 peer vote 第三名抱了 XBox 360 + Kinect 回家才這樣說的 XD 你看我沒有都講好話嘛。