面试结果
上周那场第二轮面试,周二有了结果:职位不匹配。
从 4 月离职到现在同事/朋友帮推过三家公司。一家给了 offer,薪资太低,拒了;一家没有下文;这一家前后聊了四个月,两个岗位都进了二面,都没有 offer. 这一家前后接触了一位 HR 和八位面试官。感觉得出来,有的是希望我加入的,也有的对我有疑虑。anyway,最终的结论是职位不匹配。
接下来先测试 enx 独立商业化的可行性:把功能做完、部署到 AWS、接上 Stripe 订阅,先在 YouTube 和 X 上推(因为只做了 google 账号登录),看能不能有几个付费订阅用户;跑不通的话就再找工作。
enx: 划词翻译
之前选中一个短语会走词典查询,而后端判定"包含空格就是句子",直接返回一句"句子翻译功能暂未开放",短语永远拿不到释义。现在改成:选中的如果是句子中间的几个词,侧边栏显示这个短语在整句里的含义。像 “hunt down emails”,三个词单看都认识,放进上下文里是什么意思才是要查的。
另外给三个翻译 provider 各补了单测。
enx:上线还差什么
周三花了一天,把 enx 距离上线还差哪些事情列了一遍,写成两份文档,一份是商业化设计,一份是任务清单。
先定义什么叫"上线":在生产环境上,真实用户可以注册、登录、订阅、使用 AI 翻译、被限流、退订,这条链路全部跑通,才谈得上开始推广。
顺序定成三步。先在现在这套 homelab 环境里把订阅功能做完、测通,不用等基础设施迁移——然后把跑通的功能迁到 AWS。最后在生产环境完整跑一遍端到端冒烟测试,作为发布门禁。
几条已经定下来的:
- 计算平台继续用 EC2,不上 ECS 或 EKS。EKS 控制面每月的固定成本,在验证付费意愿这个阶段不划算
- 上线时数据库继续用 SQLite,先不迁 PostgreSQL。现有链路已经跑过,上线门槛越低越好,数据库迁移不是订阅功能的前置依赖
- 域名不换。Cognito 的 callback、CORS、证书、扩展权限都已经围绕现在这个域名配好了
- 全部开源,包括计费规则,继续用 AGPL-3.0
最后一条想得比较久。最初担心闭源可以防止别人用 AI 抄产品,后来推翻了:闭源只能防直接复制代码,防不了照着功能用 AI 重写一遍,而后者才是真正的风险,源码可不可见对它基本无效。定价和免费额度这些数字,用户用一遍产品就能观察到,藏代码也藏不住。真正让我决定开源的是另一件事——找工作这条退路还在,一个有真实用户、有测试和 ADR 的开源项目本身就是求职作品集,这个价值闭源换不来,而闭源换来的那点"防护"本来就是假的。
局域网域名的一秒延迟
周五在准备 enx 的测试环境,发现局域网里的域名访问都带着一段很规律的延迟。查下来是 IPv6 的 DNS 问题。
局域网域名的 AAAA 查询一直返回空。VPN 客户端配的是 IPv4 和 IPv6 都要查,AAAA 拿不到答案,它就判定整条查询失败,级联去问公共 DNS,每个请求因此多花一秒左右。
原来的方案是给 K8s 集群做原生双栈,这次放弃了。两个原因各自独立:一是上游明确不支持在已有集群上原地转双栈,Service 的地址族由 apiserver 的启动参数定死,官方推荐的路径是新建一个双栈集群再迁移 workload;二是之前记录过的那个 kubelet 静态 Pod 的问题,改 apiserver 的 manifest 根本不生效,这次复核发现三台控制面整机重建之后它在第二次编辑时仍然复现,原来"重建可以修复"的结论不成立。
回头看,实际目标只是让 AAAA 有真实答案,并不需要 Pod 和 Service 真的双栈。所以改成加一台独立的 VM,跑 haproxy 做四层透传到 Kong 的 VIP,控制面零改动。DNS 那边改成自动为每个指向这个 VIP 的域名生成 AAAA 记录,而不是手写一条条加——只要查询策略还是 IPv4 和 IPv6 都查,任何漏配 AAAA 的新域名都会重新踩进那一秒。
改完之后 grafana 的访问从 1.077 秒降到 0.026 秒。
公司记账:先尝试一下自己记
公司从 6 月成立到现在业务是休眠的,但记账义务不因为没有收入就免除。找代账公司每月两三百块,这个阶段是纯支出;更主要的是账在别人手里,自己对公司财务没有理解。所以决定先自己记,用 AI 辅助。
工具选了 beancount。纯文本复式记账,格式几十年后仍然可读,git 天然就是审计轨迹,还能用 balance 断言把一部分检查变成强制项。这些对工程师来说是舒适区,反过来说,GUI 财务软件的黑盒数据格式才是长期风险。
代价也很清楚:中国法定报表输出这一层没有任何现成的开源方案。中文 beancount 生态其实相当成熟,但集中在账单导入——支付宝、微信、各家银行的流水转换,将来有流水了可以直接取用;而《小企业会计准则》格式的资产负债表、利润表生成器,没有。这一层得自己写,是这个决定最大的一笔投入。
链路的最后一环本来也不可能自动化:申报通道是电子税务局的网页和客户端,没有对外 API,还有实名和人脸校验。所以人机边界划得很清楚。AI 负责记账分录建议、账本校验、从账本算出各张申报表该填的数字、生成报表;人负责核对每一个数字、手工填报、保管原始凭证。不做的是让 AI 自动登录税务系统提交申报——AI 的输出一律当草稿看,这条不因为它表现好就放宽。
同一天把公司的文档仓库也初始化了,注册流程记录、几份 ADR 和任务 Spec 都收了进去。
pm-toolkit
周六给之前那个朋友的文档校验工具做了几个紧急需求,改完更新了测试环境的部署。
blog
这周写了两篇新的:Spring bean 的生命周期,以及 kube-vip 两种高可用方案的对比。另外给 IPv6 那篇补了前缀委派(PD)一节,正好和周五那件事在同一条线上。
带娃回老家
周日从大连出发,我自己开车带女儿回爷爷奶奶家。上周从杏树港开回大连那段算是一次 dry run,这次是正式的。
还是走国道,没上高速。一个人带娃随时可能需要停车,国道方便。晚上在鞍山住一晚,鞍山差不多正好在大连和四平的中点上,第二天再走下半程。
她一路都在期待奶奶家的菜园子,说要去摘西红柿、黄瓜和茄子。路上无聊了,就找个路边停下来,玩一会儿 Switch 2 — 星之卡比。
2026 W33,辽宁昌图,老四平镇。