TinyPilot: Month 10

Michael Lynch

TinyPilot:第十个月

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

一句话总结

TinyPilot 有了第一个真正的办公室。

亮点

  • TinyPilot 有了第一个正式的办公空间。
  • 我尝试了一次营销实验,结果失败了。
  • 为新办公室设计 IT 基础设施很有趣。

目标完成情况

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

将 TinyPilot 营收提升至 3 万美元

  • 结果:营收增长 46%,达到 2.9 万美元
  • 评分:A-

虽然没能完全达到 3 万美元的目标,但已经非常接近。2 月开始的销量下滑趋势终于止住,让人松了一口气。

为 TinyPilot 定制 PoE HAT 制作原型

刚开始时,我的电子工程合作伙伴已经考虑到了全球集成电路短缺的问题,但实际情况比他们预想的还要严重。

通常的做法是在设计并成功打样后,再批量采购元器件。我们原计划把采购环节提前到刚完成原型设计的阶段。我们试了三次,结果每次在我们花三四天设计电路板期间,元器件就已售罄。现在的新策略是,一旦确定可用型号,就立即采购关键元器件半年的用量,然后祈祷它们能在设计中正常工作。

为我的新书 Refactoring English 撰写大纲

我写的大纲自己感觉还不错,但还没收集读者的反馈。下一步打算向本书邮件订阅用户做一次调研,看看这个大纲是否符合他们的期待。

TinyPilot 数据一览

指标2021年3月2021年4月变化
独立访客5,8055,880+75 (+1%)
总浏览量9,76210,483+721 (+7%)
销售收入$19,782.96$28,880.65+$9,097.69 (+46%)
捐赠$19.92$0.00-$19.92 (-100%)
总收入$19,802.30$28,880.65+$9,078.35 (+46%)
净利润-$352.77$843.56N/A

TinyPilot 的新办公室:有趣的部分

TinyPilot 终于有了第一个正式的办公空间!它离我家步行只要 15 分钟,位置非常好。租约从 5 月 1 日开始,我正在把业务逐步搬过去。

TinyPilot 办公室搬入当天的照片

搬入新办公室的第一天(现在已经整洁多了)

虽然我主要还是在家办公,但拥有一个真正的办公室比我预想的要有趣得多。之前我家越来越像 TinyPilot 的仓库,能把东西都搬到办公室,腾出两个大柜子和一个大壁橱,真是轻松了不少。

让我意外喜欢的另一件事,是为新办公室挑选技术基础设施。下面简单介绍一下我目前的配置:

门锁:Yale Assure Lever

办公室门上的智能锁照片

办公室原本配的是普通的带锁门把手,但我想要一种更方便管理临时进出的方式。而且,万一和员工关系闹僵、不得不分道扬镳,我也不想担心对方手里可能还留着办公室钥匙。

我听说 August 的智能锁口碑不错,但他们只做插芯锁。Yale 在 2017 年收购了 August,并推出了一款搭载 August 软件的执手锁。

不确定是不是受 Yale 收购的影响,安装过程体验糟糕得让人意外。App 的指引含糊不清,遇到任何硬件或 WiFi 问题就直接报错、完全不会优雅地处理错误,每一步设置我至少都试了三遍才成功。

不过全部设置好之后,不用掏钥匙就能开门还是很方便,而且能查看谁何时进出过办公室,也挺酷的。

打印机:Zebra LP2844(打印面单)和 Brother HL-2300D(打印文档)

桌上打印机的照片

我在联网打印机上运气一直很差,尤其是 WiFi 打印机。Brother 这台就是一台普通的 USB 打印机,我用一台专用的打印服务器(见下文)把它共享到局域网。家里用的也是同一款,一直很稳定,所以给办公室选它也很合适。

Zebra 打印机之前在家就在用,这次直接搬到了办公室。它倒是能用,但在 Windows 上那种调节打印浓度的设置现在怎么也调不好,打出来的面单有点发淡,不太清晰。

路由器:在 Qotom Q355G4 迷你主机上运行 OPNsense

:办公室的机柜还没搭好,所以我只能像个邋遢鬼一样把所有网络设备都堆在地上。

