Refactoring English:第三個月
原文由 Michael Lynch 于 發布,訂閱此部落格
一句話總結
第一次在 Kickstarter 上募資
重點提要
- 我推出了第一個 Kickstarter 專案,發現 Kickstarter 意外地好用、不怎麼費事。
- 目前大致朝著 Kickstarter 目標前進,但要募到最後的三分之二還得想點新方法。
- 正在徵求點子,想找些有趣的服務來跑在我的 4 核心 ARM CPU/24 GB 雲端伺服器上。
目標成績單
每個月月初,我都會訂下想完成的目標。以下是這個月的達成狀況:
完成 Refactoring English 的部落格寫作章節
- 成果:我決定改為專注在 commit message 章節,並如期完成了。
- 評分:A
寫到部落格章節一半時,我意識到可以改寫 commit message 的主題,這一章很適合分享到 Hacker News、/r/programming 和 Lobsters 這類開發者社群。
可惜這篇文章在 Hacker News 上反應冷淡,在 /r/programming 和 Lobsters 上也沒什麼迴響,雖然有點失望,但也在預料之中。
開始為 Refactoring English 進行預購
- 成果:已在 Kickstarter 上開始預購
- 評分:A
Kickstarter:出乎意料地順利
我決定把Refactoring English 的預購放到 Kickstarter 上。我以前從來沒用過 Kickstarter,本來已經做好會是一場惡夢的心理準備。
我對這類「創作者平台」的典型經驗是,它們賺錢的方式不是幫你把專案做好,而是想盡辦法向你推銷加購服務來壓榨你。
很高興可以回報,我在 Kickstarter 上推出第一個專案的過程意外地輕鬆。他們完全沒有要我付任何費用。他們把誘因設計得很好,是靠幫助專案成功募資來賺錢,而不是靠向創作者推銷加購來牟利。
整體來說,我在 Kickstarter 上花了大約六到八小時,填寫文件、驗證銀行資訊,以及製作對外公開的文案、影片和圖片。
我很喜歡 Kickstarter 這個模式,很適合這個專案。如果是做一般的預購,三個月後發現客戶不夠多,處境就會很尷尬——就算已經投入三個月的心力,還是得把錢全額退還。我很欣賞 Kickstarter 明確告訴贊助者,他們付錢支持的是一段過程。創作者理當盡力交付成果,但贊助者也接受事情可能不如預期的風險。
我也喜歡可以設定目標、採全有或全無的機制。我把目標訂在 5,000 美元,因為我覺得這是有挑戰性但做得到的數字,而且夠高,讓我在出書後還有機會再賺個一到兩萬美元。如果沒達標、一毛錢都拿不到,我當然會失望,但至少能得到一個明確的「否」作為答案,也算是一種安慰。
唯一的缺點:Kickstarter 上的垃圾訊息⋯⋯
Kickstarter 唯一的缺點就是垃圾訊息。一定有大量垃圾訊息發送者在盯著 Kickstarter,因為我每天大概會收到三封新郵件,用各種可疑的手法說要幫我的募資成功。他們一開始會假裝(而且裝得很拙劣)是感興趣的顧客,接著就把話題轉到他們那個需要付費的「朋友」身上,說可以幫我宣傳。

垃圾訊息發送者一開始會傳來看似無害的訊息,假裝對你的產品感興趣。

⋯⋯接著就把話題轉到他們提供付費 Kickstarter 宣傳服務的「朋友」身上。
募資進度:目前的狀況
截至今天,我的 Kickstarter 專案已經獲得 1,585 美元的承諾贊助,達成目標的 31%。

在我的 Kickstarter 專案募資期已經過了 24% 的時候,我已經達成募資目標的 31%。
專案在週五上線,到月底結束,所以現在是募資期 25 天中的第 6 天(已過 24%)。
只過了 24% 的時間就達成 31% 的目標,聽起來不錯,但問題是我已經把手上最好的牌都打完了。我已經在書的電子報名單、社群媒體,以及這個部落格底部的自家廣告中宣傳了 Kickstarter。
那麼,接下來還能做什麼?
我想得到還有兩張牌可以打。
第一張是登上 Hacker News 首頁。這通常很難,但我理論上算是這方面的專家。我有信心至少能做到一次,希望月底前能做到兩到三次。我有幾個發文點子,基本上算是「短打」。它們不會是衝上第一名的全壘打文章,但大概花五小時左右就能寫完,有機會擠進 Hacker News 的第 10 到 20 名。
第二個想法是去聯絡那些非常重視對外寫作的公司,看看他們是否有興趣贊助這個專案。我從來沒看過有企業贊助的書,所以這也許是個爛主意,但感覺值得一試。
支線專案:我的興趣用雲端伺服器還能跑什麼?
我最近拿到一台免費的 4 核心 ARM CPU/24 GB 記憶體的 Oracle Cloud 伺服器。問題是,這台效能還不錯的伺服器有大約 99% 的時間都在閒置:

