Refactoring English:第三个月
一句话总结
我第一次在 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:我 pleasantly surprised(惊喜)
我决定在 Kickstarter 上进行《Refactoring English》的预售。我以前从未用过 Kickstarter,原本做好了它会是一场痛苦经历的心理准备。
我对“创作者平台”的通常体验是,它们靠向我推销各种加购服务来赚钱,而不是帮助我的项目。
我很高兴地报告,在 Kickstarter 上发起第一个项目出乎意料地省心。他们从未要求我为任何东西付费。他们把激励对齐得很好,靠帮项目筹款来赚钱,而不是通过加购来榨取项目创作者。
总的来说,我在 Kickstarter 上花了六到八个小时填写所有表格、验证我的银行信息,并制作面向公众的文字、视频和图片。
我喜欢 Kickstarter 的模式用于这个项目。如果做常规预售,三个月后发现客户不够,我就会陷入尴尬境地:即使已经做了三个月的工作,也得给所有人退款。我很欣赏 Kickstarter 明确告诉支持者,他们的钱是为这段旅程支付的。创作者应尽力交付,但支持者也接受事情可能不会成功的可能性。
我还喜欢可以设定目标并把项目做成“全有或全无”。我把目标定在 5 千美元,因为我觉得这既有野心又可行,而且这个数字高到足以让我抱有希望:出书后还能再赚 1 万到 2 万美元。如果达不到目标、一分钱都拿不到,我会失望,但也会感到安慰,因为我对这个想法得到了一个明确的“不”。
除了 Kickstarter 的垃圾邮件发送者……
Kickstarter 唯一的缺点是垃圾信息。肯定有大量垃圾邮件发送者盯着 Kickstarter,因为我每天大约收到三封新邮件,提供某种骗术般的“帮助我的众筹成功”的方式。他们一开始(拙劣地)假装成一个感兴趣的顾客,然后把话题引向我应该付钱请他们帮忙的“朋友”。

垃圾邮件发送者先发一条无害的消息,假装对你的产品感兴趣。

……然后他们把话题转向他们的“朋友”,后者提供付费的 Kickstarter 宣传服务。
筹款:目前进展如何
截至今天,我的 Kickstarter 项目已获得 1,585 美元的pledge(认捐),达到了目标的 31%。

在我的 Kickstarter 项目的筹款窗口期进行到 24% 时,我已达到营收目标的 31%。
我是在周五发起项目的,筹款在月底结束,所以我正处于 25 天筹款期的第 6 天(完成了 24%)。
在时间线只过了 24% 的情况下达到目标的 31%,听起来不错,但问题是我已经打出了手里最好的牌。我向本书的邮件列表、社交媒体以及这个博客底部的小广告宣布了这次 Kickstarter 众筹。
那么,我还能做什么呢?
我能想到的还有两张牌可以打。
第一张是登上 Hacker News 的首页。这通常很难做到,但我应该算是这方面的专家。我有信心至少能做到一次,希望在月底前能有两三次。我有几个帖子点子,基本上算是“触击球”。它们不会是能冲到第一名位置的本垒打帖子,但我大概能在 5 个小时左右写出来,并落在 Hacker News 第 10 到 20 名的区间。
我的第二个想法是联系那些在公开写作上投入巨大的公司,看他们是否有兴趣赞助这个项目。我从没见过有企业赞助商的书,所以这也许是个坏主意,但看起来似乎可行。
副业项目:我该在我的爱好云服务器上跑什么?
我最近免费获得了一台 4 核 ARM CPU / 24 GB 内存的 Oracle Cloud 服务器。问题是这台相当能打的服务器大约有 99% 的时间处于空闲状态:

