CodeTengu Weekly 碼天狗週刊 - Issue 74 只有兩種產業的人會把他們的客戶稱為 User,軟體工程師和.

2016-12-30 03:30

Hello World

CodeTengu Weekly 碼天狗週刊

CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一早上 10:00 出刊,每一期會從目前的 curator 名單中選出三位來負責當期的內容,每個 curator 各自負責不同的領域。如果你在這一期沒有看到自已感興趣的東西,說不定下一期就會有了。你也可以瀏覽一下前幾期的內容。

以下是目前的 curator 陣容:

  • @vinta - I failed the Turing Test - 科幻迷。最近在讀The Player of Games
  • @saiday -Imnotyourson - 希望在離開台北之前可以見證到捷運禁止飲食廢止
  • @tzangms -Oceanic / 人生海海 - 衝動型購物
  • @fukuball -ImFukuball - 婚後生活
  • @mingderwang - Ethereum enthusiast
  • @kako0507 - 熱愛嘗試新事物的前端工程師
  • @chiahsien - 我們在找iOS 工程師與其它人才,歡迎來跟我當同事
  • @hiroshiyui - 沒有人是一座孤島
  • @uranusjr -Smaller Things - 不愛談技術的技術人,最近對做菜很有興趣
  • @kkdai -態度萬歲 - 喜歡 Golang 的略懂工程師,最近在學機器學習( 疑? ).
  • @yhsiang

大家也可以關注我們的Facebook、 TwitterGitHub 或微博,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來Gitter 聊聊,歡迎亂入。

致力於解決開發者之間的資訊不對稱  

@tzangms

YesSQL, Process and Tooling at Scale

GitHub 在用 MySQL 時的流程跟相關工具的投影片, 真的是整合了很多東西進 Slack + hubot。

當中比較感興趣的是已經出來一陣子的 gh-ost - GitHub's Online Schema Migrations for MySQL , 先前沒好好看他, 看了這份投影片之後覺得實在厲害, 應該研究下, 因為目前部署後 migration 應該是我們 StreetVoice 部署流程中, 最後需要完善的一個部分。

speakerdeck.com

The Ops Identity Crisis

可能從我第一份工作開始, 對於 Dev 跟 Ops 的界線就是模糊的, 除了寫程式之外, 也得搞 Server, 所以我從一開始就認為 DevOps 對於開發人員來說是基本的, 一直到後來認識一些在大公司任職的開發人員才知道他們的工作、職責被切得這麼細。

這篇文章在講 Ops 身份危機, 像是 DevOps 的崛起, 還有許多工具的出現, Ops 這件事對於 Developer 來說簡單了許多, 一直到近年的 microservice 及 serverless, 導致 Ops 的工作越來越少, 被 Developer 直接搶走了, 但是這個 Ops 這個職位會消失嗎? 我覺得是不會的啦, 只是負責的事務不該跟 Developer 分的那麼開, 而是越來越像, 只是主要負責的東西不同, 畢竟 Dev 跟 Ops 兩這之間的工作本來就有一定的重疊。

其實 StreetVoice 在一、兩年前還是找了一個專職的 Ops, 但是他也寫一些程式, 實際上, 因為 Ops 有很多東西需要花時間去測試、調教, 在 mindset 上跟 Developer 對比起來有一些不小的差別, 我覺得還是需要專職的人來負責。

但, 你覺得程式部署上線之後、出問題時該 on call 的是 Ops, 還是寫程式的 Developer? 其實這答案很簡單吧。

susanjfowler.com

Maya - Datetimes for Humans™

requests 的作者kennethreitz 另一個給人類的禮物。

github.com  

@hiroshiyui

One Sure-Fire Way to Improve Your Coding

提升自己編寫程式的能力,除了多寫,就是多讀、多觀摩、研究那些優秀的程式之所以優秀的緣由何在。本篇是一份很完整的指南,指引您如何挑、如何讀、如何領會那些優秀程式的設計之道。

