跳至主要内容

要怎麼記得以前寫過什麼

· 閱讀時間約 2 分鐘 ┊ 純文字版

收到讀者來信,他很好奇 Wiwi.Blog 上面已經有快要 1,000 篇文章了,為什麼我在寫新文章的時候,還是能夠精準地連結回很久以前的舊文?

換句話說,為什麼我記得哪一篇寫了什麼?我為什麼會知道,現在寫的這一句話,跟三年前的某篇文章有關?

我要公開祕密了,那就是──我根本不記得。

我有一個小程式,它會用 Qwen3-Embedding-8B 這個模型計算每一篇文章的 Embedding(語意向量)。簡單地說,就是把文章的「意思」,轉換成一個 4,096 維的向量。

然後,我有另一個小程式,可以讓我輸入一兩行文字,它就會從那一堆向量當中,找出「語意最相近」的幾篇文章。

注意,這不是簡單的關鍵字搜尋喔!關鍵字搜尋,你打「便當」就只會找到有「便當」這兩個字的文章;語意搜尋是打「便當」,它可以出現便當火鍋趴咖哩杯麵想被拍照的包子吃青菜

所以,當我想連結舊文時,只要把想連結的句子丟進去搜尋一下,然後從相似清單中挑一篇順眼的連過去就完成啦!

很好用喔!只要你文章夠多,就算寫一句隨機到不行的廢話,它都能幫你找到至少有點相關的舊文!讓我們試試看一句:

洗澡時候我突然想到一件好像很重要的事情結果等我走出浴室,回到客廳我就忘記了

每個詞都連得出去,連「」都可以!

你也想要用嗎?原始碼放在:https://code.wiwi.blog/wiwi/blog-embedding

WiNote 開發進度

· 閱讀時間約 2 分鐘 ┊ 純文字版

我最近都在跟 WiNoteWiwi 的 Keynote 替代品)的開發搏鬥中,都快要沒時間管 Wiwi.Blog 啦!來跟大家分享一下進度。

目前最基本的東西──文字、插圖、背景、劃線、形狀、框框──差不多都有了,而且還做了許多連 Keynote 都做不出來的動畫和攝影機縮放功能。我個人是覺得,目前版本的動畫功能已經比 Keynote 還要酷了!

另一個大進展是刪掉了肥大的依賴。原本 WiNote 是依賴另一個叫做 HyperFrames 的專案來輸出影片,但後來我發現 HyperFrames 自己也只是依賴另一個輸出影擎 Puppeteer 而已。所以,我把 WiNote 直接接到 Puppeteer 上面,把 HyperFrames 整個拿掉,現在預覽速度比之前快了大概十倍吧!

以下是目前的 WiNote 版本的小小 Demo!先跟你們分享!

(以下影片的原始檔只是一個 .txt 純文字檔,製作過程沒有使用其他動畫或剪輯軟體)

當然,WiNote 現在的 bug 還是超級多,語法也超級亂,除了我自己以外大概沒有人會用,所以目前還無法跟大家見面。如果要讓大眾能用,可能還需要寫許多範例、模板和說明文件等等的。

所以接下來,我打算先在檸檬卷的影片中少量試用,經過實戰才能夠發現更多問題。

最近覺得自己做自己的工具超爽的,有新的開發進度再跟大家分享!

自言自語

· 閱讀時間約 2 分鐘 ┊ 純文字版

檸檬卷前幾天家族旅遊去日本玩,我沒跟,自己一個人在家。

一個人在家最棒的地方,就是你可以大聲自言自語。那些平常只在頭腦裡跑的句子,現在全部都可以用嘴巴講出來,沒人會在旁邊覺得你是瘋子。

把正在想的事情講出來,思考真的會清楚很多耶!那幾天我在家玩 Slay the Spire 2,一邊打一邊像是體育主播一樣,把腦內活動播報給自己聽:

「要先打 Bash 嗎?不要,讓我先 Shrug It Off 抽牌好了!Yes,抽到 Tremble,讓我先給你 Vulnerable,然後再 Strike!靠,不對,我在耍笨嗎?我有 Orichalcum 啊,根本不用出格檔牌就可以有 block 了,我在幹嘛?我要記得我有 Orichalcum,我有 Orichalcum⋯⋯」

(沒玩 Slay the Spire 的人,以上你全部看不懂也沒關係,不重要。)

