• 寫完這篇之後,我就不再挖苦 DevOops 了(立旗)

    約莫過去一年多,有幾篇改變我在 IT 工作上一些思想、甚至是待人處世之道的文章,恰巧,都是簡體中文的:

    1. 闲谈集群管理模式 – taowen – SegmentFault
    2. 怎样尊重一个程序员
    3. 架构腐化之谜 – TW洞见
    4. 开发团队的效率 | 酷 壳 – CoolShell.cn

    第一篇是讓我對 Docker、容器化技術,有更高視野的「當頭棒喝」、啟蒙文。

    第二篇教我省思「學習」與「了解」,很像是以前在圖書資訊學學到的 “Knowledge” 與 “Fast Facts” 的區別。所以,面對問題時,要知道自己或他人缺的是「學習」還是「了解」。

    第三篇教我如何用正確的「心態」去做架構設計或重構。

    第四篇我就直接引用其中一段吧:「你总需要在一个环节上认真,这个环节越往前就越有效率,越往后你就越没效率。要么你设计和编码认真点,不然,你就得在测试上认真点。要是你设计、编码、测试都不认真,那你就得在运维上认真,就得在处理故障上认真。你总需要在一个地方认真。」很像是我們在講當兵或科層組織時常掛在嘴邊的「鐵鎚釘釘子,釘子釘木板」。

    下面沒有了。

  • AlphaGo 與李世乭的五番勝負

    對 AI, Machine Learning 這領域不熟,對圍棋也只是很粗淺的認知,這篇我只想記下幾件事情,且不要寫的像某些人趁著熱門話題在裝逼。

    1. 如果不事先告訴我這是 AI 在下棋,AlphaGo 的表現的確很像高段棋士。
    2. 第四場很經典,但是「AI 會發現自己錯誤,這點很可怕」這種論調,明顯是不懂圍棋,人類棋士在下棋,反省哪步棋為敗著是尋常之事,AlphaGo 只是一樣做到這點而已,而且我也覺得一個下棋的 AI 本就應該做到這點。
    3. 預期圍棋界將引發新一波的既有定式反思與改革。
  • 試玩了一下 Raspberry Pi & Buildroot 自己編一套系統

    強者我同事 BobChao 出清一塊 Raspberry Pi Model B,雖然我本來就有一塊,但是在拉麵店裡基於某種天外飛來的不正經念頭,想要試做一個家庭娛樂系統(唸作:「電視遊樂器」),所以就收下來當開發機板了。而原來的那一塊呢,就…另外有用途。

    其實這個不正經的念頭是這麼來的:在前不久,我苦苦哀求老婆跟我一起玩 PS3,但是她自稱除了「打飛機」(捲軸射擊)類會玩以外,其他皆不在行,所以我就開了 1942: Joint Strike 跟她玩。這圓了我這個阿宅長久以來的夢想之一:跟老婆快快樂樂開開心心打電動。

    於是我就在想,撇去市面上既有遊戲機對懷舊遊戲的舊瓶裝新酒,像是 Wii, 3DS 的 Virtual Console 之類的服務不談,Raspberry Pi 其實很適合拿來自己搞一個這樣的懷舊遊戲系統,在上面藉著模擬器玩一些早期的「打飛機」遊戲,早期遊戲由於畫面沒那麼複雜精緻,也讓輕量玩家不那麼畏懼。(好吧,說到「打飛機」這個詞呢,我知道在某些地方有特別的含義,不過這裡指的就是捲軸射擊遊戲。)

    雖然已經有 RetroPie 之類的解決方案,但是開機速度上我是不滿意的。以當前遊戲機系統愈做愈複雜、開機、載入遊戲愈來愈久、還三不五時來個線上更新的現象,簡直就像在用 Windows 一樣,等到終於可以玩到遊戲,熱血與玩心早就冷了。我希望這個「家庭娛樂系統」可以像早期的遊樂器一樣,電源打開,遊戲畫面就出現在映像管螢幕上,找回那種讓人對遊戲裡的挑戰躍躍欲試的衝勁。

    所以某種程度上,我需要自己做些髒活,讓這個「家庭娛樂系統」比較像個消費型家電,而不是望而生畏的電腦。

    經過粗略的研究後,發現其實已經有 Buildroot 這個方案,可以讓我先搭建一套具體而微的陽春基礎系統,以預設的 raspberrypi_defconfig 配置編出來的成果,兩秒多就可以完成開機:

    Buildroot-generated system boots on my Raspberry Pi

    這樣的結果讓我很滿意,如果再拔掉一些用不到的東西,應該還可以再偷一點時間,或盡早載入模擬器系統的 UI,感官上又可以騙到一點。

    Buildroot 真的是很棒的工具,從搞定有點阿雜的 cross-compilation toolchain 到 build 目標系統,整個嵌入式系統的建置流程基本上幫你做好,在這個基礎上開發自己的應用就少掉了很多苦工。

  • 我現在只是「不用」Facebook 而不「反」Facebook 了

    昨天跟同事聊到的話題,我的回應如標題。

    大概是這樣的想法吧:

    • 貼技術文,很多友人看不懂,不想洗版。
    • 貼社運、政治文,很多「政治好髒」小確幸友人不想看,不想洗版。這點是在反課綱學運的林冠華自殺那時,湧到最高點。
    • 偶而同步發表 Instagram 照片讓友人知道我還活得像個「正常人」,大概也夠了。
    • 以前很討厭無名小站,主要是美感問題,但不可諱言它匯集了當時相當豐富、百花齊放的網民思想內容,就跟現在的 FB 一樣。雅虎奇摩關掉無名小站,至今還是讓我非常度爛,顯示這家公司根本不在意「內容」這件事。
    • 總結來說,無可諱言地,FB 某些作風至今還是很爛,爛到家,但是上面的社群與內容不應恨屋及烏。
  • 面對新技術的心態

    Drupal

    使用 Drupal,不應該只是認為「別人都幫你寫好了模組、做了很漂亮的版型,只要抓下來拼湊、修改一下就可以交差了。」而是要學習到這個基於 hook 的 design pattern 要怎麼依樣畫葫蘆,在 Drupal core 上開發符合自己需求的程式,讓 Drupal 真正為自己所用。

    不然,你做出來的網站就是會有很濃的拼裝車味道。

    同時,也因為 Drupal 有自己的一套 architecture 與 design pattern,所以也不應該認為「反正只是 PHP。」言下之意好像 PHP 入門簡單、會的人多,隨隨便便都找得到人來開發。同款,不同師傅。

    況且單看臺灣的話,真正寫得「好」的、精通 PHP 的開發者,事實上並不多。

    當然啦,有人會說:「我只求能動、先求有不求好、能交差 60 分」,這種人基本上不是我寫這篇文想要鼓勵的對象,麻煩請關掉分頁,去享受你其他面向的快樂人生與成就,畢竟人各有志。

    Rails

    使用 Rails,也不應該被「10 倍速的快速開發網站魔法」之類的宣傳詞迷惑,而是要從中學得如何做出一個可維護的網站,包括透過 MVC 將系統元件分而治之、包括 DB schema versioning、包括從 ORM 學得 OOP 的基本精神與 metaprogramming 等,諸如此類的技術成長,自此就從「一隻程式通心粉式地把所有事情做完,之後再也看不懂這隻程式當初是在寫尛」的程度畢業,成為一個講究軟體工程、架構的進階開發者。

    不然,其實你我也見過,很多去上了速成班的人,寫出來的 Rails 跟用 Raw PHP 差不多髒。這樣的「快速開發」只是製造用另一種語言寫出來的技術債而已。

    順道一提,如果你在 Drupal 上的開發習慣、思維夠好夠清晰,來學習 Rails 基本上除了程式語言不同以外,不會有什麼障礙。

    Docker

    使用 Docker,也不應該把它當成是比較好用的 chroot 而已,而是要想說透過這樣的隔離,我可以更充分利用機器的運算資源,並透過 API 的呼叫,來操作容器裡頭包裝的程式元件,將思考的層次從「伺服器」轉化到「資源」。

    此時你傳統「一個網站專案解決一切」的系統架構,為了 HA 與 scalability 就勢必要進行進一步的重構。

    反之,如果你硬要把既有一把通抓架構的程式塞進 Docker 裡,搞了一堆有的沒的讓它跟在實體機、虛擬機做的事沒兩樣,其實還反而弄得更綁手綁腳,未蒙其利,先受其害,那麼拜託你不要去外面跟人宣傳說「我們也有用 Docker」。

    TL; DR

    其實我寫這篇只是想說,很多盲目追求技術的熱潮,並沒有搞懂本末終始核心精神,這樣營造出來的 ecosystem 其實只是在搞技術宗教崇拜,比誰的信眾多,其實是很不健康的一窩蜂,瘋潮一過,留不住多少人,對 IT 產業也就沒有什麼真正的助益。

  • 昨晚看了 BS JAPAN 的「ものラボ」節目,介紹 Dyson 的創業故事,兼賣 Dyson 吸塵器

    ものラボ,頭一次看到這樣「有誠意」的電視購物(?)節目,真的爆笑出來。

    一開始以為是紀實介紹節目,看到 James Dyson 屢敗屢戰的創業歷程,試作了約 5,000 個 prototypes 才做出理想的作品,卻又幾經波折,方能找到願意生產的廠家。

    就在感動於這樣的創業者、發明家精神的時候,節目旋即轉換為電視購物模式,賣起 Dyson DC35 來,感覺雖然有些突兀,卻又比一般的電視購物節目來得更有說服力。

    BS 上頭的好節目真的不少,像「ものラボ」這樣的節目製作型態,對我而言又是一次啟發。觀眾不是不喜歡廣告與推銷,而是你的行銷之道夠不夠細膩。