changelog.com

Etsy CTO Q&A: We Need Software Engineers, Not Developers

本篇專訪 Etsy CTO,談及 Etsy 的技術架構與 DevOps 文化,以及如標題所示「我們想要的是工程師,而不是軟體開發者」,而這也是本篇最值得一讀的一節。先別因為這有點標題黨的風格而倒了胃口,裡頭寫得非常好。

thenewstack.io

"Tell, Don't Ask" in Elixir: A Story of Pattern-Matching

我是一個資質駑鈍的人,有些東西,像是 Object Oriented,就花了很久才領會。小時候讀《世紀末軟體革命 2》說 OO 是「模擬世界,加以處理」,也由於我腦子轉不過來,加上被 BASIC, C, Assembly 這種「照著流程跑」的程式運作邏輯制約,始終不覺得我何以需要 OO 這樣的 paradigm shift。一直要到讀了 matz さん的《松本行弘的程式世界》才又在裡頭的內容之中領悟了「物件 = 把資料與程式封裝起來」這種設計的奧義所在。

而這樣的後知後覺也一度讓我有「用 Ruby 這樣的 OOPL,卻寫出了不 OO、怪抽象、壞氣味程式」的弊病,也是直到我讀了Tell, Don't Ask 才有大徹大悟之感。

這篇文章講的是 Elixir 雖然一般咸認是函數式語言,要寫出遵循 Tell, Don't Ask 原則的 declarative (not imperative) 程式可能第一印象會覺得有點困難,但是透過合理的程式邏輯規劃,我們還是可以用 Tell, Don't Ask 原則寫出好寫好懂的程式來。

thoughtbot.com

"Thinking in AngularJS" if I have a jQuery background?

之前在 Twitter 上道出了我不太理解這些前端框架之於 jQuery 的精神、出發點差異所在,推友@caasih 寫了好幾則tweets 為我釋疑,讓我有了一點基礎認知。

這篇 Stack Overflow 上的問答恰好也跟我的問題極為相像,底下幾個被讚爆了的解答都很有啟發我這種前端麻瓜的參考價值,推薦給同為「被 jQuery 慣壞、同時沒做過有一定規模的前端專案」的各位。

stackoverflow.com

Wolf – Gameboy cartridge with co-processor

在 Gameboy Color 上移植德軍總部 3D,作者用了很多早期遊戲機上突破硬體先天限制的常見途徑:特製處理晶片。我們在紅白機上、在超任上玩過的某些大容量、音效特佳、畫面特效令人驚豔的遊戲,很多是仰仗了這種「開外掛」的方式,另外則是取決於遊戲製作者對主機的掌握度,盡可能以軟體手法做出效果。

我一直很敬佩這些遊戲創作者在有限的資源底下,盡可能豐富我們玩家的感官享受。遊戲機與電腦的遊戲運行環境,向來就是一個相對拮据、一個相對充裕,於是我們常常在電腦上無論是開發遊戲還是其他軟體,都太過於揮霍,這台跑不動,就要你開另一台更好規格的去跑。也許,三不五時可以反思:「是否我可以把手上這個軟體,寫得再更有效率、更省資源些?」真的情非得已時,再去開外掛?

同場加映:

happydaze.se

@kkdai

kkdai/luis: Microsoft Luis.ai API Golang package

編輯自肥的時間又來了!!

LUIS.AI 是微軟提供出來具有 NLU (Neural Language Understanding) 的一個服務,可以讓一般使用者輕鬆建立與使用微軟建立好的語言學習模型.

目前還提供一些 free-tier ,具有良好的繁體與簡體中文的支持,很推薦大家用用看. 這裡有一篇教學文章.

花了幾天的時間,稍微把微軟的 LUIS.AI Golang package 包裝好了. 主要可以讓大家透過 LUIS Golang 套件來做以下事情:

  • 增加一個新的語句 (utterances)
  • 訓練模型
  • 透過已經訓練好的模型來預測結果
  • 選出最高分的結果

