Pensieve: 2511
2025-11-29 12:27
所读所观所玩
这个月事情超级多, 所以书只是读完了一本一个叫欧维的男人决定去死, 这本书真的很反差萌, 本来是讨论一个沉重的话题, 故事里面也经常不经意给你展示出生活残酷的一面, 但是里面的各种比喻和展现出爱的那一面, 总会让人又对生活充满期待.
玩游戏来说, 重玩了一下kittens game, 边玩边觉得心里痒痒的, 想做一个仿品出来, 主题就是Diablo-like的刷装备.
丝之歌到了月底才缓慢进展, 过了第三幕的Trobbio和织女, 清掉了翠庭. 还有一群boss需要打. 我偶尔会在Youtube上看一下BlueSR的速通. 今天早上他刚刚又刷新了世界记录, 很厉害. 而且看他一边玩一边解说, 幽默感和人格魅力都是在线的.
影视来说, 看了水形物语, 人物脸谱化比较严重, 缺乏变化. 晚上锻炼时继续在看是大臣系列, 已经看到了第三部, 马上Jim Hacker就要升级当首相了. 非常喜欢这个三人组, 笑点满满, 很好.
最后, 月中整理自己浏览器收藏的时候重看了两个视频:
看到片段中的广州网易大楼的食堂/天台, 恍如隔世.
Canva World Tour
上个月月底的时候, 公司把所有澳大利亚和新西兰的员工全部召集到了悉尼, 参加为期两三天的Canva World Tour活动. 这次公司的行政人员很辛苦, 两三个月内要安排这么多人的机票酒店. 这还不用说要为了Canva Tech Day订ICC和为了Canva World Tour的主题演讲订奥林匹克公园就需要很多组织工作了.
这次酒店不错, 住的不是公司附近的小酒店, 而是Hyatt Regency, 餐标也由$100升级到了$200. 主要的槽点是第一天的机票太早了, 6点半, 所以当我坐进ICC开始听会时就开始打瞌睡. 尤其是Cliff一上台我就彻底睡着了.

另外, Tech Day下午有一个技术讨论里面分享的细节挺有意思. 这个讨论的主题是分享今年年内的那些sev 0(canva不可访问)的原因. 我们对AWS的依赖已经达到了比较严重的程度, 而且已经开始摸到各种瓶颈了. 比如其中一个sev 0是因为某个mysql数据库比较大的时候会有锁表的情况, 又比如ALB虽然看起来是一个无限使用的服务, 但是实际上它内部有一个100台实例的上限, 而我们的流量击穿了这个上限, 从而导致了我们的服务质量下降. 这个也不太能用草台班子理论来怪罪, 而是应该说, 对于任何不是自己维护/编写的软件, 都应该有戒惧之心.
repo merge
这个月主持将一个git repository合并到了另外一个repository的工作, 这儿写一点笔记.
源repo A里面是一群小工具的集合, 目的地repo B是一个更大的monorepo. 两者都用Bazel管理. A里面除了有Bazel外, 打包还使用了nix. 这是因为由于历史原因, A里面有很多功能是用python/bash来实现的, 虽然后面的主流是golang.
为了实现这个repo的merge, 我们做了很久的准备工作:
- 语言统一成golang. 在LLM的出现后, 这个巨大障碍被相对比较容易地克服了.
- 统一两个repo的Bazel版本和规则. 这部分工作量不大, 但是很细碎, 主要是把A的Bazel规则升级到和B一样的新版本. 而且指不定什么时候有个东西就会坏.
- 做一些交叉编译的准备工作, 我们需要在CI的Linux环境下编译出一个可以在macOS下执行的可执行文件.
- 准备一个用来合并的脚本, 比如大部分的go import都需要修改, 代码格式化需要重做, nogo里面的例外需要批量修改和合并.
这个月做的工作主要是:
- 在B里面加上LLVM, 为A的交叉编译做准备.
- 测试前面说到的脚本, 修订代码, 保证能够通过B里面的CI.
- 将所有A的依赖通过其他方式安装. A之前会打成一个nix包, 但是在修改后, A只会只会提供一个二进制的可执行文件, 而所有的依赖关系都是通过Ansible来安装/升级的.
- 更新软件升级的路径, 要由从安装nix包改成安装二进制文件.
- 和A的代码贡献者沟通, 确定切割时间.
- 创建新的CD pipeline.
说起来不多, 实际上杂事不少. 比如为了能保证B里面的CI能够正常工作, 就需要patch一堆代码. 又比如CD pipeline创建好之后, 我们才发现CD pipeline里面构建出来的Linux可执行文件在Linux下运行的时候会segfault, 为了解决这个问题也是花了好久, 绕了些路. 不过现在来看, 算是成功落地了.