TinyPilot: Month 41

Michael Lynch

TinyPilot:第41个月

一句话总结

次日达配送:能有多难?

第一次来?

嗨,我是 Michael(迈克尔)。我是一名软件开发者,也是 TinyPilot 的创始人,TinyPilot 是一家独立的计算机硬件公司。我于 2020 年创办了这家公司,如今它的月营收为 8 万至 10 万美元,并雇佣了另外六名员工。

每个月,我都会发布一篇像这样的回顾,分享我的生意和整体职业生涯的近况。

亮点

  • 在提供次日达配送选项时,我遇到了意想不到的困难。
  • 我参加了 Handmade Seattle 大会。
  • 我尝试了 Zig 和一个开源 AI 聊天机器人。

目标评分

每个月初,我都会公布本月想要完成的目标。以下是这些目标的完成情况:

尽快将生产转移至代工厂

  • 结果:转移现已完成。
  • 评分:A

代工厂现在生产 TinyPilot 设备的质量与我们内部组装时相同。代工厂现在将设备直接发货到我们 3PL 的仓库,这消除了 TinyPilot 拥有自己办公室的硬性需求。

进行五次客户回访

  • 结果:我们联系了三位客户,实际进行了零次客户通话
  • 评分:F

这次,我忘记优先处理这件事。我因参加会议和假期旅行损失了将近两周时间,客服团队的人手也比平时紧张。我本应多跟进团队来优先推进这项工作,因为为了企业的长期可持续发展,我们需要在这方面持续投入。

清理 TinyPilot 办公室中所有旧库存和备件

  • 结果:我决定暂停这一进程
  • 评分:N/A

事实证明,我们的房东对我们何时搬离相当宽松,所以关闭办公室的紧迫性比我想象的要小。想要在不直接把所有东西扔进垃圾桶的情况下清理办公室,也比我预期的要困难。我们有几十件每件价值 1 到 50 美元的物品,但每种通常只有几件。

举个例子,我们有三块用过的 Arduino Uno 开发板。每块的零售价为 28 美元。我们也许能在 eBay 上把这三块总共卖 30 美元,但从头到尾处理这个过程大约需要两个小时。所以耗费的员工工资反而会超过卖板子赚到的钱。

我的新计划是等到快搬离时,公布一个时间,让人们可以过来免费拿走他们想要的东西。

TinyPilot 数据

指标2023 年 10 月2023 年 11 月变化
独立访客8,7006,400-2,300 (-26%)
销售收入$98,896.81$84,055.05-$14,841.76 (-15%)
企业订阅$290.70$290.700
版税$2,609.84$2,824.46+$214.62 (+8%)
总收入$101,797.35$87,170.21-$14,627.14 (-14%)
利润$69,280.58-$5,407.96-$74,688.54 (-inf%)

利润看起来很吓人,但这只是因为转向代工厂让我的支出变得更“脉冲式”。10 月份我没有任何原材料账单,但在 11 月,我有 5.7 万美元的原材料支出。我确实应该将这些列为销售成本,但目前,我只是按简单的现金差额来报告。

8 万至 10 万美元是 TinyPilot 正常的营收区间,我们稳稳地处在这个范围内。我本可以尝试利用黑色星期五/网络星期一,但由于生产切换,我们的库存较低,所以没有足够的库存来降价促销。

次日达配送:能有多难?

在 TinyPilot 的大部分时间里,我们都没有提供隔夜达或次日达配送。

当我们自行履约时,我们的办公室每周六天都有人处理订单,但每天只有一个人值班。我没有提供次日达配送,因为我知道总会有员工生病或休假的情况,所以无法保证一天内完成周转。

当我们将履约切换到第三方物流仓库(3PL)后,我们在人手方面的脆弱性就消失了。3PL 的人员冗余比我们多得多,所以无论如何,订单都应该在一个工作日内发出。

切换到 3PL 意味着我们终于能够提供次日达配送选项了!

复杂的配送技术栈

在切换到 3PL 后,管理配送选项的逻辑变得更加复杂。我们过去向 TinyPilot 客户展示配送选项的方式是这样的:

  1. 我挑选希望 Shopify 向客户开放的配送选项。
  2. 客户在结账时选择一种配送选项。
  3. 我们通过 Shopify 购买与客户选择的配送方式相匹配的邮资。

在这个体系下,Shopify 端到端地控制着整个体验,而且做得很好。

我们的 3PL 使用一个(不太好用的)仓库管理系统 ShipStation。该工具与我们的 Shopify 商店集成,所以现在技术栈变成了这样:

  1. ShipStation 向 3PL 提供其支持的配送选项列表。
  2. 3PL 从这个列表中选择他们想向其客户(TinyPilot)提供的配送选项。
  3. Shopify 向 ShipStation 查询 ShipStation 和 3PL 达成一致的配送选项。
  4. 我从 Shopify 中挑选希望向客户开放的配送选项。
  5. 结账时,ShipStation 会不透明地猜测哪些选项对客户“最合适”,并将配送选项缩减为仅两到三个。
  6. 客户在结账时选择一种配送选项。
  7. 3PL 通过 ShipStation 或其他供应商购买与客户选择的配送方式相匹配的邮资。