Qotom Q355G4 迷你主机的照片OPNsense 界面截图

家里我用的是 Ubiquiti EdgeRouter 4,但今年 Ubiquiti 的表现急转直下。pfSense 是个热门替代方案,但他们似乎在是否开源的问题上并不诚实。我从多方听说,OPNsense 才是 pfSense 那个更守规矩的分支。

Qotom Q355G4 迷你主机是跑 OPNsense 的热门选择,我就在 Amazon 上买了一台。当然,借助 TinyPilot 新增的虚拟存储挂载功能,我全程只用 TinyPilot 就完成了系统安装。

目前用下来我还挺喜欢 OPNsense 的。它的复杂度比 Ubiquiti 高,但比 MikroTik 直观得多。我已经能摸清大致操作,但还没到敢随意摆弄各项设置的地步。

交换机:TP-Link 8口 PoE 交换机

TP-Link 8口交换机的照片

和家里用的是同一款,我一直很满意。不过 PoE 端口很快就不够用了,所以我已经下单了一台 Netgear 16口 GS116LP,打算上架安装。

无线接入点:Ruckus R310

尚未安装的 Ruckus 无线接入点

又是和家里同一款。对于一间只有约 11.6 平方米(125 平方英尺)的办公室来说,可能有点过于高端了。

我喜欢它支持 PoE,只需一根网线就能搞定。家里的 Ruckus 当初配置好后就再也没折腾过,几乎免维护,这点我很喜欢。

打印服务器:在 Pi 4B 上运行 CUPS

Raspberry Pi 打印服务器的照片

打印服务器的搭建出乎意料地简单。我在一台 Pi 4B 上装了 PoE HAT(手头正好有很多),然后安装了 cupsprinter-driver-brlaser

目前打印偶尔会有点小问题,但我还不确定该怪用来打印的 Linux 客户端、CUPS 服务器,还是打印机本身。

跳板机 / 堡垒机:在旧款 Pi 3 上运行 Tailscale

旧款 Raspberry Pi 3 的照片

为了远程访问我的设备,我在一台旧的 Raspberry Pi 3 上安装了 Tailscale,然后又在家里的台式机上也装了 Tailscale,这样只要两台机器都联网,就能通过 Tailscale 的虚拟网络连在一起。

如果需要访问路由器,我就在家里的台式机上运行这条命令:

ssh bastion -L 443:192.168.1.1:443

搞定!这样就能访问路由器的管理后台了。

要管理办公室的打印服务器(franklin)时,我则运行:

ssh -J bastion franklin -L 631:localhost:631

这样就能访问 franklin 的 CUPS 网页界面了。

CUPS 界面截图

通过 Tailscale 在家里的开发机上管理办公室打印服务器

待完成

  • 12U 机柜
  • HP DL380 G7 机架式服务器
    • 主要是想第一次体验一下机柜式服务器。
    • 它非常大,重约 60 磅(约 27 公斤)。
    • 结果可能是个馊主意。
  • Dell Optiplex 3050 Micro(主力工作站)
    • 目前暂时用一台 17 英寸的测试笔记本充当主力机

TinyPilot 的新办公室:烦人的部分

开设办公室最不让人愉快的部分,就是各种法律和保险事务。

以前我雇人都是以“独立承包人”的形式,在美国这是一种相当轻量、手续也不繁琐的方式。但并不是你想把谁定为承包人就能定的,美国国税局(IRS)对承包人与雇员的区分有明确指引。就我需要的岗位而言,IRS 认定这属于雇佣关系。这意味着我得处理一大堆文书工作,还要购买工伤保险。租约还要求我购买责任险和财产险。

TinyPilot 很难套进保险公司常用的行业分类。保险公司所说的“制造商”,通常指拥有可能致命的重型机械的工厂。我们所谓的“制造”产品,不过是把电路板拧进塑料外壳里,但保险公司仍将其视为“制造业”,因而收取很高的费率。

人事方面的事更让人头疼,而且一直拖着没完。我听从其他创始人的推荐选择了 JustWorks,但我逐渐意识到,因为我不是纯软件公司,体验可能会糟糕得多。