⋯⋯就這樣一直碎念,我竟然連續過了兩個之前一直過不了的關卡!

這其實就是軟體開發者常說的「黃色小鴨除錯法」(Rubber duck debugging)──把一隻黃色小鴨放在桌子上,對著它一步一步解釋你的程式在幹嘛,講到一半你的問題自然就解開了!

超級有用,推薦大家試試看!把你正在煩惱的事情,對著空氣(或黃色小鴨)大聲講一遍,搞不好這樣就解決囉!

剛剛應該那樣說的

· 閱讀時間約 3 分鐘 ┊ 純文字版

面對威脅時,人類有兩種直覺反應:戰(fight)或逃(flight)1。但如果大腦運算跟不上狀況,可能就會陷入最糟的第三種反應──呆住(freeze)。

  • 例如,在超市突然被插隊,一瞬間大腦呆掉不知道該怎麼做,等意識到「欸這個人是不是插了我的隊」時,對方已經結完帳了。
  • 或是,被路邊的推銷員攔下來,聽完一分鐘廢話才後悔剛才幹嘛停下來。
  • 又或者,在飯局上被酸了一句,當下不知如何回應,只好尷尬地傻笑;直到回家洗澡時才驚覺:「我那時候應該回嗆他那句的!」這時候突然就好想再重吃一次飯局、再被酸一次,只為了用上這句完美的回嗆

法文甚至有一個專門的字 L'esprit de l'escalier2(樓梯機智)在形容這個狀況──意思大概是說,人都走下樓梯、離開現場了,才突然想到完美的回擊之詞。

預設值

要解決這個問題,邏輯其實跟看和弦代號一樣。

我的鋼琴學生常問,為什麼我可以一看到和弦代號就瞬間「算」出好聽的配置?答案是:我根本沒有「算」啊,我只是「取出」頭腦中已經計算好的結果而已。

樓梯機智也是這樣,你需要給自己一個預設值,訓練自己在第一時間套用,而不要計算。

不過,我個人倒是建議把「逃」而不是「戰」當作預設值。這並不是要你每次都認輸、傻傻被欺負,而是要盡可能用最快速、最低成本的方式結束互動

那些在心裡總是預設要「戰」的人,會潛意識地開始尋找「戰」的機會,就像拿著鐵鎚的人看什麼都像釘子一樣。結果就是,每天都懷疑身邊的人想欺負你,也因為想要「戰」贏,反而更容易遇到鳥事、捲入沒必要的衝突之中。

其實,當個 I 人躲在家裡寫部落格、把留言區關掉,就再也不會有被插隊、被推銷、在飯局上被酸的鳥事啦!這才叫從根本解決問題

Footnotes

  1. https://en.wikipedia.org/wiki/Fight-or-flight_response

  2. https://en.wikipedia.org/wiki/L%27esprit_de_l%27escalier

黃金二十年

· 閱讀時間約 2 分鐘 ┊ 純文字版

網路自我出版變得相當容易,大概是 2005 年前後的事情。在那之前,想要讓全世界看到你的作品,得先經過一堆「守門者」的審核──不論是出版社、唱片公司、電視台,還是政府機關。

接著,部落格、Podcast、YouTube 等出版管道一個一個冒出來,守門人的權力一夕之間崩塌,創作者終於自由了!在這段期間,只要你有能力做出還不錯的東西,被看到的機率是很大的──畢竟做東西太花時間了,而各大平台也還沒學會怎麼壓榨創作者

到了 2025 年,AI 寫作與生成工具正式成熟。現在雖然出版依然容易,但問題是,產生「乍看還可以的內容」變得太容易了。於是,各種什麼都不懂的阿貓阿狗紛紛自稱「創作者」,每天朝網路空間傾倒垃圾,內容市場又重新回到了很混亂的狀態。而守門者也回歸了,這次它叫做「演算法」,而且比以前更難取悅。

現在回頭看,那段「生產很難,但出版容易」的年代,大概只有短短二十年(2005-2025)。

我覺得自己超幸運,職業生涯的前二十年剛好就落在這個黃金年代。如果我現在才從零開始,第一天起就要跟 AI 和演算法搏鬥,一定比二十年前還要痛苦得多吧!

現在這個年代最困難的事情,大概就是:你有沒有勇氣遠離主流,不當演算法的奴隸?

