開頭先講個題外話:為了傳這篇文章內的照片,在寫之前還花了時間寫 Imege 這個工具來放圖,只是不知道什麼時候會被打下來…… XD

從一開始就很期待這次的RubyConf Taiwan,主要跟大多數人一樣,都很希望能見到matz大神一面,只是為了配合matz,所以舉辦的時間點對我來說是有點晚的,不過看到這次除了matzさん外,還有一堆國外的朋友們會來,加上這次的talk很多與Ruby Implementaion相關的議題,不管怎樣都得排除萬難啊 :p

這次RubyConf Taiwan還多了第一天晚上的Official Party,當初想說認識的朋友應該都會參與,結果去到現場一問之下,發現會去的寥寥可數,害我原本還很擔心不善social的我是不是該臨陣脫逃,就結果論來說似乎是多慮了。(詳細的情況就請繼續讀下去吧:D)

Day 1

一大早到這次的會場,天母農訓中心(沃田旅店),對於之前只到過中研院的我來說有種新奇感。

場地本身設備還不錯,只是不知道是否投影機的燈炮壽命將至,感覺投出來的畫面偏暗又不夠銳利,每排的前面間隔有點近,對於體態不小的我來說要在有人的情況下出入實在有點困難。

另一方面,或許是地點與以往多數的conference不同的緣故,所以大家來得都比較晚一些,結果就是為了讓大家吃早餐就晚一點才開始第一個session…… XD

值得一提的是,今年的午餐就是直接由會場單位提供現在烹調的自助餐,而且口味還蠻多樣的,當然也比其它conference提供的便當好太多了,最重要的是,還有桌椅可供大家與其它會眾social,就算沒佔到大神旁邊的位置,要在吃飽飯後locate對方也不是什麼難事,像我就是趁這個機會和matz大神合照了一張。

matz
matz

接著說一下我比較有印象/興趣的session:

Matz: Keynote

長達203頁的史詩鉅作(?),聽到matzさん對於許多議題的想法,以及對Ruby乃至於整個開發者社群未來的期許,真的是讓人覺得相當地感動啊!
最讓我印象深刻的便是matzさん提到關於Motivation的重要,以及以下這句:”Diversity is the cost of innovation.”
因為有談到Ruby 2.0和mruby的緣故,所以我也舉手問了MRI會不會移除GIL/GVL(一方面也是因為看到了 這篇 ),結果答案就跟裡頭的回答一樣XD

Wei Lu: A Journey into Pair Programming

其實原本好像是jserv的session先,只是後來好像臨時換檔?
講者用了很活潑的口吻來介紹Pair Programming以及其中會遇到的一些問題,投影片內所用的哏也很能引起人共鳴且精準,聽完之後才發現我對Pair Programming的印象是錯的 :x
另外本場也出現了這次RubyConf Taiwan的第一個哏:因為講者是位來自新加坡的正妹,所以有位會眾就在Q&A的時候,問了講者能不能和自己Pair Programming,於是一個新的告白方式就這麼誕生了XDDDDD

jserv: 在自動控制領域應用微型 Ruby

這是我從一開始就準備要聽的重點session之一,只是沒想到jserv順應潮流,直接英文硬上,讓不少人錯愕了一下。
原本想說jserv會從OS先講起,但這裡終究不是OSDC.tw,所以是從為什麼選mruby講起,也才知道原來jserv最近又涉足新的領域了? :D
不過後面還是提到了如何在ARM上面最佳化mruby,講得淺顯又不失深度,不愧是大神啊。此時也發現mruby VM的bytecode好像跟CRuby不太一樣,看了一下source code發現mruby VM原來是register-based的VM,將此發現tweet上去之後,意外地得到matz的回覆,當然就很不要臉地再問下去了 :p

mruby
mruby

在jserv講完之後,對於talk中提到的裝置間通訊有點問題(因為之前在lab meeting上報了一篇embedded python的paper),就舉手問了jserv關於mruby有無FFI,結果又被redirect到matz那邊去了,雖然聽得不太清楚,不過好像是有的樣子?

godfat: Concurrent Ruby Application Servers

