53 篇

Tweet

從 CLI 到 GUI

如果不用別人寫好的工具,到底要怎麼做出有圖形界面的程序呢?簡單的編程練習總是在純文字的界面打轉。需要用到圖形界面的時候,就要導入一些神奇的函式庫。

只是自己寫給自己用的話,軟件根本不需要有圖形界面,在終端裏輸入命令就足夠了。


要和操作系統交互才能畫出窗口,所以需要導入函式庫和用 C++,Python 本身是做不到的。 how to make gui in python without tools (stackoverflow) 瀏覽器是最通用的渲染引擎,所以用網站做 UI 應該是最簡單的……


UI 也算是數據可視化的一種吧?


UI 是狀態機,所以應該用狀態機圖來設計。Construct User Interface with Statecharts 這本書説明了最基礎的狀態轉移圖(State Transition Diagram) 根本不可能用來描述複雜的軟件,一定要使用帶有層級、記憶、分離等常見模式的符號的 Statechart,才能把狀態數量壓縮到可理解的狀態。

我覺得這本書太着重符號的定義了,對於個人開發來説是過度工程。而軟件沒有實體按鍵,定義狀態本身就不容易,狀態轉移式的代碼也和 JavaScript 的 event action 設計模式不太適配。

Vibe coding 的代價

AI 寫代碼看似是無本生利,但確實是有代價的。本質是用學習動機和創作欲望作爲抵押,借來馬上得到的成果和能完成事物的信心,只是一般人不把這些當作是代價而已。你真的能利用這些預支的資產,繼續產生動機和知識嗎?

當你以為自己完成了 90% 的工作的時候,距離能正式交付其實還差 50%。這是讓自己滿意和讓別人滿意的差距。AI 拿走了前 90% 的成就感,還要接着完成剩下 50% 的工作。當然這剩下的工作也可以讓 AI 來做,但是因為自己對工作沒有投入任何感情,所以不會容忍任何不符合自己預期的地方。


2026-06-11

「僅僅想要讓事物誕生,不是自己做的也沒關係。」要有這種想法,才適合在項目裏面應用 AI。

直播

對了,可以直播!和博客的異步邏輯是一樣的!只需要宣告存在,不知道有沒有人在看,不需要互動和評價的社交方式!

但是應該播什麼呢?我很不喜歡被監視的感覺。

習慣系統

培養習慣的時候,不要期望有太完美的紀律。自己的習慣的意義,是敵不過外部要求的意義的。如果習慣的意義依賴紀律,一旦被外部壓力打亂節奏,就很難重拾回來。

無論在什麼時候中斷習慣,過程的記錄和成果都要有獨立的意義。這樣無論過了多久以後,都不是從零開始。

意志消磨了

  • 家會空起來,不想離開。

  • 嚮往正常,害怕逼自己。

  • AI 延遲了危機感。

但是沒有不逼迫自己的心態和條件,失掉了唯一的武器


舒適的環境好像沒什麼意義,但是會影響情感經驗。雖然可能覺得只要解決主要的痛苦就什麼都好,但這種想法正正是無法更從容地應對的原因。

分清楚什麼是讓自己真正不舒服的,和應該讓自己不舒服的。

可能是温度,可能是風。舒服的可能是不舒服的。不舒服的可能是自在的。

網站設計

我總算按照我想要的樣子,把網站的編排調整一遍了!畫廊能把圖片排成方格、Tweet 能直接展示文章內容、能把自我介紹搬到主頁,把原本的主頁搬到新開的另一頁。主頁就要像目錄一樣,而不是一長串像新聞一樣的時間線。我現在更熟悉 hugo 編排頁面的原理了。當然,HTML 和 CSS 的知識也增長了不少。真的很高興。不過,現在卻不知道接下來該做什麼了。


現在重新看一次代碼,我完全不知道自己是怎麼做到的。完全不像是我自己寫的啊…… 應該是從原本的代碼裏找到適合的部分,複製黏貼再重組的吧。

感覺用這個模板很受限制,CSS 雖然好像很有條理,但內容四散,不知道是按着什麼結構組織的。


2026-05-03

從原本的模板 fork 出去之後,就只能自己維護了。hugo 有很多破壞過去代碼的更新,為接口取名還真是難事。

工作的感覺

2025/06/14

就算是考試,我一天能專注六個小時就很難得了。但工作一天卻能輕輕鬆鬆連續專心八個小時,代價是回到家後,就喪失思考能力和意志力了。

