2026-06-25 04:43:31
一回来就开始忙着上班,趁着中午微波炉加热东西的时候写写。
2026-06-09 14:57:28
开完发布会了,和国内来的开发者朋友们吃了个饭,然后回到家,想说给父母打个电话好了,告诉他们今年我又讲了个 SwiftUI 的 WWDC talk,算是在苹果工作期间的第二个开发者视频了。上上周和他们因为我坚持要跑 cannonball 的事情吵了一架,之后也没怎么联系。
电话接通,和母亲聊了几句,提到 WWDC,毕竟是开发者相关的东西,自然也不是特别明白,然后苹果开发者网站似乎也被墙了,她看我的朋友圈有发的链接但打不开。于是发了个哔哩哔哩上苹果开发者官方账号的视频,算是让母亲看了下我最近几个月到底熬夜在忙啥。
然后缓和了些,话题又转到 cannonball 的事情,母亲说不是不让去,只是担心。我说父母的话对我来说分量不可能不重,而且干什么都拦着,买第二辆车拦着,告肇事逃逸的人也拦着,现在自己开车自驾也拦着,终究到某个阶段,会觉得都快三十了说计划还被拦着有点离谱,要么是父母越界,要么就是我 overshare 了,我应该就像是我周围的朋友们和我建议的一样,“不必什么都和父母说”。于是母亲又说大事还是希望我和他们说的。于是算是差不多翻篇 cannonball 的事情了,只是和我说希望我还是继续分享位置和状态给他们。我说好,但我想开 cannonball 就是图一个自己开心,过去两个月自己劳累加班,最终东西说实话还是公司的,我只想加班结束后干一件更累更疯的事情,但是是我自己想干的事情。
然后母亲和我说她还专门去搜了我的名字,但百度 AI 返回的结果没有太多我在苹果就职的消息,也没有我的开发者视频。AI 还说公开资料里,更确凿的身份是大学本科毕业,即将赴美 NEU 留学的独立开发者,并无苹果任职记录。我看了眼她发给我的截图,明白估计百度训练的语料还是 2020 年获得苹果奖学金时候被爱范儿采访的文章,然后在那之后我就从中文互联网消声觅迹了。
我仍然在这个博客上用中文写日记并且写了十几年,但我的博客在搜索引擎里并没有什么权重,我也不关心 SEO;我仍然用中文发社交网络,但推特也不会被百度收录;因此,百度不知道我在 2020 年的夏天之后收到了 CMU 的 offer,然后鸽了 NEU 的 deferral,也不知道我后面去了苹果实习,然后换了个组正式入职,也不知道我 24 年讲了 SwiftUI 窗口管理的 talk,25 年在 Tantau 的开发者中心做了 Liquid Glass 的 live coding,然后今年讲了 SwiftUI 着色器的 talk,对于百度来说,我仍然停留在 2020 年的夏天。而我的母亲尝试搜索我的名字,试图理解我究竟在苹果公司做什么,除了我提到的“框架”,“同事”,“加班”,“可以便宜买手机”之外,究竟具体每天都在干嘛,但世界并没有答复 - 我掉到了世界的另一边,并且半刻意半无所谓地和中文世界的曝光保持着距离。因此,我在父母心里的形象在我飞去美国后里停滞了下来,而他们的那个世界也在佐证我仍然是六年前那个,对车一点兴趣也没有,也没驾照,只想着写独立软件的二十三岁小孩,而不是一个门口停着一辆跑车一辆卡车,自己换车灯倒冷却液刷 ECU,一个人一天往返过旧金山和洛杉矶的,快要三十的半成年人了。只有我自己知道,自己走了一个圈 - 那篇爱范儿的采访里,我提到写软件就像是搭积木,而今年的开发者 talk 里,我说写软件就像是拼管道,不同的概念,同一个隐喻。
但我仍然希望你能为我骄傲。
2026-06-04 16:06:30