以下是我目前使用 JustWorks 的体验:

  • JustWorks 的入职流程中有七个不同的人联系我,问的都是同样的问题,团队内部似乎完全没有协同。
  • JustWorks 藏着一笔巨大的隐性费用:你必须通过他们购买工伤保险,而这一点要到注册流程进行一周后才会得知。
  • JustWorks 默认会寄给你一张劳动法海报,然后收费 50 美元。客户可以选择不接受,但这种锱铢必较的感觉真的很让人不爽。如果我每月为四人团队支付 200 美元,一张廉价海报这种东西理应免费赠送才对。

最让人沮丧的是,JustWorks 在工伤保险上把我的岗位归类为批发仓库工人。我和那些开叉车搬运巨大托盘的人被划进了同一个风险池。尽管我已说明自己的工作完全是在电脑前完成,我工资对应的保险费率却是实际从事设备组装等体力劳动员工的 3 倍。当我试图纠正这一费率时,JustWorks 坚称他们的分类代码是正确的,且拒绝进一步解释。

最后我和客户经理通了电话,向他解释我的工作仅限于写代码和管理人员,把我归为仓库工人毫无道理。他表示理解,并说会去和工伤保险团队沟通。几天后,他转达了这样一条回复:

在此案例中,尽管该行政人员在办公室内从事的是计算机工作,但仍会接触到产品及批发业务的运营。因此客户会得到目前的分类,这种接触使其无法被单纯归为文职员工。

现阶段要换掉 JustWorks 太麻烦,但我计划在年底评估一下 GustoOnPay

“我得让律师过目一下”

重温了 Mike Monteiro 的著名演讲《F— You, Pay Me》后,我第一次请了律师来审阅商业合同。

Monteiro 的建议主要面向顾问和承包人,但他的演讲大部分内容同样适用于创始人。他认为,如果让对方单方面定义合同的所有条款、而自己这边没有律师,就等于拱手让出了巨大的主动权。即使你的公司看起来还小得请不起律师,一位好律师也能通过帮你规避糟糕的交易来收回成本。

我从未签过商业租约,也不知道什么是常规条款,所以这似乎是个请律师的好机会。这给租约流程增加了一周令人焦虑的时间。拖延的原因是我同时在做两件事:第一次聘请律师,以及让他审阅租约。

不过结果还挺有意思。能说出“我得让律师看看这个”这句话,让我感觉自己像个真正的生意人。而且律师发现了租约中的自相矛盾之处,并对我关心的条款——比如网络可用性以及对房东进入租赁空间权利的限制——提出了更清晰的表述建议。

我那次想错了的推广实验

Will Yarborough 是最早评测 TinyPilot 的 YouTuber 之一,我很想和他合作,探索 TinyPilot 更有趣的使用场景。

我们通过视频通话一起头脑风暴,Will 提议用 TinyPilot 来控制单反相机。几乎所有单反都有 HDMI 输出,并提供了一个用于触发快门的简单电子接口。

TinyPilot 运行在 Raspberry Pi 上,而 Pi 有可以通过软件控制通断的电子引脚。如果我能在 TinyPilot 的网页界面上加一个控制其中一个引脚的按钮,Will 就能搭一个电路,把它连接到相机快门上。

这听起来是个绝妙的主意!它可能为 TinyPilot 打开一个全新的市场。而且,虽然已经有人写过用 Raspberry Pi 控制单反快门的博客,但从未有人把它和视频采集结合起来,做进一个精美的网页界面里。

Will 负责了搭建电路和拍摄视频这些重活,这件事在我看来十拿九稳。我只需要给网页界面加个按钮,最多花一小时就够了。

当我真正坐下来实现软件部分时,很快发现远不止加个按钮那么简单。我需要更新 TinyPilot 的安装程序,以加入控制 Raspberry Pi 电子接口所需的库。而且按钮也不能随便乱放——我得重新调整界面布局,把它放在合理的位置。即使有了可用的方案,我和 Will 在测试不同相机时发现各种问题,又反复迭代了好几次。

总的算下来,我在这上面花了大约六小时的开发时间。听起来不多,但如今我一周能抽出几个小时写代码就算幸运了,这个项目占用了我一周多的全部编码时间。