「守門者」的存在,就是要用來被打破的。就像 2005 年時我們打破了傳統出版的枷鎖一樣,現在我們也可以再次用獨立網站、E-mail、RSS,甚至面對面的實體交流,再加上一套不依賴流量的商業模式,去突破新的演算法守門人!

波浪卡製作教學

· 閱讀時間約 1 分鐘 ┊ 純文字版

想把你的信用卡改造成漂亮的波浪造型嗎?

把它放在褲子口袋裡,一起丟到洗衣機裡就可以囉!

打造自己的工具

· 閱讀時間約 3 分鐘 ┊ 純文字版

前幾天開始,我開始開發自己專用的純文字動畫軟體 WiNoteWiwi 的 Keynote 替代品),目標是取代 Keynote,並讓我有一天能完全脫離 macOS。最近我大部分的空閒時間,都花在這個上面了。

雖然程式碼是 AI(Claude Opus)寫的,但我覺得要把它做好還是很不容易。整個開發過程中,還是需要許多人類的規劃、測試和品味;例如,光是「字怎麼跳動看起來比較爽」就是一個很需要品味的事情。

關於開發的細節,之後的貼文再說,這篇只是想講一些心得。

開發 WiNote 的過程讓我意識到:現在每個人都有能力擺脫「以前認為絕對擺脫不了」的數位依賴。

以我自己為例,我因為要用 Keynote 做動畫,所以必須用 macOS;因為必須用 macOS,所以必須買蘋果的電腦。以往的想法是:「不然呢?我總不可能自己寫一個 Keynote 吧?」

結果,現在我真的在自己寫一個 Keynote──而且就我個人的用法而言,它比原本的 Keynote 好用多了!

當然 WiNote 本身還是有依賴,但它依賴的是 Node、Chromium、Puppeteer、FFmpeg 等自由軟體。就算是用來寫它的 Claude,我也可以隨時換成別家的模型。這樣的依賴,比起被封閉的蘋果生態系綁架,來得舒服多了。

只要能移除越多依賴,或至少換成更自由的版本,生活就可以越靈活、越有底氣。例如:

  • 🍲 如果自己會煮菜,就不依賴外食了
  • 💇 如果自己會剪頭髮1,就不依賴設計師了
  • 🪴 如果自己有果菜園,就不依賴超市了
  • 🔋 如果自己有太陽能發電機,就不依賴台電了

當然,即便能自給自足,我們依然可以選擇吃外食、找設計師、逛超市或用台電;但只要心中知道「就算沒有這些東西,我自己來也行」,使用它們的姿態就不一樣了。

我超級推薦你也想想看:你的生活裡──尤其是數位生活──有什麼依賴是你有可能移除的呢?今天就試著砍掉其中一個吧!

如果一時想不到,我建議你從「移除串流音樂服務」開始。因為這最簡單:直接購買你喜歡的專輯來支持藝人2,把喜歡的音樂全部下載到自己的裝置上,從此以後你就可以跟串流音樂說掰掰啦!

Footnotes

  1. 疫情的時候,我真的自己剪頭髮剪了一年!雖然剪得很醜。

  2. 他沒出專輯?別忘了還有 yt-dlp

侵蝕

· 閱讀時間約 2 分鐘 ┊ 純文字版

就算自認意志堅定、不會被影響,但其實只要「暴露」在網路噪音之中,大腦就會被慢慢侵蝕。

表面上,是內容在侵蝕你:

  • 看到別人買名牌包、開新車、吃大餐、每年換新手機。即便對這些東西完全不感興趣,潛意識依然會偷偷地將「擁有這些東西」視為常態。
  • 看到各種談論冥想、健身、閱讀、斜槓、生產力、個人品牌的內容。就算不打算照做,這些過度包裝的生活方式,依然在默默校準你對「理想日常」的定義。

但其實連格式本身都在侵蝕你:

  • 貼文、短影音滑滑滑,只要三秒鐘沒有刺激就換下一個──注意力正在不知不覺被侵蝕。
  • 吵鬧的綜藝音效、五顏六色的字卡,加上那 9:16 的反人類長寬比──就算你不喜歡,甚至還會說它醜,但只要你還在看,審美觀就在被侵蝕。

「不同意」或「不喜歡」一樣東西,並不代表就能「免於被它侵蝕」。只要讓噪音在大腦裡佔到了位置,噪音就贏了。網路上的許多噪音,都在嘗試把你的現實扭曲成他們想要的樣子。快閉上眼睛、看都別看、趕快逃走