有这么多参与方,就会有大量可能出错的地方,也会有大量互相推诿的机会。

我尝试启用次日达配送,却发现当配置从 3PL 冒泡到 ShipStation 再到 Shopify 最后到我这里时,已经没有任何次日达选项可用了。

经过数月的来回沟通,我们将问题缩小到了 ShipStation。他们不显示次日达配送选项,是因为他们认为次日达和两日达配送选项是“相似的”,但两日达选项总是更便宜,所以他们从不展示次日达选项。

是的,你没看错。ShipStation 是一家主要业务就是为你寄送包裹出售邮资的公司,却不明白为什么有人会在两日达更便宜的情况下选择次日达配送。

ShipStation 无法理解为什么有人会在非 Express 选项更便宜但更慢的情况下,选择 USPS Priority Mail Express。

由于在 ShipStation 上遇到太多问题,我决定切回旧的向客户展示配送选项的技术栈。现在,我们只是通过 Shopify 向客户展示配送选项和费率,根本不再向 ShipStation 查询费率。

将 ShipStation 排除在结账流程之外的问题在于,3PL 以更高的 ShipStation 费率购买邮资,而 Shopify 却以更低的 Shopify 费率向客户收取运费。所以,客户可能只支付 30 美元的隔夜运费,但通过 ShipStation 的实际邮资价格却是 100 美元。TinyPilot 必须承担这 70 美元的差额。

尽管如此,这个解决方案让 TinyPilot 能够在不被 ShipStation 愚蠢地覆盖的情况下,提供我们想要的配送选项。而承担 70 美元的额外运费,也比完全做不成这笔生意要好。

选择次日达的客户要求高 4 倍

大多数情况下,3PL 会在一个工作日内发出我们的订单。偶尔会遇到一些情况,需要两个工作日,有时(非常罕见)需要三天。我们在网站上宣传的处理时间最长为三天,但客户似乎并未留意这一点。

90% 的情况下,选择普通陆运或两日达的客户不会对一天的处理延迟说什么。

黑色星期五之后的那个周一,UPS 出现了一个奇怪的问题,他们没有更新所揽收的所有订单的物流信息。仓库坚称 UPS 已经取走了所有包裹,但 UPS 的物流跟踪却什么也没有显示。

UPS 的物流跟踪故障影响了五位要求次日达配送的客户。在 24 小时内,其中两位就发邮件来抱怨延迟。所以,40% 的次日达客户进行了投诉,而在选择陆运或两日达的客户中,只有约 10% 会留意到延迟。

我能理解。当我用次日达下单时,我也急于收到货,如果商家压货好几天,我也会很恼火。

这些次日达客户是一把双刃剑。如果他们愿意支付五倍于陆运的价格来快速收货,他们很可能是会推高 TinyPilot 销售额的大客户。但我也看到,他们也相当挑剔,会给我们的支持团队带来压力,因为他们有着大多数客户所没有的时效期望。

我的首次 Handmade 大会

11 月,我参加了在西雅图举行的首届 Handmade 大会。这是一个面向从事底层软件工作者的独立会议。

以下是我的参会收获。

主流技术栈之外还有其他选择

David Foster Wallace(大卫·福斯特·华莱士)在他著名的 2005 年凯尼恩学院毕业典礼演讲中以一个关于鱼的笑话开场:

有两条小鱼一起游着,碰巧遇到一条迎面游来的老鱼,老鱼向它们点了点头,说:“早上好,孩子们。水怎么样啊?”两条小鱼继续游了一会儿,然后其中一条终于看向另一条,说道:“水到底是什么东西?”

对我而言,网页浏览器就是水。

我太习惯于把软件看作是用户最终通过 HTML 和 JavaScript 来交互的东西,以至于我几乎忘了还有其他选择。距离我上次思考把一切都围绕上世纪 90 年代为渲染静态文档而创造的技术来设计是多么奇怪,已经过去很久了。

但在 Handmade 大会上,我遇到的大多数开发者根本不接触网页浏览器,也不使用我习惯的任何技术。

我遇到了 MobileCode 的创建者,这是一款用于在手机和平板上编写软件的应用。我问他用了什么语言,本以为他可能会说 Flutter 或者更可能是 React Native。当他说“C”时,我惊呆了。

不仅如此,他还说用 C 进行移动开发的体验很不错。他可以直接调用 iOS 和 Android 上的原生图形 API,而不是通过现代框架的多层抽象来工作。

不懈的独立雄心

我最初听说 Handmade 就是因为我关注了 SerenityOS 的创建者 Andreas Kling(安德烈亚斯·克林)。他独自一人、在没有任何第三方库或依赖的情况下创建了最初的操作系统,并在 2021 年的 Handmade 大会上展示了他的项目。

