Refactoring English: Month 3

Michael Lynch

重构英语:第三个月

原文由 Michael Lynch 发布,订阅该博客

一句话总结

第一次在 Kickstarter 上众筹

亮点

  • 我发起了我的第一个 Kickstarter 项目,发现 Kickstarter 的流程出乎意料地轻松。
  • 目前大致有望达成 Kickstarter 目标,但要筹到剩下的三分之二,还得想些新办法。
  • 我正在为我的 4 核 ARM / 24GB 云服务器征集有趣的服务部署建议。

目标完成情况

每月初我都会定下当月想完成的目标,以下是本月的完成情况:

完成《Refactoring English》的博客写作章节

在写博客章节写到一半时,我意识到可以写关于提交信息的内容,这一章很适合分享到 Hacker News、/r/programming 和 Lobsters 这类面向开发者的社区。

可惜,这篇文章在 Hacker News 上反响平平,在 /r/programming 和 Lobsters 上也没什么热度。虽然令人失望,但也在意料之中。

开始预售《Refactoring English》

  • 结果:已在 Kickstarter 上开始预售
  • 评分:A

Kickstarter:出乎意料的顺利

我决定在Kickstarter 上为《Refactoring English》做预售。我以前从未用过 Kickstarter,本来已经做好了体验会很糟糕的准备。

我以往对“创作者平台”的体验是,它们不是帮你把项目做好,而是想方设法向你推销各种增值服务来赚钱。

很高兴地说,我在 Kickstarter 上发起第一个项目时,过程出乎意料地顺利。他们完全没有让我付任何费用。他们很好地统一了利益——靠帮助项目筹到钱来赚钱,而不是靠向创作者推销增值服务来榨取价值。

总的来说,我在 Kickstarter 上花了六到八个小时填写各种表格、验证银行信息,以及制作面向公众的文案、视频和图片。

我很喜欢 Kickstarter 这种模式对这个项目的适用性。如果是普通的预售,三个月后如果客户不够,我就会陷入尴尬的境地——即便已经投入了三个月的工作,也不得不给所有人退款。我很欣赏 Kickstarter 明确告诉支持者,他们是在为这段旅程买单。创作者理应尽力交付,但支持者也接受事情可能无法如愿的可能性。

我也喜欢可以设定目标、采用“全有或全无”的模式。我把目标定为 5000 美元,因为我觉得这个目标有挑战性但可行,而且足够高,让我在出书后还有希望再赚到一两万美元。如果没达到目标、一分钱也拿不到,我会失望,但也能从中得到安慰——至少对这个想法得到了一个明确的“否定”答案。

除了 Kickstarter 上的垃圾邮件……

Kickstarter 唯一不好的一点就是垃圾邮件。肯定有一大堆骗子在盯着 Kickstarter,因为我每天都会收到大约三封新邮件,用各种不靠谱的方式声称能帮我的众筹成功。他们一开始会很拙劣地假装成感兴趣的顾客,然后把话题引向他们那个需要我付费请来帮忙的“朋友”。

你好,有位投资人向我推荐了你的项目,你为软件开发者提升写作能力的方法立刻吸引了我。你在博客方面的经验和成绩令人印象深刻!我很想支持这个项目。你打算如何针对不同经验和水平的开发者来定制写作技巧呢?祝好,David

骗子一开始会发一条看似无害的消息,假装对你的产品感兴趣。

嗨 Michael,太好了!你有没有考虑过在 Kickstarter 上联系一位像你一样的创作者,请教他们是如何达成目标的?我有个朋友在上面就是一位成功的创作者,不确定你是否感兴趣,但或许可以和他交流一下,获取一些见解。这对你的众筹可能会很有帮助!祝你的众筹成功!祝好,David

……然后他们就会把话题转到那位提供付费 Kickstarter 推广服务的“朋友”身上。

筹款进展:目前情况如何

截至今天,我的 Kickstarter 项目已获得 1585 美元的认捐,达到了目标的 31%。

我的 Kickstarter 项目众筹周期过去 24% 时,我已达成筹款目标的 31%。

项目是周五上线的,月底结束,所以目前是众筹期 25 天中的第 6 天(已过去 24%)。

在仅过去 24% 的时间里就完成了 31% 的目标,听起来不错,但问题在于我已经打出了手里最好的牌。我已经通过本书的邮件列表、社交媒体以及本博客底部的小广告宣传了这次 Kickstarter。