工作做的事情和我自己一個人在家搗鼓電腦差不多,依舊是一邊學,一邊加新功能,一邊修 Bug 。只不過自己做不出來可以放棄,工作任務不能放棄而已。

更加不知道週末能夠做什麼了。


2025/07/20

能夠什麼都不用擔心,專注地思考麻煩問題的感覺很好。單從這個方面來説,沒有比這個更適合我的工作了。

但這是因為我的工作簡單,責任輕的緣故,要是我的能力變強,要負責設計系統的話,就會有容不下犯錯的壓力了。

IT 部門掌握了公司的命脈,但實際的地位和權力卻不太高。這就是這份工作的難處吧。

週末缺乏動力的感覺還是一樣差,不過是完全閒下來沒有壓力的,至少能養精蓄鋭睡好覺就好,學習就在工作裏學吧。要是把週末當成放縱的機會,週日晚上睡不着就慘了。


2026-05-03

接觸業務代碼之後,看世界的方式會改變。無論是流暢的手機系統、還是經典遊戲大作、還是銀行交易系統,背後的代碼都是由程序員一行行手搓出來的(至少在 AI coding 流行前就已經存在的系統……)。軟件公司會刻意隱藏軟件開發骯髒混亂的一面,留下光鮮亮麗的魔法。

不只是軟件,任何作品的創作過程都會被有意無意地隱藏起來,營造自己能拍版定案的權威。不過,如果只是普通的創作,一般人都能大致想象過程:繪畫就是用筆,寫書就是打字,拍電影就是用攝像機。但一般人根本無法理解軟件開發。就連以前的我自己在內,也根本不會去想軟件背後居然存在製作過程。

估值報告

2026-04-26 用 AI 寫需要蒐集新聞、分析數據和下判斷的報告就是找死。

海量的新聞根本看不完,而且永遠都是最新的,沒有因為太新所以沒注意的藉口。

已經給你整理好數據之後,又怎麼會有動力逐個來源點進去看?弄成引用正確的格式更是奢望。

一支股票未來會漲會是跌怎麼説都説得通。聊到天荒地老也搞不清楚。做的一切都只是為看漲還是看跌找理由。

報告的寫法和結構也拿不了主意,同一句話有一百種表達方式。


2026-04-28 主要業務、增長趨勢、覆蓋範圍、護城河、短期優劣勢……這哪是投資建議?這是找工作選公司啊。

時間管理工具

不工作跑去研究工具是沒有好下場的。不過 Super Productivity 和 ActivityWatch 用起來都不錯。要怎樣運用徹底監控電腦使用時間得到的數據,才能把生活變成數值管理遊戲?不過總之先記錄,其他問題以後再想。


我想破頭之後總算明白了,我手上的時間管理工具在功課上派不上用場。

待辦清單適合處理繁瑣的工作,但我通常只有四五份功課,根本不需要特意記下來,每一份又要花幾天才能做完,一定要先拆成一個個簡單的步驟,才能放進待辦清單,但沒做過,又怎麼知道任務能不能拆開?空泛地亂拆又沒有用。

這樣一來,似乎根本不需要用什麼時間管理工具,埋頭苦幹一天做完就行了。但「埋頭苦幹一天」太嚇人了,結果只會拖着,永遠不會開始。而且,一天做完的作業質量肯定不好。和寫文章一樣,要每過幾天重新看一次,不斷修改才可以。

靠軟件幫忙安排工作,一邊做一邊分拆任務,把拆開的任務分成很多天處理,每次只做一小部分,減輕內心的恐懼,是最好的做法。但是軟件的排程不會理會截止日期,沒法保證一定能在規定的時間內完成。

説到底,截止日期這個概念本來就是想當然的產物。如果能明確地預測工作時間的話,就直接用那個時間好了。但工作時間當然是無法預測的,只能設一個過分充裕的期限,讓人變得拖拖拉拉。

我理想的時間管理工具該有的要素:

  • 任務隊列,按照緩急輕重和完成的收穫自動安排每日的任務,出現什麼就做什麼,沒得選。
  • 每項任務都是一個文本檔案,因為無論什麼任務都需要寫工作筆記。
  • 遇見複雜的任務可以拆開,形成樹狀分支
  • 任務清單,能觀察自己每個項目的進度,彌補任務隊列把任務拆得亂七八糟,見樹不見林的不足