Will 做了一个很棒的视频,但反响却让我们俩都有些失望。截至本文撰写时,数据如下:

指标数值
YouTube 播放量812
邮件订阅新增17
转化率2%

视频发布后,我才意识到自己一开始就问错了问题。虽然确实没人用Raspberry Pi做过这样的方案,但市面上早已有可以通过手机或网页浏览器控制单反的产品。甚至有一家公司还持有一项专利,声称自己发明了通过计算机网络控制相机的想法,如果我推出竞品,他们完全有可能起诉我。

好在我有先见之明,把所有单反相关的代码都保留在了代码库中一个独立的实验分支里。起初我觉得改动很小,完全可以作为常规功能加进正式版 TinyPilot。幸好没这么做,否则会给代码引入大量复杂性,还会让界面多出一个 99% 用户都不需要的功能。

老项目

以下是对我仍在维护、但已非开发重心的项目的简要更新:

Is It Keto

指标2021年3月2021年4月变化
独立访客63,49356,094-7,399 (-12%)
总浏览量141,199123,723-17,476 (-12%)
域名评分(Ahrefs)11.011.00
AdSense 收入$611.99$560.20-$51.79 (-8%)
Amazon 联盟收入$337.29$116.78-$220.51 (-65%)
总收入$949.28$676.98-$272.30 (-29%)

Is It Keto 仍在后台安静地运行着。它延续了去年的模式:随着人们对新年开始的节食计划逐渐失去兴趣,热度也在缓慢下降。

Amazon 联盟收入跌幅偏大,但那只是因为上个月是个异常值

Hit the Front Page of Hacker News

指标2021年3月2021年4月变化
独立访客185114-71 (-38%)
Gumroad 收入$313.63$341.61+$27.98 (+9%)
Blogging for Devs 收入$655.20$109.20-$546.00 (-83%)
总收入$968.83$450.81-$518.02 (-53%)

我的课程仍在小批量销售。上个月因 Monica Lent 的 Blogging for Devs 社区出现了大幅增长。3 月份,Monica 开始将该课程作为会员免费福利提供,并为每一次独立下载向我支付版税。那一波热度现已回落。

很高兴仍有人不断发现这门课程,并来告诉我他们的收获。来自 CourseMaker 的 Chris Samiullah 发布了他的笔记,并表示我的课程帮助他登上了 /r/programming 分区的榜首

Zestful

指标2021年3月2021年4月变化
独立访客480892+412 (+86%)
总浏览量1,3672,132+765 (+56%)
RapidAPI 收入$21.97$40.82+$18.85 (+86%)
总收入$21.97$40.82+$18.85 (+86%)

Zestful 仍处于维护模式。最近咨询企业版套餐的人多了一些,但一听到报价,洽谈很快就没了下文。我报的是更高的价格,以弥补将精力从 TinyPilot 上转移走的机会成本。

不过,很多企业版咨询很难让人认真对待。对方常常一上来就问:“按量付费套餐对我来说太贵了,你们的企业版多少钱?”

总结

完成了什么?

  • 签下了 TinyPilot 首个办公空间的租约。
  • 聘请了两名新员工,以兼职形式在办公室工作。
  • 为新员工整理了约 50% 的 TinyPilot 内部流程文档。
  • 完成了 TinyPilot 1.5.0 的代码开发,新增了虚拟存储和视频流调节功能。
  • 发布了博客文章《How Litestream Eliminated My Database Server for $0.03/month》

经验教训

  • 永远不要在实时讨论中就承诺新项目。
    • 即使看起来很小,实际也可能比想象的复杂得多。
    • 我需要更多时间来思考这项工作是否值得投入。
  • 为变化预留更多时间。
    • TinyPilot 正同时经历两大变化:搬入首个办公室,以及从零开始培训新员工。
    • 我预料到两者都会耗时,但本应给自己留出更多缓冲来应对意外任务。

下月目标

  • 将 TinyPilot 营收提升至 3.3 万美元。
  • 将 TinyPilot 的全部运营迁至新办公室。
  • Refactoring English 的目录收集反馈并进行迭代。

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

评论