Kalan's Blog

Kalan 頭像照片,在淡水拍攝,淺藍背景

四零二曜日電子報上線啦!訂閱訂起來

本部落主要是關於前端、軟體開發以及我在日本的生活,也會寫一些對時事的觀察和雜感
本部落格支援 RSS feed(全文章內容),可點擊下方 RSS 連結或透過第三方服務設定。若技術文章裡有程式碼語法等特殊樣式,仍建議至原網站瀏覽以獲得最佳體驗。

目前主題 亮色

我會把一些不成文的筆記或是最近的生活雜感放在短筆記,如果有興趣的話可以來看看唷!

2021 雜談

原本計畫把自己做的事情整理一下發出來的,結果發現整理完後還真的沒什麼好講的東西,乾脆就用流水式的方式紀錄一下吧。

搬家

2021 年年初我們搬家了,搬到一間大濠公園附近剛蓋好(剛蓋好就入住的那種)的公寓,雖然在大馬路旁有點吵,但這裡的環境我很滿意,有自己的小房間不管是工作或是拍影片都比之前品質好很多。 哎,搬一搬會感嘆台灣找房子要靠運氣,日本只要稍微用心找一下就有一大堆冒出來,然後過幾年附近又有剛蓋好房租也不貴的新築等你搬過去。我也把鍵盤換成了 HHKB,想說給自己新的環境,現在用過之後已經回不去了。

年初

2021 年年初的時候研究了不少高職時沒有好好研究的遺珠之憾,從 AVR Programming 裡面認識了很多東西,像是底層的 I2C、SPI 通訊協定、EEPROM 撰寫、ADC、GPIO、硬體中斷,算是把韌體裡頭應該掌握的知識學了一遍。 不用 Arduino 的原因很簡單,身為一位軟體工程師套套 Library 跟修修別人寫好的程式碼幾乎沒辦法幫助自己學習。 後來認知到 AVR 已經逐漸式微了,幾乎只剩下 Arduino 在撐腰。跟 AVR 比起來,STM32 好用很多,而且不管是價格跟效能都有優勢,功耗也不高。搭配開發版與 IDE 甚至可以直接 on-board debug、設置中斷點,比起 AVR 的確好很多。

實際接觸 STM32 後發現,如果要撰寫程式碼大家都是用 STM32 Cube IDE 在寫,雖然功能是很豐富,但是寫程式碼寫起來很不方便,尤其是用慣 VS Code 之後那個 IDE 實在是太折騰了,嵌入式工程師們都是用這種東西在寫程式的嗎?反之 8bit 的 AVR 只要有 avr-gcc 打開 main.c 就能開啟小世界,比起 STM32 來說還是有進入門檻的優勢。AVR 的 chip 也很便宜,而且很多都有對應 DIP 接腳,麵包板插上去就能開始使用。

工作上因為新功能的開發,加上當時只有我和另外一位同事,其實時程蠻趕的,幾乎每天都在對需求、開發、解 QA 的輪迴中度過,算是相當充實的一段時間。 而且因為要架一個全新的 SSR Server(搭配 next.js),要在一間大公司架 server 要考慮的事情爆炸多,流程也很複雜,要自動化到 Operation Team 能夠從 awx 上操作,不然沒有辦法達到 Release 標準的話只能延期。

因為是途中才發現的需求,伺服器的架設、nginx 設定、playbook 設定、Docker、跨部門溝通、寫文件、向事業部提案、自動化部署、實際功能撰寫,這些都是自己一人獨自實作的。在這同時還要解 QA 票,老實說那陣子心理壓力很大,加班了將近一個月左右,還有一天為了趕進度假日出勤。 那陣子所有部門其實都很忙,因為架設伺服器所需要的知識點也跟前端不同,團隊裡也沒有人可以幫忙。不過另外一位組員很積極地主動幫我 cover 其他 QA 問題,其實還蠻感謝他的。也很感謝主管當時也沒有多說什麼,雖然聽到假日出勤時他有稍微擔心一下,但也是很快幫我和公司協調。

這邊要強調一下,公司非常不希望假日出勤,如果發生了要說明原因,事後公司也會要求你把假日出勤的份用平日休假換掉(不是特休),所以感覺上很像是預支一天的平日拿來假日趕進度。

現在回頭看來是有達到不錯的結果,最後也有在時間內順利上線。除了其他專案的新頁面開發可以用 next.js 寫(以前是用 ejs+純靜態),搭配 SSR 能夠做的事情更多了。而且也因為導入 SSR 的關係,SEO 的實作比以往更便利,ld-json 也更容易寫。

這陣子也在感嘆有時候很多事是自己不去堅持就沒有的,像是架 server 這件事看起來很簡單,但在組織裡,integration 比一個突發起想的點子重要多了,而要做 integration 最重要的往往不是導入各種潮潮的框架技術,用嘴巴說一口好程式,而是腳踏實地的把每一個環節做好。

這段期間剛好是「魔物獵人崛起」的發佈日,因此時間過很快,上班努力趕進度、下班打怪洩憤。剛開始想學別人耍帥拿太刀,後來發現如果要玩得開心其實拿重弩或弩槍是比較好的選擇,無腦射射。

另外是發現女友意外地很喜歡搜集型的任務、刷水沒林賺錢,有什麼獎牌、徽章、小任務她都要破,因此上班的時候她就幫我破各種小任務,下班時我就開心升級裝備跟武器。這款魔物獵人我玩得很開心,音樂、場景、衣服都很有日本的風格之外,還意外加入前同事的朋友圈偶爾開團刷副本,算是解救了低潮期的我。

MPEG-TS 與 aribb24 字幕

看到謙謙的推之後,想說自己手上有個 Raspberry Pi,應該有辦法接電視訊號在電腦上看電視吧,後來才知道原來 TV Tuner 要買 TS 抜き的,不然買其他的就要用人家專用的軟體才能看。

日本的電視訊號是 MPEG-TS,日本有一套自製的電視放送標準叫做 ISDB,是從電波產業會制定的。哦對了在日本還有神奇的放送法,是一個只要你家有電視就要繳錢給 NHK 的法律,但是不繳也可以看。 已經被大法官認證沒有違憲了,到現在還是沒辦法參透日本這個神秘的國家。

扯遠了,在日本電視節目當中你可以開啟字幕,而且可以做到像是平假名標注、顏色、外字、位置設定,這些都是由 ARIB STD-B24 標準所定義的。

好奇之下我也成功在 Raspberry Pi 上透過 TV Tuner 拿到 MPEG-TS 的信號,也透過 JavaScript 做簡單的字幕解析,雖然蠻陽春的,但從看標準的過程體會到這些默默實作的人真的很偉大,尤其是看到謙謙的程式碼後又覺得實在太猛了。

寫書

除了剛剛提到的事情之外,再來就是寫書這件事,前年我在鐵人賽有出一系列的影片在講 Svelte 有拿到佳作,詢問同事的意見後都認為出書是難得的機會,就想說挑戰一次吧。不像其他組別的參賽者,因為我是影片組,所以要轉成文字其實花了不少時間,後面的趕稿期更是讓我頭痛。

Svelte 雖然跟其他前端框架比起來在台灣仍是小眾,但我認為 Svelte 寫起來很舒服,因此就算是小眾市場也想留下些資源。 本書其實有蠻多篇幅是在講實際 UI 開發時的應用,甚至還講了很多關於 accessibility 的實作與解說,後面還加上了測試跟 SvelteKit,把 SSR 的部分也補足了。稿費的部分事先已經知道不會好到哪裡去了,但實際看到入帳的款項時還是不免感嘆一下真的好少。

我個人認為這本書最大的價值會是 UI 實戰篇的地方,希望能夠幫助到開發者們對這方面的理解。 也非常感謝我的前同事、主管 Eason 與 Kai,他們很熱心幫我看稿,校出不少錯字跟錯誤,提供更好的寫法與建議,得以讓本書有更好的品質。寫完最大的心得是我再也不敢用 Word 寫程式相關的東西了,那個體驗相當糟糕,而且常常轉到 pdf 後又會莫名其妙跑版,下次有機會的話要先搞定排版工具再來寫。

如果有興趣的話,希望大家也可以看看影片中的實作,我個人覺得影片裡的實作更具有參考價值,而且你可以實際感受到一個 UI 元件是如何從頭開發出來的,最後 10 天還有關於 Svelte 背後的原理與簡易實作,對在意原理的工程師來說應該可以學到一些東西。

自製鍵盤

在用過 HHKB 鍵盤之後,我開始好奇像這種靜電容無接點的鍵盤背後的原理,有沒有辦法自己實作,沒想到在日本意外地有蠻多人都在做這種鍵盤的,甚至可以買到相關的材料跟零件,頓時又湧上了在日本真好的感覺。由於高中時已經被焊接地獄折磨過了,因此對我來說買個電路板、焊接、組裝零件並不算是自製鍵盤(註:這是我對自己的要求,不會拿來指教別人)。

誰知道因為這樣的關係又開始一段新的旅程,跑去買了 3D 列印、學 PCB 設計拉線、設計電路,除了 PCB 設計之外其他幾乎都是高中所學的範圍,因此對我來說還不算太難,但 PCB 設計還真多眉角,尤其是像這種靠靜電容感應的高頻電路,如何抗雜訊就是一門很重要的學問,這是在高中時很少碰到的一塊。不過每次要發件的成本實在太高了,發到中國要 2000 多日幣的運費,而且還要等一個多禮拜才會拿到成品,整個週期長得嚇人,因此我希望先用麵包板實驗,等到有信心之後再次挑戰。這段時間又繼續補足了很多硬體相關的東西,像是 USB 背後的運作(USB 標準真的有夠複雜),PID 理論、FIR filter 等等,也玩了一輪 Raspberry Pi pico 跟 PIO。結果就這樣繞了一大圈,自製鍵盤雖然有了個 PCB,但至今還沒完成,希望今年有個成果跟大家交代(不要太期待)。

大村灣與豪斯登堡

七月份時再度造訪了大村灣跟豪斯登堡,真的很喜歡大村灣的氣氛,在大村灣食堂裡享用日替咖哩,望著月台前的大村灣應該要列入人生必做清單裡頭。

小倉與門司港

有一段時間還蠻迷 BEASTARS 的,我真的很喜歡主角雷格西,那種善良、默默付出、訓練自己變得更強大的過程有時候覺得那就是我嚮往變成的人,希望自己有一天也能夠到達那個境界。當時作者竟然有在小倉辦展覽就趁著地主優勢衝過去了。

SwiftUI 與藍芽

2021 年的公司黑客松,我給自己的課題是挑戰自己不懂的事並做出應用。當時對 SwiftUI 不熟,而且也不知道怎麼用藍芽,於是就做了一個 Arduino 的番茄鐘加藍芽,讓電腦與 Arduino 之間透過藍芽溝通。為了讓整合更好一些,我加入了 statusbar、通知、倒數計時 UI,在硬體端(Arduino)則是用 LED Matrix 跟蜂鳴器。我覺得再把功能調整、精煉一下其實還蠻實用的,至少我自己會想要用,畢竟軟體系列的番茄鐘應用已經做到爛掉了,但搭配硬體與藍芽整合,可以幫助使用者的焦點轉移。成果其實不太理想,但也算是完成目標了

因為是黑客松的關係,實作上就是拼拼湊湊,能用就好的等級。比較值得一提的是在倒數計時功能那邊我是在 Arduino 那邊實作的,學到了怎麼用 Timer 中斷。不過後來想想,倒數功能如果直接做在軟體端,讓 Arduino 只負責顯示跟通知好像比較好。

寫下來的感覺是 SwiftUI 真的挺像 React 的,熟悉前端的話應該會蠻好上手的,可以參考從前端視角看 SwiftUI

無線耳機 WF-1000XM4

Sony 在六月多時發布了 WF-1000XM4,當時覺得很好看加上有抗噪功能就直接買了,實際使用也覺得非常滿意,進入抗噪模式後就完全聽不到外界的聲音,可以沈浸在自己的小世界裡頭。

沒想到今年初不小心丟到洗衣機裡面,有一個耳機聲音怪怪的,只好忍痛二手出售後再次購買,幸好在 Amazon 上面剛好有特價優惠,至少不算血本無歸。

Lex Podcast

這是偶然在 YouTube 上看到的 podcast,一看不得了,是一位 MIT 教授到處採訪科技名人的 Podcast,我個人覺得算是技術含量很高的 Podcast。裡頭採訪的人有像是:

  • Swift 作者 Chris Lattner
  • comma ai 創辦人 Geohot
  • C++ 作者 Bjarne Stroustrup
  • 3Blue1Brown 頻道作者:Grant Sanderson
  • Donald Knuth: The art of computer programming 作者:
  • Jim Keller 晶片大神

能夠親耳聽到撐起整個軟體產業,推動科技進步的人對談,而且又是那麼有深度的內容其實是一件很幸福的事,算是開拓了我的視野。

後來也似乎看開了,自己就是喜歡技術的人,不需要強迫自己寫一般大眾容易接受的 general 議題。喜歡傅立葉轉換跟逆矩陣沒有錯,不需要為了自己宅宅沒市場而感到自卑。

直播與 Turing Complete

2021 年我還是沒有找到適合自己的 YouTube 經營方向,真希望有人可以告訴要怎麼做QQ。不過還是有陸陸續續上傳一些影片,雖然從觀看量看起來應該是沒有受到青睞,不過能夠用影片紀錄自己人生的某個時刻,也算是好事一樁吧。

