同步發表於部落格

前言

最近真的很喜歡各種 IoT 的應用,買了很多 Arduino 跟各種感測器,光是手上有的 Arduino 就有 Arduino Uno、Arduino Mega2560、Arduino nano * 3。想說有空就來玩玩,看能不能做出一些有趣的應用,順便趁著這個機會複習一下高中的電子學還有各種硬體的運作。

剛好公司舉辦了社內黑客松,對於主題沒有太多限制,就用了這段期間實作了之前就很想做的應用,「空氣品質監測器」。雖說是空氣品質,不過實作出來後也只有二氧化碳濃度跟溫濕度監測,如果有感測器的話要另外加上也不是太大的問題就是了。

會有這個想法主要是因為二氧化碳的濃度真的會影響人的思考跟產能,相信大家都有關在會議室裡結果突然就覺得頭昏、思緒混亂的情形吧。有很大的可能性就是因為二氧化碳濃度過 …


裡頭的分享蠻完整的,建議大家進去看看,接下來做些補充:

IDE 整合這個觀點蠻有趣的。我覺得因為 svelte 的聲量跟社群還不夠廣,所以 IDE 擴充這一塊可能還要再等一陣子,LESS 的支援也是。

svelte 的 css 是直接寫在 style tag 裡面,在 compile time 的時候就幫你做好 class 並且加入 hash,這樣子的好處在於:

  • 可以靜態分析 CSS,幫你刪掉不必要的選擇器(REPL
  • 在 compile time 可以提示沒有用到的選擇器

Svelte 在遇到 <style> 時並不是照本宣科將內容塞進去而已,而是使用了 css-tree 爬過一遍後去配對內容是否有用到,再自動加上 hash 做 scope(可以查看 REPL

這有幾個缺點,像是下面的程式碼就沒 …


一直以來,我都覺得自己是「收穫」大於「付出」的人。你可以參考我在前幾年寫的北漂青年在台北生活的這幾年

從小到大因為家境的關係,所以時常要靠補助才能讓生活過得比較寬裕一些,我算是比較幸運的那一群,家境雖然不好,但還沒有悲慘到家徒四壁、一貧如洗。這個情況到了大學二年級左右,比較有能力可以靠自己養活自己時,狀況才開始逐漸改善。

所以近幾年也開始思考,除了工作本身之外,透過自身的能力,還可以怎樣幫助別人?

當時 huli 可以說是影響我很深,那個時期他做許多免費的程式教學和撰寫大量的初學者導向的文章,來幫助他們入門寫程式或是轉職,甚至還開始了「程式導師實驗計畫」。

額外一提,如果你很想要轉職成(前端)工程師的話,這個計畫非常值得一看,除了課程本身非常紮實之外,你幾乎可以用沒有風險的方式來報名這個計畫。

回歸主題,答案不是很明顯嗎 …


隨著使用者對隱私權的重視,各個服務也都逐漸開始調整自家的隱私權與安全,像是 Mac 改版到 Catalina 之後會很煩人地問你是否要同意 xxx 存取某某資源。

雖然安全性上的確是變得更嚴謹了,不過也因為如此有時候會出現一些慘案。像是 WACOM 手繪版沒辦法順利使用之類的。

而 Google 也在 2019 的 Google I/O 大會上宣佈了安全政策調整,其中對目前網頁開發影響最大的應該就是 Chrome 官方會逐漸移除第三方 Cookie 的支援。

其中從 Chrome 80+ 開始,會將 Cookie 當中的 samesite attribute 預設設定為 lax (在版本 80 之預設是 None)。接下來我們會從 samesite 的定義以及它有什麼用處,還有對 Cookie 的反 …


mailchimp 是我相當喜歡的電子報寄送服務,斷斷續續也用了三年了,突然想寫下來。

我在三年前寫了一份週刊,叫做日語八百屋,當時主要就是以 mailchimp 來做電子報。

要做電子報寄送服務並不簡單,像是 event tracking、資料統計、不掉信、重試、針對不同的客戶端優化等,也因此 mailchimp 這個在早期就進入市場的產品相對穩定而且有非常多的企業正在使用。

這篇報導記錄了他們的創業故事。

mailchimp 的前身是一家接案公司,專門幫各個企業解決他們的問題並且幫助他們成長,後來發現各個小企業都有對於電子報的需求,因此逐漸將心力轉移到做電子報服務上面。

這個 mailchimp 到現在也已經 10 多年了,網站甚至還可以看到 ember 的痕跡,但是仍然是個非常好用的服務。

讓我最感動的是關於他的定價方案,在 2000 以內的訂閱者 + 10000 封信一個月的額度下,完 全 免 費,沒有任何試用期。

這樣的額度已經足以讓一個創業公司累積到第一批使用者甚至開始盈利,直到你的額度超過了之後 mailchimp 才會開始收錢。

這就就好像在跟你說,嘿我知道你正忙著燒錢累積使用者,打造優秀的產品,等到你的公司茁壯了再付錢給我吧。

雖然進入付費階段後那個價碼有點可怕(對公司來說或許還好),但是真的可以感受到 mailchimp 是很認真把你會遇到的問題和可能需要的工具都準備好了。

以我需要的功能來說:

  • 預覽
  • 電子報編輯器
  • 查看統計資料
  • 寄送測試電子報
  • 後台管理訂閱者
  • 排程寄送

這些在 mailchimp 上都可以非常容易查看跟設定。

完整的 API 與文件

如果是工程師,你甚至可以利用 mailchimp 提供的 API 做到上述的事情,打 API 自動生成電子報模板、用 API 建立 campaign 跟寄送,這樣一來就可以跟自家的產品結合,也省下非常多功夫手動操作 UI。

mailchimp 的 REST API 文件非常的清楚明瞭,而且錯誤訊息也很容易懂,非常推薦大家試試,不知不覺就串起來了。我非常欣賞這種做產品的態度和精神,也希望自己有朝一日能夠成為這樣的角色。

最後我想要以文章中最後一段當作結尾。

“Everybody we talked to said, ‘You’re sitting on a gold mine, and if you pivot to enterprise, you could be huge,’” Mr. Chestnut said. “But something in our gut always said that didn’t feel right.”

後記

老實說最近我一直在這種產品與技術之間的學習做拉扯。一方面想要繼續精進自己的技術(不管哪方面的都一樣),又想要更多做產品的經驗。不過這兩者感覺不完全是互斥,例如做產品需要技術支持,鑽研技術可能是為了更好解決服務上遇到的問題。

哇,好迷惘。


(本篇採訪於 2019 年 4 月,當時 scars 本人尚未就職)

日語八百屋人物專訪,這次邀請到了前 17 直播的前端活動組主管,在業界已有 10 年經驗,目前在京都 LINE 擔任前端工程師的 Scars。

Scars 擔任網頁開發已有 10 年經驗,經歷過 flash 時代以及快速演變的前端,也持續精進自己的技術,經歷過大大小小的專案開發,scars 累積深厚的實力,也是讓他順利赴日求職的關鍵之一,這次就讓八百屋挖掘 scars 背後的秘密吧!

採訪大綱

  1. 為什麼會想要到日本求職呢?不是日本也可以嗎?
  2. 目前的日文能力如何,未來有興趣繼續學習嗎?
  3. 可以分享一下 LINE 面試經驗嗎?
  4. 整個過程大約花了多久?
  5. 覺得跟台灣面試的差別在哪裡呢?
  6. 在工作上有跟日本人合作的經驗嗎?
  7. 到日本求職,你最大的考量是什麼?
  8. 你對日 …


現在已經有越來越多創作者,為了加速自己的製作流程,都會或多或少寫點程式來幫助自己優化。

這些創作者們非常清楚瓶頸在哪裡,而且因為他們想要花更多時間創作的慾望,這種動力和求知慾有時候會比工程師自我學習本身來得強烈,甚至可以比工程師更精準地找到解決方法。

看看文件、打個 API,完成一些簡單的應用跟日常工作,這些事情並不需要太大的工程能力,只要一些程式基礎就能輕鬆上手。

談談好和弦在前幾個禮拜的影片 — 上字幕吧。雖然跟音樂有點離題,但我很驚訝的是他願意把自己的想法轉化為行動的精神,甚至還把它傳到 github 給大家使用跟修改。

開源這件事情在軟體開發當中並不少見,多數的網頁應用或是軟體,或多或少都是利用別人已經做好的工具或框架上進行開發。除了別人可以把程式碼公佈出來之外,你也可以貢獻自己的力量進行修改。

這個功能很簡單,會寫程式的工程師們應該都可以在短時間做出來,但我會說更重要的是想法還有行動本身。

這個點子你想得到嗎?更不用說一看到程式碼就想重構跟 Over Engineering 的工程師們,做半天連功能都還做不出來。

而且如果仔細看一下程式碼,其實也沒有那麼難懂,頂多就是變數放在外面不是那麼好管理而已,但我覺得這些程式碼非常的直白簡潔,沒什麼複雜的抽象。

仔細看一下好和弦的頻道,你會發現他身上充滿了優秀工程師的特質,邏輯清晰、條理分明、熱愛分享、行動快速,就連在業界本身都是一件難能可貴的事了,更何況是跨領域。他用鋼琴打電話、解碼影片、用 google 翻譯寫了一首歌、寫了一個字幕產生器、五度圈,有些程式碼我猜可能連工程師們還不一定寫得出來。

其實學習一個領域,從而衍伸出來的一套學習方法,跟寫程式沒有太大的差別,所以你可以發現明明對方不是本科系,卻一樣可以在那麼短的時間內上手,掌握必要的知識,就是因為在其他領域的訓練。

我在前一份工作中親眼見證這件事。

創作者們花了大量的時間來產出作品,如果在業界生存下來,必然掌握了一套自己的法則與 know how。因為對方同時有另外一門領域的專業,所以可以更快看到解法或是問題的癥結點。

難道這就代表工程師從此喪失價值了嗎?當然不是。

這也讓我反思,身為一位工程師應該要怎樣在這種狀況下立足?

當我們跟創作者使用同一套程式語言、同個 Library,解決同樣的問題,人家雖然寫扣醜了點,但比你更有優勢找到問題和解決方案。身為一位工程師可以怎麼做?

我知道像是架構、工程化、高流量或是專業程度比較高的領域還是需要經驗跟專業累積,不過這倒也是很好的時機,可以好好思考一下在未來每個領域之間不再涇渭分明,每個人都可以同時有複數個技能與領域知識。

在這種情況下,如果要繼續往下走,我覺得可以從幾個角度切入:

  1. 紮實且深厚的計算機科學基礎
  2. 在除了程式本身以外的一個領域挖深挖廣
  3. 多接觸除了寫程式以外的事,行銷、產品、管理、溝通、自我經營。

這個現象反而可以去蕪存菁,一些沒有實力的草包工程師很快就會被比下去。

雖然創作者也開始寫程式是件好事,但是他們往往只是為了解決眼前的問題,而不一定知道原理或效能,這時候就是工程師的價值所在了,但我會說隨著電腦效能過剩,有時候這種價值也不一定可以彰顯出來。

另外就是比較困難的大型題目了,像是 GPS、大數據、機器學習、電腦視覺等等,光靠短暫的學習可能不夠,而是需要投注大量心力鑽研的知識,就是工程師們無可取代的地方。除此之外還有比較底層的知識,作業系統、萬年不變的資料結構與演算法等。

我相信除了好和弦之外,一定還有很多創作者都已經踏足程式領域,感覺會是個很有趣的現象,期待更多創作者分享他們學程式的心得。

5/17 更新

前幾天看到六指淵發佈的留言轉圖片的工具,覺得概念跟本篇文章的主旨類似,都是他們為了解決自己碰到的問題,進而採取行動改善,甚至回饋給大家使用。

這些都是難能可貴的事,也是我覺得工程師可以做到的事情,讓更多沒有經驗的人可以很輕鬆踏入這塊領域,進而改善他們的生活或工作效率。

在軟體開發中,開源的精神早已盛行許久,科技進步的現在寫程式也不是某群人專屬的技能,現在該是把這個精神傳播到更多領域的時候了。


前言

恩,簡單來講就是開始了一個 YouTube 頻道,就跟寫好了一個部落格很開心想要分享一下的感覺。

嘗試不同的呈現方式

在 2020 年,除了繼續深耕自己在程式這個領域之外,我也想透過另外一種方式來呈現自己有興趣的東西,本質上就跟寫部落格一樣,只是換個呈現手法而已,部落格當然還是會持續撰寫。

而拍影片這件事情對我來說更有挑戰性了,首先是對鏡頭的恐慌還有平時沒什麼在講話的習慣造成了明顯的冗言贅字、拍攝的節奏感、觀眾想要看什麼,這些都是光寫文章不會去考慮的事情(至少我是這樣啦)。

除了拍影片之外,另外學到的是剪影片,雖然不是特效型 YouTube,不過這種方式簡直是大幅提高了創作的可能性,而且也蠻好玩的。

我深信不管是文字、聲音或是影像,每一個傳播資訊的方式都有其獨特性存在,沒辦法互相取代,彼此各有優缺,影像剛好是我最近想嘗試的一個手段。

因為影片的特性,在傳播上會比純文章甚至是 Podcast 好一些,甚至可以透過 YouTube 的推薦機制跟渠道把影片推送給有興趣的人。

再來我有一些比較不好寫成文章的主題,或是寫成文章後比較難吸引到人的主題(樹莓派、Arduino、Sonic Pi 等),這些東西搭配影片跟實際操作,給人的印象比較強烈,也比較容易讓他們在看完的當下有所行動(吧)。當然等找到比較適合的呈現方式之後,或許也會開始 Podcast 也說不定。

我承認自己比較雜食,除了自己目前任職的領域之外,也會想往各個不同的領域探索,像是前面有提到的主題,然後發現越往底層走,能夠找到中文的資源也就越少,也越來越少人可以一起分享,所以我也希望透過這種方式呼朋引伴。

Be the change you want to see in the world

深耕專業之外,自我經營

比較有趣的是,因為 YouTube 本身也算是一個社群,任何經營社群需要的技巧,在 YouTube 也適用,這也是我在今年想要嘗試的事情 — Growth Hack。

YouTube 也一直是我很想嘗試的平台,雖然不知道成效如何,但工程師嘛,抱著 MVP 的精神先求有再求好也不錯。

走到一個階段,常常會發現,明明我有一個很好的 idea、寫得很完整的 side project,但為什麼都沒有人看到我。

這種感覺會很沮喪(至少對我來說),所以 YouTube 簡直就是一個活生生的練習場,會幫你計算各種數據,點閱率、觀看時長、曝光率等等,自己做的內容很容易就可以分析。

在台灣似乎還沒有發現像我這種取向的頻道(有的話歡迎丟給我知道),在前後端或許都有一些人在經營,但有些只針對部分領域,有些針對部分程式語言,有些只是丟上直播。相對沒有看到面向比較廣的 YouTube 頻道,也沒有剪片剪得那麼 YouTuber(自己講 XD)。

自己想做的內容 v.s 觀眾想看的內容

還有一個蠻有趣的話題就是,怎麼在觀眾想看的內容與自己想做的內容做取捨。我其實也在找答案,到現在也才上傳短短 6 部影片,還有很多路要走。

短期的目標是希望自己的內容被更多人看見,因為這樣子自己的東西才會有人看,也才會知道到底哪裡需要修正與改進。

另外與其抱怨大眾們都只看速食內容,我覺得可以換個角度去思考,去看看為什麼影片能夠爆紅,有哪些因素,再慢慢轉換到影片當中,我自己覺得只要表現的手法吸引人,就算是比較小眾的主題,還是能夠被注意到。

一般的工程師,如果要獲取資訊或是補足知識,通常不會透過 YouTube(除非是看 Conference),而是像是 Udacity、Coursera、Egghead 等等的線上平台,雖然我也想要做比較深入一點的內容,但如果這樣的話這個頻道就注定只能變成小眾頻道,就變得跟寫部落格差不多了。

一些體悟

我覺得如果同樣是想做 YouTube 的工程師,一定要有覺悟是,拍影片這件事情會讓你的效率大幅降低。

寫程式本來就是一件孤獨而安靜的事情,現在你要一邊寫程式一邊顧鏡頭、一邊跟觀眾互動、想腳本,比想像中累很多,而且我不知道大家有沒有這種經驗,寫程式寫太久之後突然忘記要怎麼講話。

而且最痛苦的就是剪影片了,剪下去就是 6 ~ 8 小時飛走。哎,還有好多事情要學啊 QQ。

試水溫階段感覺還有很多不足的地方,但如果對寫程式有興趣的話,記得訂閱看看~


初回の紹介

日語八百屋會在每個禮拜一時寄送 5 ~ 15 篇不等的文章,涵蓋的範圍有日本旅遊、日文學習、日本文化、動漫、日劇等等,但主要仍以日文學習為主軸。不管是日劇迷、動漫迷、語言學習者,都可以在本週刊找到適合的文章。
日語八百屋,源自日語的「八百屋」。除了「蔬菜店」的意思之外,也有「很多」的意思。學語言,多的是從微不足道的小事開始,50 音、文法、單字、敬語,最後內化成自己的事物,積跬步,成千里,最後逐漸變成自己的「八百」。

今週の話題

八百屋獻聲 — 飛機廣播練習

(連結為 mp4 檔)

之前曾經分享過關於練習聽力與口說的文章,還有之前提到的「回音法」幫助自己練習,這次試著錄一段飛機廣播的片段。最初在練習的時候最大的挫折是一連串的敬語連發,實際練習後才發現完全沒辦法順暢講出來。

實際把聲音錄下來之後,就可以知道自己哪裡需要改進了,持之以恆練習的話,相信效果一定相當顯著!

尾道一日散策

尾道已經成為我在日本最喜歡的街道,風景迷人,有著濃厚的下町氣息,也融合了些許現代元素。在尾道散步,徹底感受到のんびり的意境。

有咖啡廳可以休息、傳統錢湯改造的大和湯、還有搭船只要 5 分鐘的向島,染上夕陽的向島和波光粼粼瀨戶內海,怎麼拍都美到不像話。

如果想要來點不同的風景,沿著商店街走就可以到纜車處,到山頂上遠眺整個尾道與向島,還有充滿療癒文青氣息的貓之細道。

這一個散步路線足夠花上半天,如果想要再多品嚐尾道的氣息,可以租台腳踏車到向島走走,真的是會讓人拍照拍得不要不要的。

我覺得林芙美子寫下的文字,可以說是尾道的最佳註解:

「海が見えた、海が見える、5年振りに見る尾道の海は、なつかしい」

不管你是因為情傷、工作壓力、人生煩惱、厭世,想要找個地方遠離塵世喧囂,尾道絕對是個值得你造訪的小城市。

日本與武漢肺炎


這個 talk 比較多小細節,所以另外拆成一篇來寫。

Slack 的搜尋功能是使用 Armeria 開發的。

Armeria 是什麼?

Armeria 是由 LINE 開源的微服務框架,用 Java 撰寫。支援各種 protoco(thrift, gPRC, http),也有常見的微服務場景(circuit breaker、logging、retry 等),目前廣泛使用在 LINE 的各個服務當中。

Slack 搜尋架構 — 1

首先先來看看 Slack 搜尋最剛開始的架構:

  • MySQL 存資料
  • job queue 跟 worker 來 query solr 跟建立 index

這個架構很簡單,不過有幾個問題:

  • 隨著資料增加,搜尋效率不佳
  • 只有一台 Solr,也很容易有效能上的問題

Slack 搜尋架構 — 2

既然 slack 是以 team 在運作, 用 teamID 當作 …

愷開

https://blog.kalan.dev 軟體工程師 / 在日工作中。平時喜歡用程式探索各種可能性,用網頁說故事、創造工具,邁向更好的生活。

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store