在优步行程之间构建AI工具:我如何将碎片时间变成开发黄金
嗨,我叫克里斯。我曾是一名手艺人,现在在温哥华做网约车司机,偶然发现了一些相当不可思议的事情。每天在两次行程之间平均有一个半小时的空闲时间,我一直在自学用手机构建AI驱动的应用程序。在这些零散的碎片时间里取得的成果,坦白说,连我自己都感到惊讶。
我并非自愿离开手艺行业。一把电锯夺走了我的大部分拇指,一切都结束了。做了二十多年的油漆工、水管工和木匠,一个糟糕的瞬间就终结了它。我不会假装自己对此没有怨恨过一段时间。但手艺人的关键在于——即使工具变了,解决问题的思维方式不会变。遇到障碍时,你不会等着别人来修复。你会自己搭建解决方案。
这种思维方式完美地转化到了软件开发中,尽管我承认其中存在权衡。每当我在编程过程中遇到障碍——而且相信我,我经常遇到——我就会围绕问题构建一个工具。就像遇到一条过不去的河流,我就建一座桥。这种方法让我感到无比自由,尽管有时月付订阅可能更高效地解决同样的问题。
手艺人的思维:用代码解决问题
手艺活儿和软件开发之间的相似之处比你想象的更深。在木工中,当你缺少特定的夹具时,你会用边角料做一个。在管道工程中,当你找不到合适的接头时,你会临时制作一个耦合器。这种利用现有材料创造变通方法的行为,会变成第二天性。
但软件开发增加了体力劳动所没有的复杂性。木匠做一个夹具,要么好用要么不好用。如果坏了,一目了然。当我构建一个自定义应用程序时,故障模式更加隐蔽。一个未处理的边缘情况可能会悄无声息地断开连接,一个依赖项可能存在数月未被发现的漏洞,代码本身也会成为一种需要持续关注的责任。
不过,自己构建工具的魅力是真实的。打造一个完全贴合你工作流程的解决方案,针对你的具体需求而非产品经理对用户需求的假设进行优化,这其中有深深的满足感。我一直在纠结的问题是:这种方法何时服务于生产力,何时又变成了伪装成解决问题的过度工程化?
第一座桥:我的自定义SSH客户端
我的旗舰作品是一个名为Terms的iOS应用——目前已是第四个迭代版本。这个SSH客户端经过多年在行程间隙的真实使用而不断演进,如今已完美适应我独特的复制粘贴、语音转文字、AI驱动的编码工作流程。
该应用使用生物识别认证——具体来说是Face ID。当我打开它时,系统会识别我的面部,然后直接带我进入VPS托管环境,直达命令行。Face ID背后的技术非常迷人:苹果的TrueDepth摄像头系统投射超过30,000个不可见的点,创建你面部的精确深度图,利用红外成像甚至在黑暗中也能工作。
能够舒适地坐在手机上,构建具有真正潜力的工具,同时不断修复漏洞和优化——这是一种真正的快乐。我强烈推荐。是的,有一种安静的满足感:曾经用来搭建墙壁和焊接铜管的同一双手,如今正在温哥华的停车场向Linux服务器部署Python代码。
我最喜欢的功能之一解决了移动开发环境中的一个常见痛点。当我遇到导致终端卡死的错误或回溯时,只需向上滑动关闭应用,重新打开,再次通过Face ID验证,就能立即返回命令行继续工作。这种无缝恢复过程为我节省了无数小时的挫败时间,并让我在那些宝贵的行程间隙编码时段中保持动力。
技术实现依赖于在iOS钥匙串中存储加密的SSH密钥,这为配备安全区的设备提供了基于硬件的安全性。连接状态管理是最难处理的部分之一——处理我在城市中移动时不同蜂窝基站和WiFi热点之间的网络切换。我实现了一个连接持久化层,可以检测网络变化并自动重新连接到远程会话,通常无缝到我都注意不到切换的发生。
我能否用现有的SSH客户端实现类似功能?当然可以。但那些应用针对通用场景优化,而我的则专注于我特定的工作流程。自定义键盘快捷键、与iOS语音转文字集成的语音编码,以及用于在手机和服务器之间快速传递代码片段的专用剪贴板管理——这些功能之所以存在,是因为我根据自身确切需求构建了它们。
视频转音频桥:解决内容工作流中的摩擦
我开发的第二个主要工具源于内容创建工作流中的一个具体摩擦点。我需要一种可靠的方法来转录音视频,虽然有网络服务可以处理这一点,但我需要更灵活的东西来应对个人内容库。
我的方法是将视频先转换为音频——比上传大型视频文件轻量得多。多年来我一直依赖第三方应用做这件事,但当iOS更新导致它失效,或者我需要特定音频格式时,我就陷入了困境。于是我构建了自己的转换器。
底层技术依赖于FFmpeg,一个强大的开源多媒体...
Get new posts
Subscribe in your language
New posts delivered to your inbox. Unsubscribe anytime.
Receive in: