程式設計週記[2016/12/08]: 本週是滿滿的 AI 大平台的開源週 : OpenAI VS DeepMind

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.

本週摘要

好幾週沒整理文章,其中有去參加 GDGDev Fest Taipei 2016的演講.也有跑去參加 Chatbot Meetup 的演講.

最近有人在問我,還有沒有再寫 Code?

現在大部分的時間都是花在管理團隊跟時程還有產品討論.如果真的需要我寫代碼,其實都是自己想寫啊.名義上可能是說參加社群跟寫代碼都是自己想做的事情.所以都會自己用晚上的時間來做.

不過公司裡面都是社群大大,所以大家都蠻能體諒.加上大伙兒興趣也都一樣,做起事情來也特別的開心啊.就算犧牲晚上睡眠也是開開心心的. XDD



Go

google/gops: A tool to list and diagnose Go processes currently running on your system

gops 可以分析你目前跑的 golang app ,可以分析到所有的記憶體狀況外.甚至是 goroutine 都可以分析.

Go’s alias proposal and all my concerns of Google controlling Go

Go vendor 討論與 google 是否控制 Golang

Encrypted Configuration in Go

透過 Golang module 來講環境設定加密的方法 Kms Golang

grpc-go

在幾天前把使用的版本更新到 #golang 1.7.1 之後,據說有顯著的效能提升.

A note on the version used: significant performance improvements in benchmarks of grpc-go have been seen by upgrading the go version from 1.5 to the latest 1.7.1.

FromXToGo

如果你正從某個語言( java, Python, ruby. …) 想要換到 Golang 卻又害怕嗎?

這邊有一連串文章搜集好相關的故事,可以給你們一切參考。

Go - First Impressions

有人分享他自己對於 #golang 的第一印象

IronFunctions - the serverless microservices platform. http://iron.io

Iron.io 一直以來都是強力推動 Golang 的公司,現在他們提出了新的產品。 iron.io functions 一個基於 Golang 的 serverless 的平台。

How to write your own Go tool by Fatih Arslan

Fatma Arslan (vim-go 的作者) 介紹了如何透過 go/ast go/parser 與 go/printer 來製作 golang 的小工具,並且透過 gofmt 的 use case 來解釋如何透過這些工具來製作.

Introducing Distributed Cheese: Traefik 1.1 Camembert Is Out!

Træfɪk 是一個用 #golang 打造的 HTTP reverse proxy 跟 load balancer 具有高效能與友善的使用介面。 在最新的版本中支援了 docker swarm mode 跟 mesos. 快來看看

Go 1.8 toolchain improvements

Dave Cheney 解釋預計在 2017/01/31 將要釋出的 Go 1.8 主要在 toolchain 上的優化. 其中包含有:

編譯得更快: Go 1.7 就支援了 SSA(Static single assignment) 但是由於相容舊的方式,留了不少舊的架構. 1.8 完成了所有的優化並且拔光舊有的架構. 可以讓你編譯得更快, 雖然比不上 Go 1.4 (因為當時用 C 來做底層 Compiler 1.5 之後換成 Go 原生來編譯 Compiler ) ,但是也有長足的進步.

Code Generation 的優化: 對於 Code 分析與產生 (go gen) 有著些許的優化與速度提升.

Defer 與 cgo 的效能提升: Defer 提升 33% 而 cgo 提升 45%

平台支援: Go 1.7 支援 64-bit mips, Go 1.8 支援 32-bit mips

https://blog.pusher.com/golangs-real-time-gc-in-theory-and-practice/ 這篇文章敘述了一個從 Haskell 轉到 Golang 的工程師分析對於 GC (Garbage Collection) 的理論與實務上說明.

不僅僅有一段對於 GC 的動態展示,還有相關代碼可以了解 GC 變化的狀況.很推薦大家好好了解一下基本原理.

GDG DevFest Taipei 2016 - In Love with Golang

GDG Dev Fest 是 Google Developer Group Festival Taipei ( Google 開發者群組嘉年華會 ) GDG DevFest 之前在 GTG 有人問我,為何大家投影片不用 Golang Present 來做.所以我為了 GDG Dev Fest 做好了 Golang Talk 的投影片.