目前僅僅完成我需要用的接口,還需要大家的幫忙能夠讓它更好!!

github.com

第十九次 Golang 台灣聚會的投影片跟錄影

又要自肥一下 (喂!)

Golang.tw 是台灣 Golang 社群的官方網站,我們目前持續每個月一次的聚會頻率 ( 如果沒有找不到講者的話 (笑) ).

第十九次的聚會 (GTG19) 日前在 2016/12/20 剛剛聚會完,講者陣容強大包括:

  • Hawk
  • g0v 爆炸頭 LY

閃電秀也跨領域請到

  • Data Scientist - Summit Suen
  • HackMD 作者 Max
  • Guesslin1986

大家如果錯過,可以來看看投影片跟錄影檔.

下一次聚會預估是在 2017/01/24 (如果如期找得到講者的話.... #^___^#)

github.com

comma.ai research 無人車自動駕駛 AI 系統開源了

comma.ai 提供一個無人車自動駕駛的 AI 系統,他們開放了他們 AI 方面的原始馬來提供給大家試試看.包括自動跟車等等系統都在裡面.

開放項目還包括了 80 G 的 Dataset (包括七小時十五分的駕駛資料還有其他的) ,系統使用 Anaconda, Tensorflow 與 CV2. 很有趣的專案.

這個專案有以下特性:

  • 不需要建模與圖形函數 (CV2 僅僅拿來比對相片相似度)
  • 適用於小解析度相機 (160 x 320 灰階)
  • 透過 RNN 來分析

comma.ai

DeepMind AI Reduces Google Data Centre Cooling Bill by 40%

其實 Deepmind 雖然為人所知的就是 AlphaGo 打敗世界棋王,其實前幾個月 ( 2016/07 ) 也公布另外一篇文章.就是講解 Deepmind 透過 AI 的方式來省掉 40% 的冷氣電費.

其實 Google Datacenter 很省電一直都不是秘密,這也是為什麼 GCP 可以比其它同業便宜的原因. ( GCPUG.TW(Google Cloud Platform User Group Taiwan))

這邊有個有趣的舊聞:

這個鏈結裡面有 Google Datacenter 省電的方式,裡面有

  • Measure PUE: 仔細分析 PUE
  • Manage airflow: 管理冷氣的通道
  • Adjust the thermostat: 調整溫度控制
  • Use free cooling: 使用天然冷氣
  • Optimize power distribution: 透過 將 UPS 放在主機上,來減少 AC/DC 轉換

其中... 如果你去搜尋 AC/DC 的話就會找到一個知名人士

恩恩... 就是 「智慧城市委員會」顧問 - (翟神) 翟本喬

deepmind.com

Open-sourcing DeepMind Lab

這兩天最紅的 (ML) 新聞之一,大概就是以 AlphaGo 打敗世界棋王而聞名的 DeepMind .要把他們的 3D 平台的實驗室開源了,這一個 3D 平台中,使用者(玩家)就是擔任裡面的一個浮在空中的攝影鏡頭,並且可以在裡面解開一些謎題.

是不是有點熟悉? 沒錯!就是類似於 OpenAI 的方式.

目前代碼已經開源在Github

懶得看英文? 這裡有中文

題外話:

此外,其實大家都會想說 DeepMind 下一步是不是要挑戰 3D 遊戲呢?

其實早在三四個月前,就已經有 Data Scientist 研究透過 Reinforcement Learning (Q-Learning) 來玩 DOOM (毀滅戰士) 的 Deadmatch 模式,相關網址

方式是透過兩個邏輯:

  • 遇敵邏輯: 就是經由 3D 圖像的判斷,透過 Q-Learning 來自我學習如何透過最少的時間找到敵人.
  • 戰鬥邏輯: 一樣是透過 Q-Learning 的方式來找尋到最好的戰鬥方式.

只是這次 Deepmind 想要挑戰什麼?大家可以猜猜!!

deepmind.com