那么,我还能做什么呢?

我还能想到两张可以打的牌。

第一张是登上 Hacker News 首页。这通常很难,但我本该是这方面的专家。我有信心至少能做到一次,月底前做到两三次也有希望。我有几个帖子点子,基本上算是“触击短打”。它们不会是冲上榜首的本垒打,但花五小时左右写出来,大概能排到 Hacker News 第 10 到 20 名的位置。

第二个想法是联系那些在对外写作上投入很大的公司,看看他们是否有兴趣赞助这个项目。我从没见过有企业赞助的书,所以这也许是个馊主意,但似乎值得一试。

业余项目:我的 hobby 云服务器上该跑点什么?

我最近免费获得了一台4 核 ARM / 24GB 内存的 Oracle Cloud 服务器。问题是,这台性能相当不错的服务器有大约 99% 的时间都处于空闲状态:

我可怜的服务器太无聊了。

到目前为止,我已经安装了:

我正在征集可以在服务器上运行的有趣项目的建议。我的标准是:

  • 希望它是一个有空时运营起来很有趣、但又不会成为必须投入时间的负担的服务。
    • 我不想花时间去管理论坛或聊天室之类的东西。
  • 可以是一个支持我认同的事业的志愿计算项目。
    • 我本来想运行ArchiveTeam Warrior来为 Internet Archive 归档网站,但它不支持 ARM
    • 对于志愿计算项目,我希望它对运营者来说是有趣的,就像当年把算力捐给 SETI@home、光是看着它运行就很有趣那样。
  • 希望它是开源的。
  • 即使 Oracle 把我的服务器回收了,也不会对任何人造成影响。
    • 也就是说,我不希望有人会丢失存储在我服务器上的数据。
  • 我不想挖加密货币。

endlessh-go就是一个很好的例子,我打算把它加上。

如果你对我的服务器该跑什么有趣项目有建议,欢迎在评论区留言或直接给我发邮件。

值得一读的链接

  • “Writing commit messages”,作者 Simon Tatham
    • 在写我的文章之前,我读了很多关于提交信息规范的博客文章,我觉得这是最好的一篇。
      • 更准确地说,其他文章都很糟糕,只有 Tatham 这一篇是好的。
      • 其他文章都只关注无关紧要的风格细节(比如“标题必须用祈使句”),或者发号施令却不解释原因。
    • 根据网址和网站设计,我还以为作者是个大学生,很惊讶他对提交信息有这么多真知灼见。深入了解后才发现,这位作者就是 PuTTY SSH 客户端的创造者,而且只是喜欢把所有东西都托管在朋友的服务器上
  • “Programming without Pointers”,作者 Andrew Kelley
    • Zig 创始人 Andrew Kelley 说,他通过创造一种名为“无指针编程”的风格,突破了自己的编程能力瓶颈。
    • Kelley 的风格是用一个包含应用所需各种数据类型的单一结构体来表示应用状态,但其中任何类型都不能包含指针。顶层结构体可以包含数组或哈希表,但它们存储的对象不能有指针。
    • 他举了存储字符串的例子。你不能存储一个字符串数组,因为那会是指向指针的指针。相反,他创建了一个自定义结构,把所有字符串聚合到一个数组中,然后维护一个指向该数组的索引列表。
    • 这种技术的优点:
      • 序列化和反序列化状态变得非常简单。序列化只需将结构体的字节转储到文件或网络套接字中。反序列化只需读取整个文件并将其映射回原来的结构体。
      • 很容易在不同环境间共享状态(例如 Zig 后端和 WASM 前端)。
      • 内存管理也变得更简单,因为你可以为顶层结构体的每个字段释放内存。你永远不需要遍历列表或遍历树结构来为子对象释放内存。
    • 我觉得这种技术很出人意料,因为这些索引本质上就是没有编译器支持的指针。如果这是随便什么人提出的,我会不以为然,但因为我觉得 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》达成 5000 美元的 Kickstarter 众筹目标。
  • 发布《Refactoring English》的博客写作章节。
  • 在三月底前两次登上 Hacker News 首页。

求助

  • 如果你对我的 Kickstarter 项目有建议——而且你不是垃圾机器人——欢迎给我发邮件。

本文章由 muse-spark-1.2-contributor 进行翻译

评论