這是 GDG DevFest Taipei 2016 的投影片. 我要坦誠我不是使用 GDG DevFest 的官方版面,因為我使用 #Golang 的投影片工具 - “Present”. 週六內容主要圍繞在介紹 Golang 的優點與特性 與分享 Golang 如何改變我對於 Programming 的想法.

希望這些內容能夠改變一些人,也希望能讓大家更了解 Golang 的優點.



Python



Android/JAVA/NODE.JS/Scala



Docker



Kubernetes

In 13 minutes from Kubernetes to a complete application development tool



iOS/Swift



其他程式語言



論文收集



網站文章



Machine Learning

[DSC × TAAI 2016] 李宏毅 / 一天搞懂深度學習

資料者年會的教材,如何一天搞懂深度學習.

[DSC x TAAI 2016] 林守德 / 人工智慧與機器學習在推薦系統上的應用

comma.ai for the people to experiment with

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

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

這個專案有以下特性:

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

Open-sourcing DeepMind Lab

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

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

目前代碼已經開源在 Github
懶得看英文? 這裡有中文

題外話:

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

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

方式是透過兩個邏輯:

  1. 遇敵邏輯: 就是經由 3D 圖像的判斷,透過 Q-Learning 來自我學習如何透過最少的時間找到敵人.

  2. 戰鬥邏輯: 一樣是透過 Q-Learning 的方式來找尋到最好的戰鬥方式.

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

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))

這邊有個有趣的舊聞:

https://www.google.com/about/datacenters/efficiency/external/index.html#best-practices

這個鏈結裡面有 Google Datacenter 省電的方式,裡面有 1. Measure PUE: 仔細分析 PUE 2.Manage airflow: 管理冷氣的通道 3. Adjust the thermostat: 調整溫度控制 4. Use free cooling: 使用天然冷氣 5. Optimize power distribution: 透過 將 UPS 放在主機上,來減少 AC/DC 轉換

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

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

Sega - 人工智慧的現況與未來

Liveouse.in CEO Sega 整理的投影片,其實內容相當的充足而有條理.滿適合不太了解的人閱讀.



有聲書/影片心得



[好文導讀] [Dear Product Managers …] 親愛的產品經理- 來自曾經支持你的工程團隊!

(image from original article)

原文鏈結(Dear Product Managers …)

前提:

雖然大家常看到我在 Golang 社群裡面忙碌,但是其實在公司內部好像我又開始忙碌地做著團隊帶領與專案管理的工作(完全碰不到代碼啊).

但是偶然看到這篇文章,深深被文章內文感動.分享給大家!

內容:

這篇文章是由一個資深的 UX Engineer 寫給他們的產品經理,主要是要告訴他們產品經理他們 (指的是 工程團隊) 如何從支持他慢慢轉變成不在支持與在意.

主要原因如下:

PM 會提出沒有根據的評估 (甚至是猜測)

團隊們表示,大家都會猜測.只是猜測的部分需要有許多的相關依據來補充.所有工程團隊也會希望他們的 PM 也是如此做事.

PM 希望讓團隊動起來

工程團隊也希望能夠不斷的前進來幫助產品,進而幫助公司來獲勝,但是絕對不是花時間在開會,寫專案評估報告, 每天花費在哪些專案時間,甚至是 story 跟 feature (意指 scrum meeting) . 工程團隊希望能把時間花在真正的產出上,那些能讓客戶,能讓公司真正能夠獲利(獲勝)的地方上.

PM 經常關起門來自己做專案評估

工程團隊相信許多的 PM 可能曾經都是好的工程師,但是請 PM 要好好相信工程團隊. 讓他們提供他們對於產品的想法,提供他們的時程評估. 工程團隊不是不能提供好的時程評估,只是需要有足夠的討論.

最後…

當然! PM 不需要一定要聽從他們的意見,工程團隊依舊會根據 PM 給予的規格將專案完成.但是工程團隊會失去對於產品的熱情,而這不是公司樂意看到的.

工程團隊最後希望 PM (們) 能夠好好思考,讓大家一起做好彼此該做的部分.交付出最好的產品.

心得:

很令人深思與檢討的好文章. 雖然花不到兩分鐘可以讀完,但是後勁很強!

我們在規劃產品與專案時程的同時,不是不願意找工程團隊來討論,只是常常碰到軟釘子,或許只是那些工程師曾經滿懷期待卻又被傷害吧.