Minolta CL 拍的,可能是第一张,没过片彻底我就抓拍了。这张在 unsplash 上被 feature 了。
WWDC 前的一周的晚上,在家里下了班;然后收到一个工单,然后和工单提交的人沟通了下;然后一个分手了一直没走出来的朋友我有没有空想来家里聊一聊,然后我不置可否最后也没聊;然后有点 emo,想说开车去试下新到的 DJI OSMO Nano 和冷靴 mount,给下周末去纽约打个样,测试下能不能 Nano 作为挂在胶片相机冷靴上的 B roll 设备,但不是很想动;然后打地平线,死活打不过最后几个能让我拿 Mazda Furai 的活动,然后放弃了,翻开冰箱想做晚饭,然后发现挂面被我吃完了,也蓬头垢面的,懒得出去买;然后就点外卖,点了昨天 Apple Park 下班后想去买但忘了的一家公司对面的韩国餐厅的汤;然后我看了会视频,然后饭到了,吃完之后发现老板在 ping 我们几个人,应答了下;然后发现另外一个项目的设计师回我了,因此和他对接了下,把他的需求快速糊弄了下;然后我开始拆尼康胶片扫描仪,就是之前提到过的给 Super Coolscan 4000ED 用的 SA21,螺丝特别小而且紧,用普通修眼镜的螺丝刀根本转不动,只好用老虎钳夹着螺丝刀增大扭矩,把 SA21 拆到主板暴露出来;接着焊了 Nikon logo 旁边的那两个触点,原样装回去,塞进扫描仪,启动老 MacBook Pro 到 Windows 7 里,打开 Nikon Scan 3 发现预览栏里有 40 张了,说明 SA21 被魔改识别成 SA30 了;于是拿了一卷没切片的老胶片,看着扫描仪全部吞进去,然后想开始认真扫描下,结果 Nikon Scan 3 崩溃了;于是启动到 OSX 10.6.8 打开 Nikon Scan 4 试试运气,发现这边也会崩溃,但只要不打开预览栏就还能用;于是就这样让扫描仪读了一卷两年前还是和前前女友去温哥华看樱花的反转片 E100,批处理了十几张,一边喝 Sapporo 一边看扫描结果,感觉效果还可以;然后想起来上上周去 Santa Cruz 交给 HuaXia 的几卷还没洗,和他说洗完可以不用切成六张六张了,直接给我,我测试下。
2026-05-31 16:31:53
没有人喜欢旅途。对于大部分人来说,旅途是旅行中最无聊的一部份,可能是过夜的卧铺火车,和陌生人同处一件车厢,推着零食小车叫买的售货员,以及方便面散发出来的热气;可能是拥挤的红眼航班,昏暗的机舱里机长的广播,短暂沉寂后突然的加力喷气,轰鸣声中夹杂着小孩子因为气压变化而哭闹的声音。即使是和朋友一起开车自驾,即使一开始有说有笑,开到最后总会沉寂起来,只剩下司机在开车,其他人在睡觉。
J 自然也不喜欢旅途,如果能绕过局促的座舱,直接一睁眼就落地东京,落地夏威夷,落地国内,可谓是求之不得的事情。但世界总归有物理限制,因此 J 只得想办法让旅途的过程更开心点,比如拍拍路边的电线杆,或是带着降噪耳机看一些平时没有理由去看的电影。
但再怎么看,能身处旅途中,似乎也是份奢侈。
J 度过了漫长的六个月,这六个月中似乎没有什么真正的旅途。有开得很久去很远的地方的情况,那次 J 的小车被人撞了之后一直趴窝在修车厂,他换着不同的车型花式租车租了两个月,最后一次去机场租车行换车的时候,工作人员很快把他的上一辆车开走了,但迟迟等不到下一辆。最后前台给他了一辆长相奇特的三菱 SUV,织布的座椅,满是硬塑料的中控,导航屏幕已经被磨花到看不清,像是遗落在美国中部稀少人烟小镇的那种便宜租车行的库存。J 出了机场租车行,用力踩着油门轰到最大,慢吞吞地合并到高速的车流里,然后下高速,减速的时候被 CVT 变速箱一顿一错的反馈颠到反胃,总算是开回到家。熄了火,J 坐在车里,实在是气不过,重新启动了车,在一个阴天的下午开去两百公里外的 Elk Grove,那里有他之前在网上看到的便宜福特 SUV。他堵在城际公路上,唱着歌,最后总算在太阳要落山的时候开到了那家车行,在雨中短暂地试了下福特 SUV,在陌生的城区里踩了几下 V8 的动力,开回到租车行和老板说就这辆了。付了款,已经是天黑,J 把三菱的钥匙交给了车行的伙计,拜托他第二天把这辆没人爱的车异地还到本地的连锁租车前台,然后自己坐在新买的福特 SUV 里研究了半天音乐,发现车载蓝牙还是上个时代的产物,只能用来打电话,没办法用来放音乐,于是作罢,在雨中把车开上了城际高速,两百公里回到了湾区。事后 J 回想起这件事情,只感叹自己做了一个明智的决定 - 他的小车在那之后又继续在修车厂等零件等了两个月,而第二辆车彻底结束需要不停去机场租车行换车的问题。J 从来没想过自己会同时有两辆车,但似乎这件事情就自然的发生了,即使在去 Elk Grove 前他已经和他的父母在这件事情上吵得不可开交,但在短暂的两个月里,便宜的福特 SUV 以可靠和耐用让大家都心悦诚服。而那两百公里的路途,也因此更多地像是一个为了生存而必须去开的路,而不是什么浪漫主义色彩的“去 Elk Grove 买新车”的故事,毕竟,J 开回来的是一辆里程表十九万英里,两任车主,五米六长,三排座椅,加上各种税和注册费也只花了五千多块钱的福特老 SUV 罢了。
而在“要有车”这件事情解决后,J 在这六个月里又逐渐解决了很多事情。他开着福特 SUV 在一个工作日的中午去邮局寄挂号信,给交管局申请信息,给撞了小车的肇事者的保险公司申请赔偿。有些信寄回来了,J 获得了关键证据,有些信一直没回复,直到 J 又开着福特 SUV 去邮局,同时给保险公司的三个地址寄信威胁说要投诉,才有了些痕迹。不处理肇事逃逸的事情的时候,J 可能在加班。有的时候加班到凌晨,他会开着 SUV 去麦当劳买夜宵或者早餐。里程数就这么积攒了起来,小车最后也回到了 J 的车库里,但仍然,不管是大车小车,J 都是在开车处理事情而已,买日用品,退货,加油站,银行,搬家,邮局,赴约饭局,都只是路途不是旅途。
六个月之后,完全被人牵着走的生活似乎总归有了些缓和的迹象。肇事逃逸虽然没有真正赔付,但 J 最后还是独立把对方告上了法庭,虽然这中间又有和父母的争执,类似于父母担心上法庭会被报复之类而 J 觉得无稽之谈甚至可笑的情况,但总归是敲定了双方的出庭日期。加班仍然在继续,但 J 知道发布会结束后就可以解放了 - 开发者们蜂拥而至,下载第一个开发者版本,总归会有不如意的这样那样的问题,什么窗口打不开哇,老版本软件崩溃哇,电脑发烫变卡哇,或是大家偷偷用得开心的私有 API 被官方封禁了哇,但不管怎么样,等开发者们愤怒的反馈通过层层工单层级派发到 J 头上的时候,已经是开发者大会过后的第二甚至第三周了,于是 J 得以获得一周即使请假也无需有负罪感的时间。
因此,J 开始盘算要过一个什么样的假期,以及不可避免的旅途里要干点什么。
2026-05-26 15:19:39
刚预订了去纽约的机票和夏威夷的租车,都是开发者大会结束后的第二周。至于怎么从纽约去夏威夷,目前的想法是跑一次 Cannonball Run,从纽约租辆车,Red Ball Garage 出发开到洛杉矶的 Portofino Hotel & Marina,中间会休息,但尽量 48 小时跑完 2800 英里,然后 LAX 飞去 OGG。有点疯的想法,但作为三十岁前仅剩的几个月,干点疯的事情纪念下似乎也是应该的,可能这种“要做点事情”想法的源头还是上次和 Alan 吃饭的时候听他说了类似含义的一句话。
其他似乎没有什么要多说的,开发者大会的准备还在继续,有迟迟解决不了的东西,也有相对推进的比较顺利的部分,还有类似于个人意义上的 One More Thing,六月见分晓。
然后 Minolta TC-1 被我放桌子然后掉下来摔了,相机舱门没办法关上,最后发现可能是外壳摔的有些变形,导致舱门受制于摩擦力没办法弹回来,于是拿了个锤子从侧边敲敲外壳,最后给敲好了。
然后 Minolta CL 拿出去拍了几卷,契机是华夏拉我去 Santa Cruz,于是我就带着相机跟着去了。停好车,我们在沙滩上走,他背着一个大的袋子,里面装了两个网球拍,最后要和我在沙滩上打网球。我想说好神经,但还是打了一段时间。球被打进海浪里,华夏跑去捡起来打回来,我再击球的时候湿透的球溅出泥沙和水来。然后就用 CL 在沙滩上拍了些众人的群像,手牵手一起跑入海浪的女孩们,瞭望塔上搬运东西的沙滩安全员,以及沿着海岸线慢走的老年夫妻。CL 这种全手动的相机的确非常适合这种活,速度快,熟练的话完全不需要看取景器,装模作样地拿着相机再 F8 就可以把周遭事物全给拍下来,前提是我对测光的估计要是对的。
然后在 Santa Cruz 的时候碰到了一个说中文的小哥和他的外国朋友。他上来搭话,手上拿着一台 Canon AE-1 接了自动过片底座,问我们手上是什么,我和他说是 Lecia CL,后面修正为“半个莱卡”,他点头说啊是 Minolta,他一直想要一台。然后华夏手上是他的 Nikon Zf 转接 Canon RF 头,然后三个人就简单聊了几句。中间我看到他的 T 恤是 Boiler Room 的于是问他去过 live 没,他说你也去过嘛,我说没,我只 Youtube 上看过。他很兴奋地说这件 T 是他在 Osaka 场买的,然后指着他身边的外国小哥说他们一起的。于是又和外国小哥打了个招呼。然后我们就各自离开了,非常周日和海边的随机对话。
然后我和华夏跑去吃东西。然后我们坐在吧台区,我问酒保能不能拍他们满墙的酒瓶,等真正开始拍的时候才发现,我的 CL 也没有彻底修好 - 这台的 film counter 似乎卡在 38 张了,即使我手动去戳机身上半身内侧那个负责检测上下对接的 tab 也没办法。因此仍然有些小遗憾,但似乎不是什么大问题,下次回国的时候再找人看就是。
说到回国,总有各种事情,NIW 的 RFE 对策还在和律师商量,然后家里老年人的身体状态也不知道究竟如何,如果回去续 H1B stamp 可能又被审查,然后我八月份还有告肇事逃逸的人定了上庭时间,因此没办法随便就回去,然后在这中间,这届美国政府还在不停地改政策,因此一切都处于来不及和没把握的情况里。
因此有的时候揣揣不安,感觉自己在向未知的尽头打欠条借时间来拖延自己向外界的承诺和责任,但不知道什么时候要还回去;但有的时候又觉得人生也没多久,自己也应该更放纵点,比如就应该跑去创造自己的个人 cannonball 记录,然后在去夏威夷的飞机上敲自己的博客,标题我都想好了,‘How I drove a rental car across America solo in 48 hrs’。
在胡思乱想的间隙里,还有一个版本是我直接在纽约买了一辆破烂 beater 然后开回湾区,比如我还真的在 Craiglist 纽约板块的一堆垃圾里面看到了几辆似乎不错的,里面有四千块的 Saab 95 Wagon(还是 Aero 性能版本),三千的老宝马 E39 540i,以及一辆四千块的奔驰 W126 380。然后在这个版本里的我,估计会打车去看那辆 E39,然后店主看着我从 Uber 下来,径直问他 E39 还在不在,然后老板和我说:
'Yeah it is still here, you wanna go test drive?'
'Sure, and I don't really need a PPI. I just need it to run.'
'OK buddy what you gonna use it for? Uber? Doordash?'
'Cannonball, tonight.'
2026-05-19 12:52:46