平日惠我良多的godfat前輩本次也有session(之所以會認識,其實也是因為去年在他講完rest-core之後拋開恥力跑去裝熟的緣故lol),這次的題目正好又跟我之前遇到的問題有所相關,聽完之後才發現其實沒有……XD
不過誠如前輩本人所說的,這樣的題目真的是很難一聽就懂,所以慧根不夠的我聽完之後還是一知半解,看來我還有待加強啊orz

Akira Matsuda: Ruby 2.0: New Features

Ruby 2.0可說是Ruby界的大事,在經過近二十年後終於要跳到新的major version,大家的興奮(或怕受傷害的心情?XD)可想而知。
之前也有看過一些關於Ruby 2.0 new feature的資料,但總覺得講得還不夠詳細,搔不到癢處。
而Matsudaさん一次就把這些遺憾給全部解決了!透過大量有深度的sample code來介紹各項新功能(包括前陣子在吵的refinement),也火力展示了Ruby metaprogramming能作到什麼程度,讓我只能暗中反省自己為何沒把Metaprogramming Ruby一書讀完。

Lightning Talk

本次Rubyconf Taiwan的Lightning Talk不同於以往,題目都十分的精實,所以聽一聽會覺得,這明明就很heavy啊XD!!!
而第一天幾乎全是來自國外的講者,除了xdite、小蟹和高見龍前輩們外。
其中最有印象的便是RubyJS的作者,直接在會場把RubyJS live open-source出來的時候了,這大概是今年Lightning Talk最像Lightning Talk的一段。XD

Official Party

如同我上面所提到,其實我本身不是個很會social的人,所以對於沒什麼認識的人參加Official Party這點相當地困擾,但是既然報都報了,只好硬著頭皮出席,沒想到結果意外地不錯。 :D

原本Party表定19:30開始,不過當我和Goodlife的Mark到時,裡面還沒什麼人,直到20點多,人潮才慢慢地湧現。
一開始對於周遭不熟的會眾,我還是不知道該怎麼開口,只好先去要了一瓶啤酒,沒多久就開始有人向先到的日本朋友們交談,我也就趁這個機會順勢而為,先試著和對方交換名片(結果他們都沒帶,變成單向拿XD),再慢慢聊一些其它的話題。

跟我同桌的是paperboy的三位工程師:Kentaro Kuribayashi、Kensuke Nagae、Shinya Tsunematsu,他們下午正好接連上台講Lightning Talk。
聊最多的,應該是Shinya Tsunematsuさん了吧,主要是因為他坐我旁邊XD。當他拿到我的名片時,似乎對Passionate一詞很感興趣,還跟其它朋友討論了一下,接著我們就聊起為何會有這麼多國外的朋友(特別是日本朋友)來RubyConf Taiwan,以及工作方面的事。
後來Mark加入後也聊到了台灣的工時及加班文化,才知道原來在日本,說一間公司很黑(ブラック)就是非常羞辱對方的講法了XD,而且他們對於工作10小時就已經很受不了的樣子。
我們也談到了日本與台灣社會的一些不同,像是兩邊年輕人對工作、未來的一些想法差異,還有兩國各自的社群活躍程度等,最後他還表示這次參加RubyConf Taiwan讓他對台灣人的印象非常地好,特別是我跟他聊過之後,看來我成功地進行了一次國民外交的動作?XD

接著高橋征義さん也出現在party現場,而且還是來到我們那一桌,所以在其它人來自我介紹完後,我也拿出名片,和他開始聊天,一開始是問他下午在Lightning Talk中提到的電子書系統的一些細節,到後來更大膽地問了他們公司所鎖定的市場在哪,以及能否合照這樣的問題。

Takahashi-san
Takahashi-san

