總之先來一杯啤酒吧!

本期內容涵蓋:經營電子報心得、學習寫程式的方法、談日本外送訂閱

四零二曜日是由 Kalan 撰寫的電子報,與你聊聊科技、軟體開發、產品跟日本生活相關的大小事,也會分享我的生活與各種雜談。402 是 HTTP 狀態碼的一種,意思是 Payment required。希望內容足夠讓你覺得 payment required。

本期內容

經營電子報的感想

我在 2017 年左右有經營一份電子報,叫做日語八百屋。

當時是覺得技術週刊的模式放到日語學習應該也有不錯的效果。的確,當時訂閱者到達 2000 多人,也有反饋覺得這樣的形式是他們喜歡的。但週刊演變到最後,變成每週焦頭爛額地找話題跟簡評,雖然期間也有自己寫一些專欄,最後還是走向 burnout 的命運。

追根究底,我覺得源自於自己侷限了話題範圍,一定要專注在日本相關的東西,導致最後無疾而終。這也是我在寫這份電子報想要拓寬話題範圍的原因。

在 ChatGPT 發展蓬勃的現在,如果沒有做到領域裡的領頭羊,去深入研究第一手資訊,幾乎所有和內容相關的網站都可以透過 ChatGPT 做總結,而且是受眾也可以接受的品質。一直在第一線找資料、整理、輸出是一件相當累人的事,我後來的想法是不如在自己有興趣的領域裡都做到 70 分 80 分,除了在分享資訊的同時,也和讀者們聊聊最近發生的事情與看法,或許更容易維持下去。


如何學習寫程式

關於怎麼學程式,網路上有成千上萬的文章,問 ChatGPT 可能也可以得到不錯的答案。目前我最喜歡的回答是 George Hotz 在 Lex Fridman 的 Podcast 上的對話

You never learn programming by watch a video called learn programming. The only way to learn programming I think. Everyone I’ve met who can program well, they learned all the same way, they had something they wanted to do, and then they tried to do it. That’s how you learn, you just keep pushing on a project. So the only advice I have for learning programming is go program. 看一個名為「學程式」的影片是無法讓你學會寫程式的。我認為唯一能夠學好寫程式的方法就是找到自己想做的事情,然後試著去實現它。這就是你學習的方式,只要不斷地推動項目進展,你就能夠掌握技能。所以我對於學習寫程式唯一的建議就是開始寫。

聽起來很簡單、很直覺,反而直白到讓人覺得:「蛤?就這樣?」,但是如果綜觀科技的發展,科技的出現都是為了解決或改善某個問題。在解決問題的過程中,自然會去發展出需要的技能。

在初學者階段,可能會遇到連要學什麼都不知道的情境,這邊和大家推薦 CS50,很具體地介紹了電腦科學的基礎,上完這門課以後至少會知道網頁、App、伺服器的運作,也就有更多方向可以探索了。


談談日本的外送訂閱制 — 冷凍便當送到家

日本有許多食物外送的「訂閱」服務,他們會定期將餐點、蔬果或咖啡豆送到家。

像我就曾經用過三ツ星noshPostCoffee大地,模式都是類似的,一次會送一個禮拜的量,方便你放在冰箱或冷凍庫。咖啡豆的服務話則是直接把三包 100g 左右的豆子送到你家。沒有冷凍庫放便當嗎?那也沒關係,這些服務也有推出冷凍庫租借方案。

對遠端工作的軟體工程師來說,有時候不想開伙的情況下真的很方便。不過既然是冷凍,那麼味道一定比不上新鮮的,味道比不上餐廳,好吃程度以台灣人的標準來說只是「差強人意」。

問題來了,既然沒有比較好吃,那為什麼不直接去買便當就好?日本沒有所謂的便當店、自助餐,外帶通常都是去餐廳,或是直接叫 Uber Eats。但只要比較一下就知道,日本的 Uber Eats 不管是價格和外送費,都比台灣貴上一截。在台灣,家裡樓下可能就有好幾間便當店或小吃店可供選擇,外帶也不需要多少功夫,實在沒有理由在冷凍庫裡塞一堆便當。

儘管這些服務已經比外面的餐廳便宜,但價格仍然偏高,所以我現在的做法是每兩個禮拜送一次,大部分都還是自己煮,偶爾不想煮的時候才吃。

我的想法是,台灣與日本比起來,自己開伙的難度還是有根本上的差別。一般在外面住的學生、剛畢業的新鮮人、小資族,如果是自己租屋的話,其實通常是不會有獨立廚房(頂多付一個電磁爐),但在日本,就算是小小一間單人房,也是要塞給你浴缸跟廚房。

日本有在家開伙的空間,外食成本大的情況下,選擇訂閱制是一件相當合理的事。同時具備多樣性跟便利性,價格雖然偏高一些,但至少還是在餐廳便宜很多,也可以依據自己的喜好另外加菜。nosh 早期的餐點裡都有飯,但微波過後真的是慘不忍睹,後來似乎也學乖了只做配菜,白飯要自己想辦法解決。

處理運送與保存其實是一件相當昂貴的事,我的餐點都是從東京中央廚房運到福岡來,如果市場不夠大,這些成本勢必會反彈到消費者身上。

要在冷凍的情況下做出好吃的便當是一件很有挑戰的事,食材選擇、營養調配、冷凍技術、宅配都是決定便當好不好吃的關鍵。

說到這個,上次回台灣時我在全家看到了筍子排骨湯!在超商啊!買回來加熱一下,雖然比不上新鮮的,但整個湯頭、口感神韻都在;而且全家的雞胸肉有好幾種口味,吃起來也都算好吃。對比日本的超商的美味等級實在差很多。

撇除市場與生活習慣文化不談,蠻希望在台灣也能看到類似的服務,不知道大家對這樣的服務是否有興趣呢?


電子報從開發到上線 技術專區

上一期有提到我最後選擇用 Buttondown 來開發電子報。既然選擇了 Buttondown,代表有很多電子報寄送以外的東西都要自己搞定,具體來說包含這三大項:

  • 歷期電子報存放:Buttondown 雖然有提供預設的頁面,但樣式沒辦法客製化。為了兼顧 SEO 跟 Domain 的彈性,最後還是決定自己寫。當然不是只是把電子報丟上去就好,畢竟兩者的樣式不太相同。詳細可以參考部落格文章 — 用 Astro 寫電子報網站
  • 電子報樣式:Buttondown 支援 Markdown 語法,但如果沒有設定 CSS,看起來還蠻簡陋的。
  • RSS:為了確保讀者可以透過不同管道閱讀,RSS 對我來說也是一定要加入的選項

特別想跟大家分享的是我是用 mjml 排版電子報。雖然現在的 Email 軟體幾乎都能正確解析 HTML 和 CSS,但大家用來看 Email 的服務非常多元,有些 Email 軟體沒辦法正確解析比較的 HTML(對,就是 Outlook),導致在做電子報的時候,要用傳統手藝 <table> 一個個調整。

純手寫的話是非常麻煩的,mjml 將原本要用 table 排版的麻煩簡化成元件呼叫,寫起來就跟寫 jsx 一樣,只要傳入 attr 就可以生出好看且能夠適應各個 Email 軟體。推薦給有需要客製化電子報的前端工程師們。