蒼時弦也
蒼時弦也
資深軟體工程師
發表於

RubyElixirConfTW 2018 會後感想

Ruby Conference Taiwan 到今年已經是第七年了,印象中我大概是從 2013 年左右開始參加了,應該也有四五次。今年也加入了 Elixir 一起合辦,因為是五倍紅寶石的員工,所以也當了兩年的工作人員。

那麼,就看看今年有什麼新鮮的事情吧!

籌備

因為在公司很多事情都喜歡參與一點,雖然不是主要的籌備人員不過還是默默的在籌備的群組觀察。最主要的大概還是 Ruby 研討會的贊助問題,除了相對小眾之外,這幾年很多研討會的出現,其實也瓜分了不少公司的贊助預算。而會採用 Ruby on Rails 的公司大多也是新創公司(畢竟以製作 MVP 來說基本上還是最快)所以就不容易取得贊助。

其他部分的話其實還是跟往年一樣,一個字形容「趕」各種設計物或者其他的東西,對上班族來說要準備這些其實壓力很大,不過總覺得這個坑是我自己在 SITCON 挖出來的,後來不少研討會又因為前端的技術進步,都默默的做這樣的規劃。

Tamashii

當初 RubyConfTW 是跟 Python 社群借用一套利用 Raspberry Pi 的 NFC 感應打卡機,不過後來就沒有繼續維護。於是就只能自己開發,這也變成了五倍紅寶石的內部專案。不過一直到 2016 年的 RubyConfTW 都是蠻混亂的狀況,像是因為沒有 ActionCable 的客戶端只好用模擬器模擬之類的。

在 2016 年底我跟強者同事 Henry 一起開始了重寫計畫,我負責伺服端而 Henry 則是客戶端,並且在第一次測試的後就順利溝通。發展到 2018 年總算是可以穩定的在一些活動上使用,不過還有著一些硬體上的限制(鬆脫)之類的需要處理,但是整體上已經遠比 2016 年的狀況好上不少。

後來 2017 年的兩位實習生加入這個專案,目前由我們四個人貢獻 Tamashii 專案,主要是以容易使用為目標來設計,有興趣的話也歡迎送 Pull Request 或 Issue 給我們改進。

議程

因為目前使用的錄影設備是跟幕凡一起利用開源的軟體搭配一些影像擷取卡土炮出來的,所以我大部分的時間都在主要的會議廳。不得不說付出了昂貴的場地費,使用張榮發國際會議中心的效果真的很好,至少作為主要會議廳的那一間,是配有專業的設備可以將所有聲音、影像都切進來,我們使用的土炮設備幾乎一半不需要就能做到相同效果。

不過議程上因為主要把精力花在錄影和關注會場的狀況,所以就沒有都完整的聽到。

Ruby after 25 years

這麼多次的經驗後,其實大概知道 Matz 的演講大多是當年度象徵性的,今年的主題也很明確就是 Ruby 3x3 裡面的 Ruby 2.6 版。至少從出現 JIT 開始,今年有關 Ruby 的研討會大多會是討論 Ruby 2.6 為主。

不過這場幾乎沒有聽到內容(也有可能是酒喝多了),不過今年大概是拿到幾個新成就讓我比較興奮。

第一個是第一次發現跟外國人用英文交談,即使對單字不太能理解,但是說的部分已經不會嚴重卡住。 第二個是因為問 Matz 關於 mruby 的問題,順利的被記住而被打招呼。 最後一個是今年超容易跟 Matz 交談到,完全不知道為什麼 XD

How the Rubyist use Blockchain

我自己的演講,因為有口譯的關係有嘗試放慢速度。另外一個點就是我認為「區塊鏈可以講的東西不多」所以也特意放慢一點,畢竟對工程師來說區塊鏈可以使用的方法就是那幾種。我們需要注意的是不要被這些東西迷惑,還有就是了解怎麼樣去創造應用。

區塊鏈本身是概念上的創新,所以我們製作應用也需要用改變概念的方式去嘗試會比較適合。

有興趣的話可以讀看看我之前寫的在 2018 年我所知道的區塊鏈基本上就是演講的內容,只是沒有後半段用 Ruby 跟 Ethereum 互動的部分。

Method JIT compiler for MRI

這場其實也沒有聽到,不過因為剛好有對這方面比較了解的朋友有來,在會後的 Official Party 幫我稍微釐清了一些脈絡大方向。關於 Ruby 的 JIT 我是很關注的,就我自己認為 Ruby 3x3 的關鍵應該會落在 JIT 最後的表現。

大致上來說 Ruby 社群會希望「向下相容」再加上「不希望花時間在維護因為 LLVM 之類的升級造成的變動」所以才會採取「產生 C 語言程式碼」和以 Method 為單位的 JIT 來設計。

同時也有 YARV-JIT 和 RTL-JIT 兩種方案在執行,這次在 Ruby 2.6 加入的是 YARV-JIT 的版本,不過之後的發展還是不確定的。

Inspecting and Crafting Rails

這場演講看似是在講怎麼調整 Rails 讓他運行的更快,不過其最有價值的反而是展示了怎麼應用像是 ObjectSpace 這類技巧,讓我們在開發 Ruby 專案遇到瓶頸的時候,可以用適合的方法去優化 Ruby 專案。

Progress report of “Ruby 3 Concurrency”

這場也是我很專注的議題,關於 Ruby 中的 Concurrent 實現。之前其實有一篇文章介紹過了幾種 Concurrent 模型,不過在 Ruby 裡面其實都是不太適合的。

不過這場演講有大概交代了 Ruby 的 Concurrent 模型 Guild 的設計是受到什麼啟發,還有應用上可以透過怎樣的形式。

總結

今年覺得最大的收穫大概是去年在 RubyKaigi 聽得不少議程其實都沒有搞懂太多,不過經過這半年多的消化或者調整的思考方式,所以這次其實不少關於 Ruby 一些關於 C 語言的部分這次都能夠大概的理解。

大致上來說,從去年在考慮是不是要嘗試成為 Ruby 的 Commiter 這件事情,到這次的活動結束。讓我認為自己應該是適合成為 Ruby Commiter 的,雖然可能要花上好幾年才能完成,不過也許是我在追求作為自己理想中的開發者的必經之路。