文章
2026
大預言時間軸:那些說要改變世界的話,後來怎麼了
2026-09-16-(3 min read)說明: 本文由 AI(Claude)根據我的初始筆記與想法完成。 有天突然想到,過去有過好多「大預言」。世界末日、人口爆炸、AGI 何時降臨——講的人都很篤定,但後來呢?沒人回頭算過。 於是就有了這條時間軸。二十五則,橫跨宗教末日論、世俗災難預測、科技與 AI 的時程表。每一…
#AI #History #Fun
繼續閱讀...一條規則該住在哪裡 — 四個容器,一道我們自己搭的梯子
2026-09-02-(9 min read)說明: 本文由 AI(Claude)根據我的初始筆記與想法完成。 上一篇提到教訓有升遷流程:先落在記憶裡,等它糾正過同樣的錯誤兩次,才升進規則文件。那一段只寫了第一階。 實際上有四階。 產品給了容器:自動記憶、會自動載入的 CLAUDE.md(連同 @path 語法)、技能、…
#Claude Code #Agent #Workflow
繼續閱讀...把個人設定當產品養 — 不是因為它有測試,是因為它會壞
2026-08-31-(13 min read)說明: 本文由 AI(Claude)根據我的初始筆記與想法完成。 前兩篇談的是一輪工作怎麼跑、以及怎麼量它有沒有守規矩。跑那個迴圈、量那個分數的東西,其實是一個 git repo:依它自己的 README 數,一百二十來個 hook、五十三個技能、十九份規則文件。 它已經大到…
#Claude Code #Agent #Workflow
繼續閱讀...分母才是難的那一半 — 怎麼量 agent 有沒有守規矩
2026-08-31-(10 min read)說明: 本文由 AI(Claude)根據我的初始筆記與想法完成。 上一篇〈唯一一道等人的閘〉的結尾留了一句話——我沒辦法證明模型守得住那八段。所以下一步不是再加規則。是去量它到底守了多少。 這篇就是量了之後的心得。先講結論:打分不難。難的是決定分母。我改了三次分母,分數從 1…
#Claude Code #Agent #Workflow
繼續閱讀...唯一一道等人的閘 — 一輪 agent 工作的八個階段
2026-08-29-(9 min read)說明: 本文由 AI(Claude)根據我的初始筆記與想法完成。 上一篇〈把計畫寫在票上〉談的是 agent 的狀態該存在哪裡。結論是抬到 issue tracker 的留言串上。但票上記的只是階段之間的交接——計畫、核准、PR、合併。一輪工作內部怎麼跑,票根本管不到。 這篇…
#Claude Code #Agent #Workflow
繼續閱讀...把計畫寫在票上 — 用標記協定串起 Plan / Forge / Review
2026-06-25-(9 min read)說明: 本文由 AI(Claude)根據我的初始筆記與想法完成。 最近我在整理自己跑 AI agent 的方式,發現一個一直被我忽略的問題:agent 的狀態到底存在哪裡? 大部分時候,它存在聊天視窗裡。你在桌面 app 開一個對話,跟它討論一個功能,它幫你規劃、寫程式、改 …
#Claude Code #Agent #Workflow
繼續閱讀...離線失敗的請求,為什麼重連網路後又自己送出去了?
2026-06-17-(8 min read)說明: 本文由 AI(Claude)根據我的初始筆記與想法完成。 這個問題困擾了我好幾年:一個理應失敗的網路請求,為什麼有時候在我把網路接回來之後,竟然自己送出去了? 最近在一個 Flutter app 上又遇到,這次總算把來龍去脈弄清楚了。結論很掃興——它不是什麼「重連自動…
#Flutter #Network
繼續閱讀...Frame0、HTML、ASCII —— 線框的三種畫法
2026-05-23-(6 min read)這兩天在跟 Claude 討論一個 GPS app 的設計,講到「接受半徑」應該設多少。20m?50m?100m?光講數字不夠直覺,想畫個圖比較看看。 前兩天才剛量過 Frame0 對上 ASCII 的成本,那是 93 個形狀的複雜 UI 線框;這次的場景簡單得多——一個十字路口…
#AI #Software #Tools
繼續閱讀...Frame0 對上 ASCII 線框圖:同一張畫面的成本實測
2026-05-22-(6 min read)最近開始把 Frame0 接到 Claude Code 的 MCP 工具集裡,想法很簡單:讓 AI 在對話裡順手畫個線框圖,溝通起來會比文字描述快。 但這也帶出一個問題 —— 畫一張線框圖到底會花多少 token? 我拿自己的 side project Heimdall(一個 J…
#Frame0 #MCP #Tooling
繼續閱讀...Iris — 螢幕上的小窗
2026-04-21-(3 min read)我做了一個新的 app,叫做 Iris。 它是一個 macOS 上的懸浮視窗——永遠置頂、可拖曳,能同時顯示 Spotify 的同步歌詞、專輯封面,還有 CPU、記憶體、磁碟這些系統指標。 為什麼做這個 寫程式的時候我習慣一邊聽歌。遇到喜歡的段落,常常會想看一下歌詞是什麼—…
#Iris #macOS
繼續閱讀...AI Agent 到底是什麼?
2026-04-14-(3 min read)最近身邊很多人在討論 AI Agent,各種場景都有:自動審查 PR、自動寫測試、自動產生 release notes、自動回覆客服…… 這讓我開始思考:「Agent」這個詞,到底指的是什麼? 拆開來看 如果把一個 PR review agent 拆解,大概長這樣: PR 開啟 …
#AI #Software
繼續閱讀...2025
一個好的軟體專案該有的幾件事(Flutter)
2025-06-28-(3 min read)在日常開發中,我們常常著重於功能的完成與 UI 的華麗,但真正能走得長遠、方便維護與協作的軟體專案,往往在工程基礎上更下功夫。本文將以 Flutter 專案為例,介紹一個我認為好的軟體專案應該具備的幾個重要元素,幫助團隊打造高品質的程式碼基礎。 1. 清楚且一致的命名(Namin…
#Softaware #Flutter
繼續閱讀...Flutter substring with emoji
2025-06-28-(2 min read)假設你有一串字串 String text = "Hello 👋🌍"; 假如你使用 print(text.substring(6, 7)); 你可能預期會得到 "👋",但實際上可能出現亂碼或截斷的 emoji,例如 �,這是因為: Da…
#Flutter #Emoji
繼續閱讀...使用App Distribution發布iOS版本測試遇到的問題與解決
2025-01-07-(2 min read)TL;DR; 用ad-hoc 輸出 各位有用Firebase App Distribution上發布iOS app嗎? 如果你剛好又是使用Flutter去做開發的話,這篇可能對你有一點點幫助。 平常我們在發布ipa時,其實就是跑flutter build ipa就可以將其上傳到T…
#Flutter #iOS #App Distribution
繼續閱讀...2024
Flutter清單內實做懸浮視窗
2024-04-06-(2 min read)這邊分享我在實做長按清單顯示懸浮popup window的作法。 這邊會使用CompositedTransformFollower、CompositedTransformTarget以及LayerLink加上OverlayEntry來達到此目標。 首先,我們在建構清單時,使用多個…
#Flutter
繼續閱讀...如何使用Nginx將多個Web app架設到子path上
2024-02-09-(3 min read)這邊分享個方法讓你能夠在不打擾MIS或者不需要新的subdomain的情況下,架設多個互不相關的app在不同的path上。 首先,嚴格來講,你還是會個別使用1個port給每個app。但是透過Nginx的rewrite,你可以讓你的app互相切開互不受影響。(沒有301或302的轉…
#Nginx #Quickstart
繼續閱讀...快速上手 Linode Object Storage
2024-02-05-(3 min read)S3 Object Stroage我想大家多少都有聽過或者使用過,當然也對於那高昂的使用費多有耳聞. 剛好Linode提供了可以相容於S3又不用那麼多費用的Object Storage服務.這邊我就來分享透過API快速進入Object Storage的世界,希望能為你省去看文件/…
#Linode #Object Storage #S3 #Quickstart
繼續閱讀...2023
Metis - 日誌
2023-11-23-(4 min read)我想分享前兩天我把我手邊的app完成了一版上架了,它叫做Metis,是一個日記app,你可以透過你的照片輕鬆寫日記。如果有習慣寫日記,常常苦於用了一段時間資料就不見了,可以參考看看。 功能: 雲端存儲:Metis 的所有數據都存儲在雲端,保障您的記錄安全且容易存取。這…
#Metis
繼續閱讀...Metis 第一次嘗試上架失敗了
2023-11-16-(2 min read)說明: 本文由 AI(Claude Sonnet 4.6)根據我的初始筆記與想法完成。 Metis 第一次送審就被 Google Play 退回了。 原因:位置權限的請求流程不符合規範。Play 的政策要求,在呼叫 requestPermissions() 之前,必須先向用戶…
#Metis #Google Play
繼續閱讀...設定 PostgreSQL 資料庫與使用者
2023-11-02-(2 min read)說明: 本文由 AI(Claude Sonnet 4.6)根據我的初始筆記與想法完成。 一些快速筆記,記錄怎麼在新機器上把 PostgreSQL 設定起來,建立資料庫、使用者,並開放連線。 安裝 # Debian/Ubuntu sudo apt install postgre…
#postgresql
繼續閱讀...一個 Bug 多久會被修正
2023-11-01-(2 min read)說明: 本文由 AI(Claude Sonnet 4.6)根據我的初始筆記與想法完成。 答案是:可能要 21 年。 這個 Firefox 的 bug 於 2002 年被回報:在 macOS 上,當 Firefox 切到背景後,tooltip 仍然會浮在其他視窗上方。聽起來是個…
#Software Development
繼續閱讀...在Flutter專案新增平台支援
2023-07-11-(5 min read)跨平台app,很多時候第一個印象就是跨Android與iOS平台的開發。然而最近在平板app的開發上,微軟的平板加入了我們的跨平台戰局。 此篇將會涵蓋使用純dart pacakge新增windows平台實作,不會有原生程式碼,但是我想對於想了解整個脈絡的人有所幫助。 要做的事情有…
#flutter #federated plugin
繼續閱讀...工程設計與選擇 - 以二戰鋼鐵巨獸為對照
2023-06-07-(6 min read)前言 身為工程師,我們每天都會下很多決定,如這一段程式碼要用什麼結構撰寫,要使用何種技術、框架? 我們每天都在面對這樣的抉擇。在這條路上,我們從錯誤中汲取經驗,並且承擔著這些錯誤帶來的後果。 我想分享一下我過去看到的一個案例與最後怎麼了: 導入Rx Rx Rx 是什麼? 可以用一…
#Philosophy
繼續閱讀...Decorator Pattern有符合SOLID原則嗎?
2023-05-22-(3 min read)前言 在物件導向的世界裡,我們常常掛在嘴邊的五大原則每天聽每天看。網路上也有很多人分享SOLID怎麼寫、怎麼設計。 這篇將會先以程式碼展示,可能符合SOLID的設計與開發流程,我們一起來看看吧。 我將以幾段程式碼呈現我認為有符合SOLID原則的設計(以 Dart 語言為例) 定義…
#OOP #Decorator
繼續閱讀...Go 驗證 Google ID Token
2023-04-23-(2 min read)說明: 本文由 AI(Claude Sonnet 4.6)根據我的初始筆記與想法完成。 在 Metis 後端用 Go 驗證 Firebase ID Token 時,踩了一個坑:公鑰必須先 parse 過才能使用,否則會拋出 key is of invalid type。 背景…
#golang
繼續閱讀...入門Flutter需要知道的幾件事
2023-04-22-(2 min read)最近我開始學習Flutter,這邊分享幾項我認為對入門有幫助的事情 建立應用: flutter create <project name> --platforms=android,ios 使用參數--platforms 指定要建置的平台種類,既有專案可可以再次執…
#Flutter
繼續閱讀...一次查驗沒辦法連線WebSocket的經驗
2023-01-31-(3 min read)使用語言Jvm(Java/Kotlin),連線WebSocket時(OkHttp)遇到加密protocol版本 沒辦法連線的問題,以及查驗的經驗分享。 首先在連線時就失敗了,我收到了以下的信息。 javax.net.ssl.SSLHandshakeException: Recei…
繼續閱讀...2022
Initialize() 寫法在 Android app 的影響與優化建議
2022-07-28-(6 min read)說明: 本文由 AI(Claude Opus 4.7)根據我的初始筆記與想法完成。 我們的應用使用了許多元件,不管是自己寫的,或者是第三方提供的函式庫,有時不免就需要在應用啟動後做初始化的動作。而在 Android 的世界,很多時候呼叫這個初始化的方法都會放在 Applica…
繼續閱讀...我的Android ViewModel實作建議
2022-06-28-(5 min read)近來,MVVM已然成為原生Andnroid開發的主流,Google也提供了相對應的工具達到目標。網路上與Google的官方網站上也有許多作法與改版(如:MVI)給大家參考。在這樣琳瑯滿目的做法中,我想分享幾個我認為實作ViewModel時,我認為比較順手的作法。 方法名稱說明用戶…
繼續閱讀...我的升級PostgreSQL的經驗(9.5升級到14)
2022-06-15-(4 min read)這幾天的Side Project開發時遇到了升級PostgreSQL的小障礙,我最後把它排除了。覺得很有成就感,在這邊分享一下我的解決歷程吧。 這個升級,似乎不是更新執行檔就可以了,有時候會遇到如我現在遇到的問題一樣,我們沒辦法自動轉移到新版本上,必須使用PostgreSQL提…
繼續閱讀...2021
解決在Android開發中使用時間作為版本號碼的成本
2021-04-14-(2 min read)在開發Android app的過程中我們時常使用時間來區分app的版本。但是此做法有些缺點將造成我們開發成本變高。 時間會不斷地推進,對吧?所以我們每次建置專案的時候,因為變動的版本號碼(時間)會讓建置工具認為我們應該要做當我們修改build.gradle後所需要做的事情。 這樣…
繼續閱讀...Android 鬧鐘應用程式實作
2021-02-17-(5 min read)說明: 本文由 AI(Claude Opus 4.7)根據我的初始筆記與想法完成。 這年頭要在 Android 上做一個鬧鐘 app,痛點其實不少。電量優化、背景限制、權限要求這幾年一路收緊。這篇文章會走一遍我的實作方式,以及要讓鬧鐘準時響、並且真的在畫面上跳出來的幾個小撇步…
繼續閱讀...2020
在Android TextView上自訂超連結
2020-04-16-(3 min read)超連結,像是這串字。我想在所有類型的app上很常見。不過要怎麼在Android上實做呢?我可以自定義點擊事件嗎? 首先,Android的TextView本身就支援超連結文本,來看看我們怎麼玩弄SpannableStringBuilder吧。 val builder = Spann…
繼續閱讀...RecyclerView使用Decorator模式實做無項目提示
2020-03-28-(5 min read)使用RecyclerView實做清單,在現在的原生Android app開發上已經成為一個必須。相較於ListView元件,RecyclerView提供了較高的效能以及動畫的支援。但是相較於ListView,RecyclerView沒有單純的setEmptyView(),我們必須…
繼續閱讀...