這篇文章會讓我之後做更多團隊領導與專案管理的同時,會更仔細去思考整個團隊究竟需要什麼,這樣能不能夠讓每個人都貢獻他們的能力來幫助產品更好!

[Golang] 來用 Golang Present 製造 Golang 專屬投影片

前提:

很開心聽到有 GDG DevFest Taipei 場的活動,身為 Google 的語言 Golang 的台灣使用者社群共同協辦者,當然也要去參與這個盛會.

不過既然要參與 Google 開發者嘉年華會,當然得用 Golang 的 Present 工具來做投影片,但是其實還真不是那麼的簡單.這裡做一些簡單的筆記.

Golang Present

什麼是 Golang Present ? 特色是什麼?

Golang Present 是 Golang 社群開發出來的簡單的工具,透過簡單的語法可以來製作投影片(語法相似於 Markdown)

Present 也是主要的 Golang Talk 的投影片製作工具,這裡可以看一個範例 State of Go . 你會發現有以下的特色:

  • 簡單,樸素.沒有任何 Theme (特色 :p)
  • 可以顯示,並且跑 Golang 程式碼.
  • 可以在自己的電腦上顯示,當然也有人做好了 GAE 來跑.

如何透過 Golang Present 來製作投影片

以下會簡單的介紹,如何透過 Present 這個工具來製作投影片.

  • 安裝 Golang (恩… 畢竟要透過 Golang 來跑代碼)
  • 參考這個範例
Title of document
Subtitle of document
15:04 2 Jan 2006
Tags: foo, bar, baz

Author Name
Job title, Company
[email protected]
http://url/
@twitter_name
Some Text

* Title of slide or section (must have asterisk)

Some Text
  • 在該目錄執行 present 可以在本地端的 http://127.0.0.1:3999 看到結果.

  • 或者可以 push 到 github 上,透過 GAE 來看. 這裡有個範例 http://go-talks.appspot.com/github.com/.... 就可以跑.

筆記:

實地的透過 Present 來製作投影片.其實有一些麻煩的地方.挺值得記錄一下的.

  • 圖片的大小無法自動縮放,建議使用 600 x 600 左右的大小
  • 如果要放 GAE 上面來跑 Golang code ,記得所有跟 net/http 不太方便 demo server .因為 http port 會被擋(建議使用本地端來跑)
  • GAE 來播放投影片會透過相當程度的 cache ,也就是大概是你今天改好的投影片,大概要一會兒才會看到最新版本.

Reference:

[Chatbots Meetup] 參加 Chatbot Meetup#1

Meetup link

Microsoft - Microsoft Bot Framework x Cognitive Service 快速打造智能聊天機器人

投影片

  • Introduce Bot Framework
  • Cognitive service
  • Bot Service just launch in few days.

Compose.Ai - Introduction to NLP for Chatbots

投影片

NLP Problem: Standford Course Slide

  • 如何獲得最多回饋的 Bot?
    • A: 就罵髒話
  • Entity 個數的專一性
    • A: 不超過 10 個

Ref:

Botimize.io - Messenger Platform’s New Opportunities and Insights

投影片

Zeroth.Ai Asia AI/ML Accelerator.

工人智慧到人工智慧

Linker Networks - Golang

就我的 投影片

Him/Her - Facebook 不想讓你知道的事

投影片

  • PS_ID -> FB_ID
    • 透過 PS_ID 拿 photo
    • 需登入 (token)
  • Facebook-Chat-api
    • 不需拿 token (不用透過 FB Chatbot 登入授權)
    • 當作網址登入
    • 多個機器人,會被踢

aloha.ai 24 小時的品牌互動

客服中心,透過 Rule-based (keyword) 的方式

人工智慧  -> 工人智慧 (如果機器學習出問題的話)

卡米狗

2016/10/21 上線

15 萬人使用

流程

  • A, A –> A
  • 貼圖 –> 貼圖
  • 關鍵字回覆 A–> B
  • 抽籤

一個 Bot 只能加入 1000 群組 (Line Bot 限制)

程式設計週記[2016/11/04]: 西部世界真的是很 HBO 的一部影集

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.

本週摘要