我可憐的伺服器實在太無聊了。
到目前為止,我已經安裝了:
- Woodpecker CI,對我放在 Codeberg 上的專案很有幫助,因為目前還沒有商業 CI 支援 Codeberg
- Snowflake proxy,用來幫助人們突破網路審查
我在徵求點子,想找些有趣的東西來跑在這台伺服器上。我的條件是:
- 希望是那種有空時玩起來有趣,但不會變成非得花時間顧著的義務的服務。
- 我不想花時間去管理論壇或聊天室之類的東西。
- 也可以是支援我認同理念的志願運算專案。
- 我本來想跑 ArchiveTeam Warrior 來幫 Internet Archive 備份網站,但他們不支援 ARM 架構。
- 如果是志願運算的機會,我希望對維運者來說是有趣的,就像以前把運算資源捐給 SETI@home,光是看著它跑就很有趣那樣。
- 希望是開源的。
- 就算 Oracle 哪天把我的伺服器收回去,也不應該對任何人造成影響。
- 也就是說,我不希望有人把資料存在我的伺服器上,結果因此遺失。
- 我不想拿來挖加密貨幣。
endlessh-go 就是一個很好的例子,我打算來裝這個。
如果你有什麼適合在我的伺服器上跑的有趣專案建議,歡迎在留言區告訴我,或直接寫信給我。
值得一看的連結
- 「Writing commit messages」,作者 Simon Tatham
- 在寫我的文章之前,我讀了很多關於 commit message 寫法的部落格文章,我覺得這篇是寫得最好的。
- 更精確地說,其他文章都很糟,只有 Tatham 這篇是好的。
- 其他文章都在糾結不重要的風格細節(例如「標題一定要用祈使句」),或是只下指令卻不解釋背後的原因。
- 光看網址和網站設計,我還以為作者是個大學生,很驚訝他對 commit message 有這麼深刻的見解。深入了解後才發現,作者其實是 PuTTY SSH 客戶端的創作者,只是喜歡把所有東西都放在朋友的伺服器上。
- 在寫我的文章之前,我讀了很多關於 commit message 寫法的部落格文章,我覺得這篇是寫得最好的。
- 「Programming without Pointers」,作者 Andrew Kelley
- Zig 的創辦人 Andrew Kelley 說,他透過創造一種名為「programming without pointers(不用指標來寫程式)」的風格,突破了程式能力的瓶頸。
- Kelley 的風格是用單一的 struct 來表示整個應用程式的狀態,裡面包含應用程式需要的各種資料型別,但這些型別本身都不能包含指標。最上層的 struct 可以包含陣列或 hashmap,但裡面存放的物件不能有指標。
- 他的 groovebasin 專案就是這種寫法的一個範例。
- 他以儲存字串為例。你不能儲存字串陣列,因為那會是指標的指標。相反地,他自訂了一個結構,把所有字串集中到單一陣列中,然後維護一個指向該陣列的索引清單。
- 這種技巧的好處:
- 狀態的序列化和反序列化變得非常簡單。序列化就只是把 struct 的位元組直接寫入檔案或網路 socket,反序列化也只是讀取整個檔案再映射回原本的 struct。
- 很容易在不同環境之間共享狀態(例如 Zig 後端和 WASM 前端)。
- 記憶體管理也變得更簡單,因為你只需要針對最上層 struct 的每個欄位釋放記憶體,不必遍歷清單或走訪樹狀結構來釋放子物件的記憶體。
- 我覺得這個技巧很出人意料,因為那些索引本質上就是沒有編譯器支援的指標。如果是隨便一個人提出這個想法,我大概會直接不理會,但因為我覺得 Andrew Kelley 很聰明,所以想試試看。
- 「Reviving an Old Kindle Paperwhite 7th Gen」,作者 Hemant Kumar
- 我超想在 eBay 上花 30 美元買一台舊的電子閱讀器來做自己的儀表板,但還沒想到要拿來顯示什麼。
- 「If You Ever Stacked Cups In Gym Class, Blame My Dad」,作者 Kit Fox
- 有天半夜兩點醒來睡不著,我花了大約兩個小時讀這篇文章和看疊杯影片。
總結
完成了什麼?
- 在 Kickstarter 上為 Refactoring English 展開預購
- 發表了〈How to Write Useful Commit Messages〉
- 發表了〈My Zig Configuration for VS Code〉並建立了一個 Zig 開發用的 flake
- 發表了《Never Pay The First Bill》的閱讀筆記
學到的教訓
- 在 Kickstarter 上募資意外地輕鬆。
下個月的目標
- 為 Refactoring English 達成 5,000 美元的 Kickstarter 募資目標。
- 發表 Refactoring English 的部落格寫作章節。
- 在三月底前兩度登上 Hacker News 首頁。
需要幫忙的地方
- 如果你對我的 Kickstarter 專案有建議,而且你不是垃圾機器人,歡迎寫信給我。
隨機一篇部落格
留言
登入後參與討論