另外是我直播了 Turing Complete 這款遊戲,從邏輯閘開始做一台小電腦,有種 nand2teris 遊戲版的感覺。這對完全沒有任何知識的新手來說應該蠻難的,如果作者有辦法簡化,在教學上下更多工夫應該會更好玩。

JSDC2021 與 ModernWeb'21

今年發表了兩場演講,都是講 Svelte。有興趣的話可以參考看看。回想起來以前自己也是很喜歡到處參加議程,處於 Taker 的階段,逐漸累積經驗後已經不太會有那種資訊焦慮症,也能夠分享一些經驗給其他人,認知到這樣的心態變化對我來說還蠻奇妙的。

重學線性代數

不知道為什麼又跑去重寫線性代數,好像是因為看到「数値の常識」這本書又燃起了對線性代數的熱情,這本書裡面有一章節印象很深,叫做「再見逆矩陣」。裡頭的內容主要是說大部分你想要做的事情用 LU 分解就可以解決了,逆矩陣雖然直覺但也非常耗計算量。我很喜歡這種能夠實際應用的數學,也就是「數值分析」這個領域。比起研究,我更喜歡聽別人講這些事情,不然做數值分析太苦了,能深耕這門領域的人真的很猛。另外就是老掉牙的奇異值分解,每次看都會有新的體會。最近則是因為對信號分析有興趣的原因重新學了一次傅立葉轉換。

WebGL

重新碰 WebGL 原因是想要做一個簡易的視覺化矩陣運算,可以清楚感受到矩陣乘法的概念,結果後來也沒有下文了,反而還花了一大把時間研究怎麼畫出一條線,現在想起來還真是傻傻的。

回台灣

為了銀行手續跟貸款,加上自己網銀密碼忘記被鎖住,國泰世華又停止了 IC 卡的支援,逼不得已只好花大錢回台處理。來回一趟加上防疫旅館的費用花了將近十萬多台幣。已經將近兩年沒有回台灣了,疫情開始時天真的認為一下就過去了,馬上就能回台灣,誰知道這一等就是兩年,到了現在還是沒有解除。

回來台灣的這幾個禮拜,所有的人事物都讓我格外感動。圍繞在身旁的是熟悉的語言與看板,路人們的聊天都會覺得很好奇;隨便踏進一間小吃店都好吃到說不出話來,物價便宜到不可思議。

多年來習慣日本物價的我,現在覺得價值觀崩毀,原來好吃的東西也可以那麼便宜。我還記得有一天防疫旅館給的早餐是古早味飯糰(用糯米包的那種),吃下去感動到眼淚都快噴出來了。體驗過國外生活之後,我才漸漸發現台灣這塊養育我長大的土地有好多令人稱羨的地方。我好希望疫情趕快結束,好希望隔離政策趕快解除,好希望回到令人安心的台灣。

MPK mini

原本在幾年前買了一台 Roland-FA07,但因為這台本身體積就很龐大,家裡已經沒有另外的空間,因此自從搬到日本後就沒什麼再彈了,一直說服自己可以找到方法解決但一拖就是兩年,所以年初時二手出清掉了。 賣掉以後我買了一把 MPK mini MIDI 鍵盤,只要 8000 多日幣就有一台,雖然只有 25 鍵而且不像 FA-07 一樣功能那麼豐富,但這台相對小很多,可以放在桌上直接插到電腦就可以做簡單的編曲,比起以前輕鬆太多了。

結語

今年已經是來到日本福岡的第三年了,時間比我想像中還要快,已經逐漸習慣在這裡的生活了。 我其實蠻喜歡現在的生活模式與步調,但同時也感受到自己在 2021 年時很像一隻無頭蒼蠅到處亂飛,每個領域都稍微碰一下卻又淺嚐即止。雖然對於拓寬視野很有幫助,但希望自己可以有更深層的成長,因此今年給自己的課題是希望能夠專注在自己想要做的事情上,並實際做出一些成果來。老實說我對這樣的自己感到有些痛苦,很多事情我都想去嘗試,但又害怕患得患失的自己,怕努力投入之後卻沒有相對應的回報。哎,人生好難。

希望這些雜七雜八的經驗可以幫助到你。如果想要跟我聯繫的話,你可以在推特上或是 Email 找到我。

上一篇

MIT 公開課 - Introduction to Computational Thinking with Julia 心得

下一篇

node.js 讀取檔案時的細節

如果覺得這篇文章對你有幫助的話,可以考慮到下面的連結請我喝一杯 ☕️ 可以讓我平凡的一天變得閃閃發光 ✨

Buy me a coffee