寫代碼跟玩 Kubernetes 已經變成是我抒發壓力的一種消遣,也已經沒有時間(也不應該)在上班時候寫代碼,只好半夜在家看看代碼跟玩玩 Kubertes 了.

最近看了 Westworld ,這部影集的人性探討真不少.相當建議大家來看看,結合時下流行的幾個話題: AI ,機器人,道德問題.



Go

Go 1.8 將會加入 graceful close/shutdown for net/http

大家期待很久的功能, gracefully shutdown 給 net/http 的部份總算在 Go 1.8 加入了.

func (s *Server) Shutdown(context.Context) error {}
func (s *Server) Close() error {}

只要有接上這兩個函式接口,並且將 context 做相關處理就好了.

GAE go Image API for GCS

透過 GAE 上面的 Image Go API 來處理各種圖片的處理.

Go for your Organization - Eleanor Deal

這個 talk 的題目相當有趣,就是 #Golang 對於你組織會有哪些影響. 他分別就幾個層面來談:

  1. Go 具有簡易的 Concurrency
  2. Go 設計需求簡單而容易明瞭
  3. Go 具有內建的 testing, benchmark 甚至容易做 Profiling
  4. 當然 DevOps 而言 Kubernetes , Prometheus 甚至 etcd 都是你的好夥伴

最後 Gopher 都是具有分享的精神,而 Golang 不僅僅可以 Scaling 你的機器,更可以 Scale 個人與團隊.

Methods in Go

Methods in Go (part I) 深入探討 Go 的 Method 並且討論 T 與 *T 處理方式,一共有兩篇很值得一看.



Python



Android/JAVA/NODE.JS/Scala



Docker



Kubernetes

How to Easily Install Kubernetes on AWS

這篇文章教導如何在 AWS 架設 Kubernetes ,其實架設 Kubernetes 並沒有那麼的困難.而且,如果你要在 AWS 上面架設,甚至有 KOPS( Kubernetes Operations ) 的工具可以幫助你自動安裝.

官方有另外的文件有建議其他的小工具



iOS/Swift



其他程式語言



論文收集

Scaling Spark in the real world: performance and usability

Databricks (提供 Spark 服務的公司)的論文.



Machine Learning

Microsoft Concept Graph Preview - For Short Text Understanding

微軟開發的針對短字串的理解學習系統,比如說一段 Microsoft 能夠理解成一家公司,軟體公司以及是 OS 系統的供應商.成員都是華人,相當有趣喔.

Fuzzy AI

透過類似 IFTTT 的指令介面,但是提供更模糊 (fuzzy) 的語意分析來讓你的 Rule-based action 變得更有彈性與學習性.



網站文章

一个PHP实现的ID生成器

這裡談到如何透過 PHP 來產生 Unique ID ,但是也引用另外兩篇有趣的文章:

Mirai物联网僵尸攻击深度解析

2016/10/21 已經確認 Dyn 是遭受 Mirai 的 IOT DDOS 攻擊,這邊解析到底如何進行攻擊的. Mrai 有些特色如下:

  • 排他性極強(改變 telnet port ,殺掉其他對手) 來確保執行效能
  • 隱藏自己,並且確保只會感染一次(確保資源足夠)

《西部世界》,披着AI皮毛的糟糕游戏

找了時間把最近很熱門的 Westworld 看了前面幾集,順便也找到這篇有趣的文章.

由線上遊戲的角度來看 Westworld 這部影集. 並且強調如果以一個開放性世界的遊戲來說.他可能是一個不好(不好玩)的遊戲,因為太強調隨性與人性這件事情.可能讓這個開放世界遊戲(?)變成遊戲性不足.

而我個人覺得,這部片倒是有點像是軟體公司的鬥爭電影.從特異獨行的總工程師到幫忙擦屁股的維運團隊,並且與測試團隊的勾心鬥角.

我想,不知道有沒有其他軟體公司的人有跟我一樣的感覺的. XDDD



網站收集



有聲書/影片心得



程式設計週記[2016/10/28]: Dyn 被攻擊的事件,讓我們了解網路有多重要 XD

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.

本週摘要

管理的事情越多,忙碌的部分也就更多.加上最近身體不是很舒服,剛剛辦完了 Golang Taipei Gathering 10 月份的聚會後,馬上就生病了.