反抗的方式很簡單:擁抱 RSS獨立網站;建立自己的荒島筆電╱圖書館╱遊樂園;嚴格挑選每天的輸入,只用那些「信任的、喜歡的、真心想被它影響的東西」來灌溉自己的大腦。

(諷刺的是,我寫了這篇貼文來批評噪音,正好證明了這些噪音已經在我的大腦裡佔到了位置。而讀到這篇的你,也因為這篇貼文再次被提醒到了噪音的存在。可惡,噪音又贏了!)

創作者的 Unix 哲學

· 閱讀時間約 5 分鐘 ┊ 純文字版

Eric S. Raymond 在 The Art of Unix Programming 這本書裡,列出了 Unix 程式設計的 17 條哲學。

但我覺得這根本不是在講程式設計,而是寫給所有創作者的行為準則啊!以下只挑一些我特別有共鳴的來講,有興趣讀完整 17 條原文的,按下方展開。

按這裡展開原文
  1. Rule of Modularity: Write simple parts connected by clean interfaces.
  2. Rule of Clarity: Clarity is better than cleverness.
  3. Rule of Composition: Design programs to be connected to other programs.
  4. Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
  5. Rule of Simplicity: Design for simplicity; add complexity only where you must.
  6. Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
  7. Rule of Transparency: Design for visibility to make inspection and debugging easier.
  8. Rule of Robustness: Robustness is the child of transparency and simplicity.
  9. Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.
  10. Rule of Least Surprise: In interface design, always do the least surprising thing.
  11. Rule of Silence: When a program has nothing surprising to say, it should say nothing.
  12. Rule of Repair: When you must fail, fail noisily and as soon as possible.
  13. Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
  14. Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.
  15. Rule of Optimization: Prototype before polishing. Get it working before you optimize it.
  16. Rule of Diversity: Distrust all claims for "one true way".
  17. Rule of Extensibility: Design for the future, because it will be here sooner than you think.

分離原則

"4. Rule of Separation: Separate policy from mechanism; separate interfaces from engines."

(分離原則:把政策和機制分開;把介面和引擎分開。)

套用到創作上面,簡單來說就是把「你想講的話」跟「你用來講話的工具」分開。

不要特別為了平台,來量身訂做你想講的東西。當你開始想「開頭五秒要放什麼才不會被滑掉」、「什麼時候上傳觸及率比較高」、「這個詞會不會被黃標」、「這個演算法會推嗎」⋯⋯這時傳達的訊息就已經被工具改寫了。

訊息應該要凌駕於工具之上,而且隨時能被轉化成任何格式。

如果非要選一種「終極格式」,我想純文字是最好的選擇

節儉原則

"6. Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do."

(節儉原則:除非能證明別無他法,否則不要寫大程式。)

不要鋪張、不要搞一堆有的沒有的來擾亂自己。

你真的需要這麼複雜的企劃、這麼多人的團隊、這麼多攝影機角度、這麼繁複的剪輯嗎?如果無法證明「真的非得要這樣不可,沒有別的辦法」,那就把這些贅肉通通砍掉吧!

資料原則

"9. Rule of Representation: Fold knowledge into data so program logic can be stupid and robust."

(資料原則:把知識放進資料裡,所以程式邏輯可以又笨又耐用。)

讓「內容」去變化就好,而不是「流程」。流程要盡量簡單、耐用就好,不要每天變來變去。

例如這個部落格,我每天上傳的流程都是一樣的──寫一個 Markdown 檔案,丟進資料夾,npm run build,上傳──因為流程既無聊又簡單,我才能專注在每天寫的主題上,而不是跟流程搏鬥。

做音樂也一樣:只要有一台不錯的音源機,就能做出幾乎所有類型的音樂。不需要一直更新編曲軟體到最新版,也不需要下載 500 GB 的音色庫,更不需要糾結那十五種 compressor 的聲音到底差在哪裡。

沉默原則

"11. Rule of Silence: When a program has nothing surprising to say, it should say nothing."

(沉默原則:如果沒有有趣的東西可講,就不要講。)

現在的內容生態,根本是朝完全相反的方向運作──明明就沒有東西講,但每個人還是強迫自己一直發限動、刷存在感、餵演算法。

最佳化原則

"15. Rule of Optimization: Prototype before polishing. Get it working before you optimize it."

最佳化不是優化喔原則:先讓它能用,再慢慢打磨。)

