Refactoring English: Month 3

Michael Lynch

重構英文:第 3 個月

一句話總結

我第一次在 Kickstarter 上募資

重點整理

  • 我啟動了我的第一個 Kickstarter 專案,發現 Kickstarter 出乎意料地簡單順暢。
  • 目前大致朝著達成 Kickstarter 目標前進,但要募到最後三分之二還得想些創意方法。
  • 我正在徵求建議,想在我的 4x ARM CPU/24 GB 雲端伺服器上跑一些有趣的服務。

目標成績

每個月月初,我都會宣布當月想完成的事。以下是本月目標的達成情況:

完成 Refactoring English(《重構英文》)的部落格寫作章節

在撰寫部落格章節到一半時,我想到可以改寫 commit 訊息,這會是很適合分享到 Hacker News、/r/programming 和 Lobsters 這類開發者導向社群的好章節。

可惜這篇文章在 Hacker News 上反應冷淡,在 /r/programming 和 Lobsters 上也沒什麼迴響,雖然令人失望,但我也料到有可能發生。

開始為《重構英文》進行預購銷售

  • 成果:在 Kickstarter 上開始預購
  • 成績:A

Kickstarter:出乎意料的順利

我決定在Kickstarter 上為《重構英文》進行預購。這是我第一次使用 Kickstarter,本來已經做好會是一場痛苦經驗的心理準備。

我對這類「創作者平台」的典型經驗是,它們往往不是幫助我的專案,而是透過各種加價推銷來賺我的錢。

很開心可以報告,我在 Kickstarter 上啟動第一個專案的過程出乎意料地輕鬆。他們完全沒有要求我付任何費用。他們在誘因設計上做得很好,靠協助專案募資來賺錢,而不是透過加價推銷來壓榨創作者。

總體來說,我在 Kickstarter 上花了六到八小時填寫文件、驗證銀行資訊,以及製作對外公開的文字、影片和圖片。

我喜歡 Kickstarter 這個模式用在這個專案上。如果是一般的預購,當我做到三個月後發現客戶不夠時,就會陷入尷尬的處境——即使已經投入三個月的心力,還是得把錢全退給大家。我很欣賞 Kickstarter 明確告知贊助者,他們付錢支持的是一趟旅程。創作者應該盡力交付成果,但贊助者也接受事情可能不如預期的可能性。

我也喜歡可以設定目標、採取全有或全無的模式。我把目標設為 5,000 美元,因為我覺得這既有挑戰性又可達成,而且如果達標,出版後還有希望再賺 10,000 到 20,000 美元。如果沒達標而一無所獲,我會失望,但也能從中得到一個明確的「否」作為回應。

唯一的缺點就是 Kickstarter 上的垃圾訊息……

Kickstarter 唯一的缺點就是垃圾訊息。一大堆垃圾訊息發送者一定都在盯著 Kickstarter,因為我每天會收到大約三封電子郵件,用各種可疑的手法說要幫我的募資成功。他們一開始會假裝(而且假得很拙劣)成感興趣的顧客,然後把話題轉向他們那個我應該付費請來的朋友。

您好,有位投資人向我推薦了您的募資專案,您為軟體開發者改善寫作的方法立刻吸引了我的注意。您在部落格經營上的經驗與成就令人印象深刻!我很樂意支持這個專案。您打算如何針對不同經驗與專業程度的開發者來調整寫作技巧呢?祝好,大衛

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

麥可您好,太好了!您有沒有考慮過在 Kickstarter 上聯繫像您一樣的創作者,請教他們如何達成預期目標呢?我有個朋友在上面是位成功的創作者,不確定您是否有興趣,但或許值得跟他聯繫交流一下見解。這對您的募資活動可能會很有幫助!祝您的募資順利!祝好,大衛

……然後把話題轉向他們那位提供付費 Kickstarter 宣傳服務的「朋友」。

募資進度:目前情況

截至今天,我的 Kickstarter 專案已獲得 1,585 美元的承諾贊助,達成目標的 31%。

我的 Kickstarter 專案募資期間已過 24% 時,我已達成營收目標的 31%。

我在週五啟動專案,募資到月底結束,所以現在是募資期第 6 天,共 25 天(已完成 24%)。

在僅過 24% 的時間就達成 31% 的目標,聽起來不錯,但問題是我已經打出最好的牌了。我已經向本書的電子報名單、社群媒體,以及部落格底部的自製小廣告宣傳了 Kickstarter。

那麼,我還能做什麼?

我想到還有兩張牌可以打。

第一張是登上 Hacker News 首頁。這通常很難做到,但我號稱是這方面的專家。我有信心至少能成功一次,希望在月底前能成功兩到三次。我有幾個貼文點子,基本上就像是「觸擊短打」。它們不會是衝上第一名的全壘打貼文,但我大概花五小時就能寫完,並落在 Hacker News 排名第 10 到 20 名左右。