整理這個禮拜的 twitter ,發現似乎變得有點少,看來得除了讓自己在公司的事情之外,還是得要好好學習東西.才不會讓自己每天忙碌而忘記真的想要學習的事物.



Go

Benchmarking go redis server libraries

Redis (redis.io) 是相當知名的 in-memory data structure store .

這一篇比較了兩個比較知名的 Redis Golang Framework 的效能評比 redcon 跟 redeo 兩個套件在都略遜於 Redis 本身的 throughput ,作者覺得那些的效能問題可能來自於 Golang 的 GC 的處理上.

大家可以參考看看:

Building Blockchain Networks

Chain 是一個 BlockChain 服務的公司,提供透過 blockchain 技術的金流與安全的資訊服務.

相關訊息之前有板友貼過, 不過在這裡增加一些其他資訊:

  1. Chain 公司內部人員有一位是 Keith Rarick 是之前是 Heroku 做出 Go official buildpack 的大大 KR Github

  2. 根據 Reddit 上面的討論,如果你使用這個服務而沒有 AGPL 的話,你就得付企業的 License 費用 Reddit link

GOROUTINE 執行相關討論

上週有人在 Golang.TW 的 Slack 問了一個關於 goroutine 的相關問題.

關於 goroutine 的程式為什麼不會列印在 thread 裡面的傳值部分. 這篇文章有清楚的分析原因與為什麼,感謝 KerkerJ 的紀錄與分析.

digitalocean/go-qemu: Go packages to interact with QEMU using the QEMU Machine Protocol (QMP). Apache 2.0 Licensed.

qemu 是一個虛擬機器的軟體,而這個套件可以使用 Golang 來透過 QMP 來操作 qemu.

Podcasts about Go (golang)

所有跟 #golang 相關的 podcast 列表



Python



Android/JAVA/NODE.JS/Scala

How to build your own Uber-for-X application

介紹如何透過 node.js 跟 一些資料庫語法,來打造自己的 Uber-for-X (也就是類似 Uber 一樣的 Online to Offline )的軟體.



Docker

Selling the C-Suite on Containers - Container JournalContainer Journal

如何向高層推薦 container 技術

从威胁到整合,容器将改变openstack的未来? - OSC源创君的个人空间 - 开源中国社区

Container 是否會



Kubernetes

Learn Kubernetes the Hard Way (the Easy and Cheap Way)

Kelsey Hightower (Google Kubernetes 的傳教士) 的文件 kubernetes-the-hard-way (透過硬派方式來安裝 Kubernetes) 一直都是了解與安裝 Kubernetes 最基本的安裝手冊.但是由於真的太困難而變成許多人望而卻步.(不然就是透過 minikube 或是直接使用 GKE)

這篇文章,透過相同的方式來安裝.但是卻幫你透過 Vagrant 來安裝的方式幫你把 Kubernetes 安裝起來.一鍵可以輕鬆完成,實在相當的方便啊.



iOS/Swift



其他程式語言



論文收集



Machine Learning

Machine Learning is Fun!

很基本的 Machine Learning 的一系列介紹文章,主要就是希望大家能夠有基礎的了解.

並且透過如何估計房屋的價值來做一段簡單的範例程式.一共有五篇相關文章.

Machine Learning in a Week

這篇文章很有趣的敘述了一個對於 Machine Learning 有一點點了解的工程師 (上過 Andrew Ng 一半課程的人) 如何透過一個禮拜的學習來好好搞懂 Machine Learning.

很適合像我這樣的人來好好仿效.



網站文章

StarUML

Mac 上面免費又好用的 UML 工具,也可以話 ER-Diagram 跟 Class Diagram .

Linux进程隐藏的一种实现思路

讓我們土炮 Google Doc: Let’s make own Editor like Google Docs

Fred Chien 很厲害的前端工程師.介紹如何透過 JS 來自幹自己的 Google Doc .

Kontena: an alternative container orchestrator

除了 Docker Swarm, Kubernetes 與 DCOS 之外,另外一套的 Container Orchestrator 的生態套件.不過適用 Ruby 開發的.ㄋ

[請益] 自動化佈署(Chef, Ansible, Salt)

相當精彩的問答,關於自動化佈署工具教學與學習部分.



網站收集



有聲書/影片心得