我的经历
若要坦诚一点:我总落在别人懒得挖的地方——浏览器内部、文件系统驱动、沙箱、动辄跑半天的构建流水线。
现在在做什么
大部分时间花在 Chromium 上。我是侧重广告拦截与内容过滤的 fork 的维护者之一,也帮助外部团队在其基础上发布自己的浏览器。代码公开—— 我的提交在这里, 想的话可以看看。
过去几年里几件值得一提的事:
- 重写了决定是否拦截每个网络请求的引擎——规则与行为不变,内存占用更小,启动更快。
- 参与过 AOSP 的内容安全相关项目,细节不便多说——很遗憾;那些都是很棒的题目。
- 协助处理面向 Google 的补丁、新人上手,以及小型团队在巨型代码库前离不开的 CI 基础设施。
虚拟化、沙箱、定制 WebView——Android 的这一角我总还想回去折腾。
在浏览器把我整个人吞掉之前
大约有七年,我在若干不太会在同一行简历里出现的领域之间跳转:
- 计算生物学——没错,干过这个。
- 证券交易所——毫秒必争的那种。
- 一款 Windows 安全产品:我写文件系统驱动、在内核层向操作系统 API 注入代码,好让可疑应用在不被察觉的情况下被隔离开。
那段时间教会我同时在脑子里装三件完全不同的问题还不把它们摔在地上——这或许是我最实用的技能。
再往前
还有大约十六年面试里我常会一笔带过的岁月。简短版本:
- 大量 C++;不少 Java 与 Kotlin,主要在 Android。
- 趁人不注意时也写过 Node.js。
- 一整套基于 Mozilla Gecko 引擎的产品。
- 悄悄维护多年的 Thunderbird 扩展,有几千忠实用户从没听说过我的名字。
- IMAP、XMPP、RTP——这辈子够用了。
我常开玩笑说,列举我没碰过的东西可能比列举碰过的更容易。
总之
若有人手里是一大坨复杂软件、出了问题,需要一个愿意读代码而不是瞎猜的人——我努力成为那样的人。
首页上的服务——自动化、定制、安全、构建与测试、版本迁移、培训、上游贡献——本质上就是我把这些年受雇一直在做的事起了正式名称。
不在键盘前的时候…
…多半还是在键盘前——做些小型副业项目。有几个已经长到别人也在用——若想先弄清我怎么接手一件事再花钱,不妨看看 项目页。
在哪里找到我
住在第比利斯,远程工作,乐意聊聊。若有共鸣—— 写信给我。 最坏不过是发现彼此不合适,各自回去写自己的代码。