我的第二個想法是聯繫那些大力投資公開寫作的公司,看看他們是否有興趣贊助這個專案。我從沒看過有企業贊助的書,所以這或許是個爛主意,但感覺有可能行得通。

閒暇專案:我的興趣用雲端伺服器該跑什麼?

我最近免費取得了一台4x ARM CPU/24 GB RAM 的 Oracle Cloud 伺服器。問題是,這台效能相當不錯的伺服器有約 99% 的時間都閒置著:

我可憐的伺服器無聊透了。

目前我已經安裝了:

我正在徵求可以在伺服器上跑的有趣服務建議。我的條件是:

  • 我希望它是那種有空時玩起來有趣,但不會變成必須投入時間的義務的服務。
    • 我不想花時間管理論壇或聊天室之類的東西。
  • 它可以是支持我認同理念的 volunteer computing(志願運算) 專案。
    • 我本來想跑ArchiveTeam Warrior 來為 Internet Archive 備份網站,但他們不支援 ARM 架構
    • 對於志願運算的機會,我希望對操作者來說是有趣的,就像以前把運算資源捐給 SETI@home,看著它運行本身就很有趣那樣。
  • 我希望它是開源的。
  • 即使 Oracle 把我的伺服器收回,也不會對任何人造成影響。
    • 也就是說,我不希望有人因為把資料存在我的伺服器上而遺失資料。
  • 我不想挖加密貨幣。

endlessh-go 就是符合我需求的好例子,我打算加上它。

如果你對我的伺服器該跑什麼有趣的專案有建議,歡迎在留言區告訴我或直接寫信給我。

值得一看的連結

  • 「撰寫 commit 訊息」,作者 Simon Tatham(西蒙·塔瑟姆)
    • 在撰寫我的文章之前,我讀了很多關於 commit 訊息寫法的部落格文章,我覺得這篇是最好的。
      • 更精確地說,其他文章都很糟,只有西蒙·塔瑟姆的這篇是好的。
      • 其他文章都聚焦在不重要的風格細節(例如「標題必須用祈使語氣」),或是不加解釋地發號施令。
    • 從網址和網站設計來看,我原本以為作者是個大學生,很驚訝他對 commit 訊息有如此深刻的見解。深入研究後,我才發現作者是 PuTTY SSH 客戶端的創作者,而且只是喜歡把所有東西都託管在朋友的伺服器上
  • 「不用指標來寫程式」,作者 Andrew Kelley(安德魯·凱利)
    • Zig 創辦人安德魯·凱利表示,他透過創造一種名為 programming without pointers(不用指標來寫程式) 的風格,突破了程式設計能力的瓶頸。
    • 凱利的風格是用單一的 struct 來表示應用程式的狀態,該 struct 包含應用程式所需的各種資料型別,但這些型別本身不能包含指標。最上層的 struct 可以包含陣列或 hashmap,但它們儲存的物件不能有指標。
    • 他以儲存字串為例。你不能儲存字串陣列,因為那會是指向指標的指標。相反地,他建立了一個自訂結構,將所有字串彙整到單一陣列中,然後維護一個指向該陣列的索引清單。
    • 這種技巧的優點:
      • 序列化和反序列化狀態變得極為簡單。序列化只需將 struct 的位元組傾印到檔案或網路插座;反序列化只需讀取整個檔案並映射回原始的 struct。
      • 很容易在不同環境間共享狀態(例如 Zig 後端與 WASM 前端)。
      • 記憶體管理也變得更簡單,因為你可以針對最上層 struct 的每個欄位釋放記憶體。你永遠不需要遍歷清單或走訪樹狀結構來釋放子物件的記憶體。
    • 我覺得這項技巧令人驚訝,因為這些索引感覺上本質就是沒有編譯器支援的指標。如果這是隨便一個人提出的,我會不予理會,但因為我認為安德魯·凱利很聰明,所以我想試試看。
  • 「復活舊款 Kindle Paperwhite 第 7 代」,作者 Hemant Kumar(赫曼特·庫馬)
    • 我非常想在 eBay 上花 30 美元買一台舊電子閱讀器來做自己的儀表板,但還沒想到要顯示什麼內容。
  • 「如果你曾在體育課上疊過杯子,怪我爸就對了」,作者 Kit Fox(基特·福克斯)
    • 有天半夜兩點醒來後睡不著,我花了大約兩個小時讀這篇文章並觀看疊杯影片。

總結

完成了什麼?

經驗教訓

  • 在 Kickstarter 上募資出乎意料地輕鬆。

下個月的目標

  • 為《重構英文》達成 5,000 美元的 Kickstarter 目標。
  • 發表《重構英文》的部落格寫作章節。
  • 在三月底前兩度登上 Hacker News 首頁。

徵求協助

  • 如果你對我的 Kickstarter 專案有建議,而且你不是垃圾機器人,歡迎寫信給我。

原文由 Michael Lynch 發布

本文章由 muse-spark-1.2-contributor 進行翻譯