有了會很好:

  • 能自動打開任務需要的檔案,減少切換的麻煩
  • 遊戲化,在完成任務的時候會「叮」的一下加分。
  • 能製作記憶卡,混入任務隊列
  • 時間追蹤,提醒自己不要在同一個任務上花太多時間。

雖然把一大堆工具合併起來用就能滿足上面的所有要求,但如果還是要奢望有一個萬能的合體機器人的話,就只會走上 emacs 的不歸路。怎麼辦,好像很吸引人……


又不小心研究了一會 emacs,因為 orgdown 的語法好像比 markdown 好。練習快捷鍵除了輸入的時候比較爽快沒有什麼意義。我很滿意 vim。過早的優化是萬惡之源。有些人連盲打都不會呢,照樣能寫出好的程序。


記錄行動的目的不是獲得數據,而是用記錄作為行動的開關,有意識地「浪費」時間。逃避結束的時候同時結束記錄,作為切換狀態的訊號。計時是讓無意義的按按鈕儀式變得有意義的把戲,順帶能了解自己的習慣,知道自己真正需要多少逃避的時間。主動搞清楚自己的娛樂有多少是需求,多少是逃避,多少是無意識的習慣。

被動地用軟件記錄,或者記錄不會重複的事件都是沒有意義的。

正正是因為這是個沒有意義的儀式,才有了能不讓人反感地堅持的機會。

逃避行為:

  1. 思考抽象宏大的問題

  2. 學習不迫切的知識

  3. 觀看流行的新聞和娛樂影片

  4. 搜尋新的音樂

  5. 發呆、踱步

  6. 無目的地聊天和抱怨

  7. 寫反省的文章

  8. 研究新項目

  9. 重温喜歡的故事

  10. 沉溺幻想

  11. 無限滾動是沒有辦法抵抗的

  • 你能做的就只有按下按鈕,讓時間流逝,然後看到累的時候,讓按取消按鈕逼自己站起來離開。中途沒有任何意志力介入的空間。
  • 所以不能讓無限滾動存在,要用一切手段禁止。
  1. 逃避的時間是沒有辦法減少的
  • 每個行動都是在我按下按鈕後授意自己去做的,但我是沒有辦法控制自己的行動的
  • 內心有逃避的軟弱,就必然有滿足這種軟弱的需求
  • 內心有對新聞和流行內容的好奇,就會想辦法補足
  1. 就算知道自己已經無法承認自己的行動,也沒有什麼可以做
  • 連按鈕都按不下去,明確知道自己沒有精神確認自己的狀態了,就應該休息了。
  • 我覺得用按不了按鈕用來做判斷疲勞的標準是很準確的,因為這個行為沒有任何附加意義,也沒有逃避的理由。
  • 但就算知道,還是會想同時做矛盾的事情,一邊做作業一邊看動畫,一邊睡覺一邊複習
  • 讓人保持理智的技巧往往需要理智才能實行
  1. 確認自己的行動狀態不是這麼簡單的
  • 我經常忘記自己已經按過按鈕,甚至不知不覺間就會切換到別的狀態。
  • 就算是有意識的決定也會被無意識的習慣蓋過去

另一方面,按鈕也可以當作像番茄鐘一樣的啓動器。面對不想面對的事情,只要自己確定了要去做,就按下去。和番茄鐘不一樣的是,沒有強制要做多久。只要誠實地確認行動的開始和結束就可以。

  1. 確認資訊
  2. 工作
  3. 出門
  4. 發訊息
  5. 洗澡
  6. 睡覺
  7. 做飯

不是所有時間都是需要記錄的,像是通勤時間和上課時間一樣,無法避免的不受控時間沒有必要記錄。不過還是看自己的感覺能不能掌控。

爲了讓系統不會失敗,還有一個逃脫按鈕,當你確認自己不想確認自己的行動的時候,就按下去。要是連逃脫按鈕都按不下去的話,無論處於什麽狀況,都毋庸置疑是不受控的時間,所以也不用愧疚。

博客的固有觀念

2026-03-23

根本沒有必要保存創建時間,歷史記錄難道比內容更重要嗎?覺得寫得不好就改掉,URL slug 也換掉,反正死鏈不是致命的問題,想看的人自然會找到的。

什麽國際化翻譯也是,就算想用多語言寫作,也不需要每個語言版本一一對應吧?只要分開就可以了。文件系統很難承載這種「多篇文章其實是同一個的不同版本」的結構,徒增多餘的複雜度。

說到底RSS的模型沒有版本更新的概念,本來就不適合讓我大刀闊斧地修改內容,只會束手束腳。