周日和朋友们去 Pacifica 吃了一家海边的 Taco Bell,景色不错,可以坐在外面的露台面朝大海吃东西。然后带着 Q3 43 拍了一些东西,结论是这是一台不错但不一定适合我的相机,镜头素质很好,快门很安静,但色彩仍然不习惯,需要我刻意地修图才能获得我想要的效果。有的人可能享受这个拍 RAW 然后导入软件调来调去的过程,但我更习惯把色彩渲染的倾向作为一种非常 opinionated 的个人便好,在拍摄的时候就刻在所有的图片里,我好去关注拍摄的时机,构图或者其他的一些决策。因此这台相机该用还是继续用,但并不能说是跟手。
然后周六去机场接了 Roc,然后之前没想到的是 Roc 和 Alan 也认识,一起吃了个饭,然后谈及 Roc 在新加坡和另外一个网友见面,这个网友和 Alan 也很熟。世界太小了。
然后除此之外就是一直加班,周六和周日都在不同程度地加班,今天周一,过会敲完博客也要继续加班,差不多要持续到 WWDC 发布会前一周可能才会消停些。
不加班的时候就在折腾一些小玩意,比如把 Chipolo Spot 拆了,走了两根线焊到了 Adafruit 6092 上,然后接了一个小的 3.7V 锂电池,这样可以降压到 3.3V 供电的同时 USB C 充电。目的是 3D 打印一个测光表大小的方形壳子好作为冷靴座上的 Find My 设备,弥补市面上只有丑陋的圆形 AirTag 魔改冷靴座或者厚重快装板 AirTag 底座的问题。如果资源允许的话想找淘宝上的店家看看能不能做成金属加工的外壳,以及找找有没有带 MFi 验证过的 Find My 模块,然后更紧凑地集成到一张电路板上。