我可怜的服务器太无聊了。
到目前为止,我已经安装了:
- Woodpecker CI,对我托管在 Codeberg 上的项目很有用,因为目前还没有商业 CI 支持 Codeberg
- Snowflake 代理,帮助人们对抗审查
我在征集建议,想在这台服务器上跑一些有趣的东西。我的标准是:
- 我希望它是一个我有时间时运营起来很开心的服务,而不是一个占用我时间的义务。
- 我不想花时间管理论坛或聊天室之类的东西。
- 它可以是一个志愿计算项目,支持我喜欢的事业。
- 我想运行 ArchiveTeam Warrior 来把网站归档到 Internet Archive,但他们不支持 ARM。
- 对于志愿计算机会,我希望它对运营者来说是有趣的,就像当年如果你向 SETI@home 捐献计算时间,光是看着它运行就很有趣一样。
- 我希望它是开源的。
- Oracle 可以随时清掉我的服务器,而这不应该影响到任何人。
- 也就是说,我不想让任何人丢失存储在我服务器上的数据。
- 我不想挖加密货币。
endlessh-go 是一个符合我要求的好例子,我打算加上它。
如果你有建议,觉得我的服务器应该跑什么有趣的项目,请在评论区告诉我,或者给我发邮件。
有趣的链接
- Simon Tatham(西蒙·塔瑟姆)的《Writing commit messages》(《撰写提交信息》)
- 在写我的文章之前,我读了很多关于 commit message 实践的博客文章,我认为这篇是最好的。
- 其实,更准确地说,其他文章都很糟糕,只有 Tatham 的这篇是好的。
- 其他每篇文章要么关注无关紧要的风格问题(例如“标题必须用祈使语气”),要么不解释理由就下达规定。
- 根据 URL 和网站设计,我以为作者是个大学生,惊讶于他对 commit message 有如此多的智慧。我深入调查后发现,这位作者是 PuTTY SSH 客户端的创造者,只是喜欢把所有东西都托管在朋友的服务器上。
- 在写我的文章之前,我读了很多关于 commit message 实践的博客文章,我认为这篇是最好的。
- Andrew Kelley(安德鲁·凯利)的《Programming without Pointers》(《无指针编程》)
- Zig 的创始人 Andrew Kelley 说,他通过创造一种他称之为“programming without pointers(无指针编程)”的风格,摆脱了自己的编程水平瓶颈。
- Kelley 的风格是,用一个包含应用所需的各种数据类型的单一 struct(结构体)来表示应用的状态,但其中任何类型都不能包含指针。顶层 struct 可以包含数组或 hashmap,但它们存储的对象不能有指针。
- 他的 groovebasin 项目就是一个例子。
- 他举了存储字符串的例子。你不能存储一个字符串数组,因为那会是“指向指针的指针”。相反,他创建一个自定义结构,把所有字符串聚合到一个数组里,然后维护一个指向该数组索引的列表。
- 这种技术的优点:
- 序列化和反序列化状态非常简单。序列化只是把 struct 的字节转储到文件或网络套接字中。反序列化只是读取整个文件并把它映射回原来的 struct。
- 跨环境共享状态很容易(例如 Zig 后端和 WASM 前端)。
- 内存管理也变得更简单,因为你可以为顶层 struct 的每个字段释放内存。你永远不必遍历列表或走查树结构来为子对象释放内存。
- 我觉得这项技术令人惊讶,因为这些索引本质上就是没有编译器支持的指针。如果是一个随机的人向我提出这个方案,我会不予理会,但因为我认为 Andrew Kelley 很聪明,我想试一试。
- Hemant Kumar(赫曼特·库马尔)的《Reviving an Old Kindle Paperwhite 7th Gen》(《复活旧款 Kindle Paperwhite 第七代》)
- 我非常想在 eBay 上花 30 美元买一台旧电子阅读器,做我自己的仪表盘,但我完全不知道该在上面显示什么。
- Kit Fox(基特·福克斯)的《If You Ever Stacked Cups In Gym Class, Blame My Dad》(《如果你在体育课上叠过杯子,都怪我老爸》)
- 一天凌晨两点我醒来后睡不着,花了大约两个小时读这篇文章和看叠杯视频。
总结
完成了什么?
- 在 Kickstarter 上发起了《Refactoring English》的预售
- 发表了《How to Write Useful Commit Messages》(《如何写有用的提交信息》)
- 发表了《My Zig Configuration for VS Code》(《我的 VS Code Zig 配置》),并创建了一个 Zig dev flake
- 发表了我对《Never Pay The First Bill》(《绝不先付第一张账单》)的读书笔记
学到的经验
- 在 Kickstarter 上筹款出乎意料地省心。
下个月的目标
- 实现《Refactoring English》的 5 千美元 Kickstarter 众筹目标。
- 发表《Refactoring English》的博客写作章节。
- 在 3 月底前两次登上 Hacker News 首页。
求助请求
- 如果你对我的 Kickstarter 项目有建议,而且你不是垃圾邮件机器人,请给我发邮件。
随机一篇博客