此時發生了一件讓我很小鹿亂撞(?)的事,就是matzさん他跑過來跟高橋さん聊天!
在兩人看似聊完的空檔,我趕緊遞上名片,並開始自我介紹,然後說自己的研究題目是想作Ruby和OS相關的東西(有沒有覺得這人嘴炮點很高?lol),更藉機問了一些MRI的細節。
問完之後,又想到一個我一直想問的問題:究竟是怎麼的教育環境才能夠讓他能夠在大學時就寫出自己語言的compiler?這對於正在修研所Compiler的我來說是件很難以解釋的事,畢竟我當初大學部修完compiler直至現在都還沒有能力可以定義並實作出一套嚴謹的程式語言啊。(當然,我本身很弱這點就別提了……)
但是我得到的答案卻是他母校的課程安排其實與我們差不多,這就更讓我納悶了,轉念一想,再開口問matzさん,他覺得會不會是時代的演進所造成的呢?舉我們系為例,十年前的標準絕對比現在高很多。
於是乎我們又談起了現在電子設備的普及化和過度複雜導致深入學習的門檻變高,以及他覺得未來我們開發者該怎麼改善這樣的環境云云。
藉這個機會,我也拿之前與別人討論的議題出來,詢問matzさん看他認為初學者該學C語言好,還是Python/Ruby好,結果matzさん跟我一樣是C派的XD,他同樣認為學習programming就是要學不同的思考方式,如果用太過expressive的語言,反而沒有什麼效果。但是他也同意,要讓初學者產生興趣,還是用scripting language這種很快就會有回饋的語言比較有效。

這時,matzさん跟我說,我應該去和負責YARV的Sasada Koichiさん談談,因為他的研究領域正好就是OS和Ruby VM。
只是我過了一段時間才過去,而當我過去的時候,Sasadaさん已經準備離開了,所以沒能多聊,但是他表示已經從matzさん那裡聽到我的事,所以祝我研究順利XD。
而在他真正離開前,又問了一些關於Ruby 2.0中的YARV改進的地方以及新的Garbage Collection algorithm所帶來的效益,所以算是運氣不錯。:p

Day 2

今天不小心比較晚到,結果還是有很多時間吃早餐,同時亂入Mark與godfat前輩延續昨天session的討論,最後不知道為什麼聊到了steins;gate和Ever17。XD

下午的午茶時間也跑去跟Sasadaさん繼續聊昨天未完的話題,像是他在本日的session中提到的一些最佳化方法,以及其它Implementaion的design和目前YARV的bottleneck等,同時還有應該是來自香港的會眾過來問關於Concurrency/Parallal Computing的相關問題(聽了Sasadaさん的解釋,才了解原來兩者是不同的),也討論到了之後可能會往什麼方向作改進。
最後當然不免俗地和Sasadaさん合照一張 :p

Sasada
Sasada

這裡再說一下今天的session:

Koichi Sasada: (Implementation Details of Ruby 2.0 VM).succ

Sasadaさん一開始先是介紹了與profiling相關的新功能,這裡我比較不熟所以不多說……
接著第二部份便是一秒變教授,開始介紹Ruby VM的method dispatching如何實作,以及該怎麼對其作最佳化(同時也是2.0的新改進),聽完之後只覺得自己讀Ruby Under a Microscope實在是讀得太慢了。

Gosuke Miyashita: Inside Sqale’s Backend

雖然說和幾位朋友都覺得「這不就是Heroku嗎」,但還是一致同意他們的美術設計比Heroku好上太多太多了,連其它服務都作得很有質感,像是某PHP hosting的服務頁面上,滑鼠hover過去還會有精美的動畫!這叫人怎麼能不喜歡呢?XD

Joseph Ku: RubyMotion: Hack Your iOS App Like Never Before

從RubyMotion剛有消息的時候就開始關注,看到價錢馬上無視XD,加上也有人提到要寫得好還是得有Objective-C的概念才能把Cocoa用得好,所以就還是乖乖看起Objective-C了。
不過這個session實在強大,讓我又開始對RubyMotion燃起興趣了。
附帶一提,Sasadaさん似乎對RubyMotion很有興趣,同時也問起了講者是不是在remote debugging。XD

remote debugging

Eddie: May the Source Be with You - Learning Ruby by Reading Ruby Source Code

高見龍前輩真的是很厲害的人啊,什麼東西好像都難不倒他,雖然他自己謙稱說不會寫C,但看MRI的深度與廣度都比我強太多太多了…… orz

RubyConfTW.succ

#其實我也是這次RubyConf Taiwan才知道有這method…… XD

最後得說,今年的RubyConf Taiwan真的是我到目前為止參加過最好的Technical Conference,講者、議程、活動、食物都無懈可擊,每一個小細節都可以感受到籌劃者的用心,感謝熱情的籌劃者們,特別是ihower和慕凡前輩兩人,期待明年的RubyConf Taiwan能夠再青出於藍。 :D