Handmade 还吸引了关于 Zig 的演讲,这是一门我关注已久的独立编程语言。Zig 的创建者 Andrew Kelley(安德鲁·凯利)在 2021 年 做客 CoRecursive 播客时谈到他想用 Zig 取代世界上所有的 C 代码。

Adam(亚当):当你打倒 C 时,世界会是什么样子?

安德鲁·凯利:哦,那很美好。世界看起来基本一样,只是你所有的应用都运行得稍微好一点,崩溃更少,占用内存更少,运行更快……

当教科书试图展示操作系统或嵌入式设备是如何工作时,就会理所当然地用 Zig 作为示例代码,因为那就是每个人的做法。

我觉得安德鲁·凯利这种对软件的雄心和热情非常酷、非常令人振奋,而这正是我去 Handmade 想要寻找的东西。

Handmade 没有辜负我对独立雄心的期待。大会推崇“重复造轮子”的实践。

在软件领域,指责某人重复造轮子通常是一种贬低,但 Handmade 却拥抱这一点。为什么重复造轮子呢?也许你的轮子会比其他人正在用的轮子更好。仅仅通过尝试重复造轮子,你也会对轮子如何工作有更深入的理解。

Cameron Riekes(卡梅隆·里克斯)是一名本科生,他展示了构建一款 2D RPG 游戏的过程。但随后他“顺手”从零开始编写了自己的 3D 游戏引擎

Yasser Arguelles(亚塞尔·阿尔盖列斯)二十出头,正在开发 Tilde,这是一个从零开始的 LLVM 替代品。作为背景:LLVM 是一个已积极开发 20 年的编译器后端。在演讲中,亚塞尔提到他没有编译器背景,但在 Handmade 讨论中最热门的请求之一就是寻找 LLVM 的替代品,所以他想:“好吧,那我来做。”

我还有幸见到了安德鲁·凯利,他人非常好。而这次交流终于激励我尝试编写一些 Zig 代码

对大厂的极度怀疑

我对大会的一个不满是,氛围对大厂的批判到了我认为非理性的程度。

整个大会的叙事基本是,大厂基本上就是毒药。他们生产的一切都有缺陷、臃肿、不可靠且价格过高。

据演讲者称,更多人没有意识到大厂的缺点,是因为大厂控制着软件大会。他们禁止演讲者诚实地谈论大厂软件中的问题。我在几个中型会议上发表过演讲,从来没有人告诉我不能批评大厂,所以这在我听来并不属实。

我对反大厂的观点抱有同情。只要可以,我更喜欢独立技术,但我也认为大厂在很多方面做得很好,并在推动技术前进方面承担了大部分繁重工作。我认为简单地对大厂嗤之以鼻、认为独立的东西总是比大厂的同类产品更好是错误的。

其他回顾文章

如果你知道其他回顾文章,请告诉我,我会把它们链接过来。

业余项目

WanderJest

WanderJest 是我几年前启动的一个网页应用,旨在帮助人们发现附近的现场喜剧演出。我在疫情爆发时搁置了它,但此后一直在断断续续地摆弄它。

WanderJest 最大的挑战之一是获取即将举行的演出的信息。一场喜剧演出的权威信息通常是一张看起来像这样的海报:

本地喜剧演出的海报

表演者不想在制作海报后还要在别处重新输入所有信息,所以我一直在思考如何“免费”从海报中获取信息。

我的第一个想法是创建一个帮助演出制作人制作海报的工具。我为此摆弄了几天,但我向其推销的第一位喜剧演员并不感兴趣。我还没有完全放弃这个想法,但也没有足够的热情去继续迭代。

但现在 AI 图像识别正在进步,我的另一个想法是找到演出的海报,然后使用开源 AI 工具抓取演出信息。

当我读到 Simon Willison(西蒙·威利森)关于使用 Llamafile 的文章时,我意识到现在尝试支持图像的聊天机器人是多么容易,于是我就在海报问题上试了一下。

不幸的是,LLaVA 1.5 对图像的准确率似乎还不够高,无法满足我的需求。当我向它展示一张喜剧演出海报并提问时,它的回答只有约 70% 是准确的:

llamafile 网页界面的截图,其中 LLaVA 1.5 对我关于海报的问题给出了半准确的回答。LLaVA 正确识别了一个名字,但对另外两个名字产生了幻觉,给出了变体。

使用 Llamafile 让 LLaVA 启动和运行很容易,但它在描述喜剧演出海报方面的准确率仍然很弱。

我尝试盲目地调整设置,但没能改善结果。

尽管如此,我很高兴看到开源解决方案在这一领域的进步和竞争。更多详情,请参阅:

收尾

完成了什么?

  • 发布了 TinyPilot Pro 2.6.2
  • 参加了 Handmade Seattle 大会
  • 解决了一个关键供应商的发货导出问题

经验教训

  • 次日达配送吸引了愿意花更多钱的客户,但这些客户也更加挑剔。

下月目标

  • 完成 TinyPilot 许可证检查的设计工作。
  • 为每一批新设备的抽检创建流程。
  • 处理 TinyPilot 的年终税务事务。

原文由 Michael Lynch 发布

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