這是許多新手創作者最常犯的錯誤:根本什麼都還沒開始做,就先擔心要買什麼鏡頭、哪隻麥克風、Logo 要找誰設計、紅了以後怎麼應付酸民⋯⋯想太多了啦,先把第一集拍出來再說好不好!

擴充原則

"17. Rule of Extensibility: Design for the future, because it will be here sooner than you think."

(擴充原則:為未來設計,因為未來來得比你想的還快。)

這點我太認同了!擁有自己的網站自己的網域、掌握作品的主權與跟讀者直接聯絡的管道,在未來只會越來越重要。

平台收割韭菜的速度,絕對比你想像中還要快。那日漸萎縮的觸及率,就是「未來」即將到來的徵兆呀!

晚上不睡覺 ✦BBP9✦

· 閱讀時間約 4 分鐘 ┊ 純文字版
BlogBlog Party(BBP)

這是我的「BlogBlog 同樂會 - 2026 年 9 月」的投稿文章。本月主題是「晚上不睡覺」,由 Jason Lai 主持。如果你有自己的部落格,歡迎一起來參加!如果沒有的話,就現在建一個,然後來參加!

一直到兩年半前,我都還是個超級夜貓。

以前正常的上床時間大概是半夜兩、三點,拖到清晨四、五點也是家常便飯。之所以能維持這種作息,主要是因為我是自由工作者──所有工作一律都排到中午以後,隔天要是沒有工作的話就一路睡到自然醒。

晚睡的習慣也不知道是怎麼開始的,大概就是想要爭取一段不被打擾的時間吧。而且我一直深信自己的創作力是越晚越強的,在半夜大家都睡了之後,自己一個人做音樂、研究東西的效率超級高的呀!

當然,熬夜也不全是為了正事。打電動、看動畫什麼的也是一定要的,尤其是以前自己一個人住的時候,很容易不知不覺玩一玩就天亮了。

老婆的醫療效果

英國 Warwick 大學曾經做了一個研究,他們追蹤了幾千個英國人,得到的結論是:結婚的人不只比較長壽,也比較有錢。他們估計,結婚平均可以讓人多活三年左右。

我覺得這個是真的!因為一個人生活時,沒有人會阻止你每餐都吃麥當勞配啤酒,或是在星期三凌晨三點,突然決定重玩一個某個十年前的遊戲。

有了老婆(指檸檬卷,不是之前那個可怕的)之後,如果亂吃或太晚睡的話就會被唸一下,然後就會不好意思繼續那樣做。兩個人互相監督,真的會健康很多──當然,前提是你要結對人啦,不然可能反而會早死不只三年。

變成早鳥族

2024 年有一天,我的聽力突然出問題,嚇到讓我決定重整生活習慣──完全戒酒,改成早睡,每天晨跑。到現在基本上都沒有間斷唷!

我現在大概 22:00-22:30 就會去睡了。就算真的不是很想睡,我也會躺去床上關燈聽 Podcast──開一個很小聲、快要聽不清楚的音量,大腦很快就會恍神睡著了。然後早上 06:00-06:30 左右起床,上傳部落格文章,然後去跑步。

夜貓族最常見的晚睡藉口是「有些人天生就是適合晚睡」,我之前也非常愛引用這個說法。但現在我可以用親身經歷跟你說:沒有這回事,你可以改過來

早上創作也不錯

原本發生在深夜的創作時間,現在被我搬到了早上八點到十二點。寫文章、更新網站、製作內容,大部分都在這個時段完成。

我覺得這樣的感覺更好耶!因為還沒到中午,我就常常有種「今天已經完成很多了,這樣應該就夠了吧」的感覺,然後接下來的時間就可以盡情地耍廢。比起以前夜貓時期,整個白天都會掛念「正事要等到深夜才能做」,反而壓力比較大。改成早起之後,心理狀態明顯健康多了。

怎麼早睡?

至於要怎麼改成早睡呢?很簡單:不管有沒有睡飽,先強制早起就好。不用幾天,你的身體就會自動想要早睡了。

還有,中午過後不要碰咖啡因很有幫助;戒酒也很有幫助。喝酒雖然會昏昏沉沉,但其實對睡眠品質是有負面影響的。

這篇寫著寫著就不小心變成推坑早睡早起文了。不過你看,連我這種一輩子夜貓的人都能改過來,如果你想要改變的話一定也可以!