Haotian Zheng

2025.3.12

 • 

Unsplash 账户的五十万下载量最近达到了,现在有:

  • 29 张首页 feature image
  • 34556658 观看量
  • 501407 下载量

还挺好玩的,无心投稿最后变成某种习惯,然后数字就积累起来了。下个月去日本,希望也能拍到些好照片。

室友出去参加活动,带了些花回来,给我也装了一瓶。
dehancer-1741808110120

2025.3.9

 • 

周中和 Elaine 吃了个饭,原本是两个人复盘提交 YC Spring 25 的事情,但没过 YC 的面试,再怎么复盘终究只是一些虚妄的假想。倒是后来在聊组里的事情和老板的态度,Elaine 一席话给我说得人有点动摇了,觉得这个组不是很健康,有点想跳槽。
可能又躁郁了起来,有的时候觉得自己什么都行,一个能打十个,谁也不需要。有的时候又觉得很难过,希望有人来陪自己。

看了 Mickey 17,是一部烂尾的电影,plot device 塞得很生硬,给我看尬了。听了 一个人的地下室真っ白Kiss Me RightUnderneath The MoonHow Well Do You Know Me?VenusIntro: JANE with FKJURL 湖,和 underachievers

Read Accessibility Info from Electron based apps on Mac

 • 

Chrome 以及众多 Electron 的 app 其实都是支持暴露网页内容给 Mac 的 AX 的,只不过和 Safari 不同,这个模式默认是不开启的,只有检测到 VoiceOver 之类的辅助工具在工作时才启动。如果自己有个 app 想实现类似的功能,就要手动设置 AXManualAccessibilityAXEnhancedUserInterface 这两个 attribute,有的 app 读前者,有的读后者。

func setAttributes(_ app: NSRunningApplication) {
    let axApp = AXUIElementCreateApplication(app.processIdentifier)
    let manualAccessabilityAttribute = "AXManualAccessibility"
    let enhancedUserInterfaceAttribute = "AXEnhancedUserInterface"
    var result = AXUIElementSetAttributeValue(axApp, manualAccessabilityAttribute as CFString, true as CFTypeRef)
    if result == .success {
        print("Successfully set \(manualAccessabilityAttribute)")
    } else {
        print("Failed to set \(manualAccessabilityAttribute): \(result.rawValue)")
    }
    result = AXUIElementSetAttributeValue(axApp, enhancedUserInterfaceAttribute as CFString, true as CFTypeRef)
    if result == .success {
        print("Successfully set \(enhancedUserInterfaceAttribute)")
    } else {
        print("Failed to set \(enhancedUserInterfaceAttribute): \(result.rawValue)")
    }
}

开启后,就能愉快地读一众 Electron app 了,例如 Slack 或者 Notion,还可以画些 bounding box:
Screenshot-2025-03-08-at-12.32.05-AM--2-

28

 • 

28 了。
前一天睡得晚。半夜发现自己在抖,类似于在东京那次失温的感觉,于是爬起来开了电暖器继续睡。八点多起来去公司,才看到挡风玻璃上有猫猫的脚印,估计是前一天猫猫站在车顶了。上了一天班,撑到下午困到不行,到家只是想躺一会,结果又睡着了。起来后想说出去兜兜风,不如去 Santa Cruz 看灯塔,但看了下 CA9 出车祸路上又堵了,遂作罢。到客厅转转,室友学期结束了,所以在放松用电脑打游戏,两只猫坐在旁边看着他打。我也打了会 Xbox,重开了赛博朋克的档。然后就十二点了。也没什么太值得庆祝的东西,最近的状态也不是太坏,按部就班过下去就行。
和网友有一搭没一搭的闲聊,说到对方第一次听 FKJ 的时候是高二,而我同一时间应该已经是大二了,有点不知道要怎么反应。年轻终究是好的,更早的时候就有喜欢的事物,怎么看都是值得真诚祝贺的事情。
前段时间又在和朋友聊说我们老板的老梗,就是他之前开组会时说的十分暗黑的玩笑,“如果我们组全员坐大巴去团建然后出车祸了,SwiftUI Mac 今年就没 feature 可以发布了”。这当然是某种特定的白人幽默,充满着人手不够的无奈,还有些许对个人工作的自豪。不过最近有的时候我倒是挺平静地去思考这个荒谬的死法,觉得倒也不坏 - 就和我最近的生活一样,“倒也不坏”。我说这句话倒没有两年前比较抑郁的时候那种认真思考死法的难过,而是就是单纯的觉得,似乎现在如果真的死,也是个比较合适的时间,可能会被网友和现实的朋友记住几年,我的域名会过期,我的服务器会欠费,我写过的代码被公司的新人重写替代,我拍的照片倒还会留在 unsplash 上被网友下载。大家都在往前进,而我停留在了某个我自认为比较平和的一个阶段,不会继续变胖,不会衰老,不会半夜醒来,不会因为现实生存的刁难而进退两难,除了没办法再等一个 FKJ live,其他的都倒也不坏。
我就是如此看待 28 岁的我的,并不是说我没有活下去的动力,不是这样,我也不会午夜睡不着的时候躁动想去跑山感受森林里的风,我也不会跟朋友喝奶茶聊到想法就立刻在 YC 投递截止前一天交了申请。如果有事情到来,我还是会兴致勃勃地再打一场 hackathon,就像是大学岁月里的日日夜夜一样。但我十分真诚地,也没有负担地说,如果就此停止,我没有什么一定要做,也没有什么特别会后悔的,和 20 岁或者 24 岁的我相比,我似乎终于开始没有那么不安,没有那么想要一定做到什么了。或许这只是我处在某个我仍未看透的周期的一部份,或许两个月后我就会因为我未曾预料的事情继续愤世嫉俗,这都是有可能的,但真的,都不坏。

27 | 25 | 23 | 21 | 20

2025.2.25

 • 

有的时候会没来由的为他人而感到难过。倒不一定是觉得这个人过的辛苦,也不是说这个人有着无尽的苦难。而是有的时候,只是觉得这个人过的小心翼翼的,有着小小的心愿,十分简单,也十分容易满足,也不要求别人如何,而世界的另一端住着的人千千万万,他们雄心壮志,想要改造世界,以影响多少人的生活而自豪,是完全不一样的生活。有的时候会觉得这个世界并不值得小心翼翼的人过下去。

听了 Sade 的两张黑胶,Diamond Life 和 Promise。好像还听了点 NewJeans。

is it summer yet?

 • 

周五晚在 Half Moon Bay 附近拍的,开去那边的时候走了 84 那条路,还经过了 Alice’s Restaurant,停车场一排跑车。湾区还是有好玩的地方的。其实天没这么黄,但我很想早点开始过夏天,于是调成了这种渐变。

原本今天又要去 lazydog 来着,毕竟周六了。因为我东西没写完,所以推到明天喝了。今天是认真写代码的一天。
室友在家打游戏,然后感叹人老了,打游戏打不过对面的了;同事来家里撸猫,聊到一个我们都觉得很强,理论上可以直接去大组无缝写码的人,然后说似乎才二十四五;高中同学给我发十多年前的照片,而我好像也没觉得过去多久。最近似乎总是被提醒年纪这个事情,再加上我不可避免的生日也在到来,我又开始思索这件事情了。
但我并没有足够的思考来支撑我在这里写些什么长篇大论。变化都是一瞬间的事情,个体肉体年轻或不再年轻,陈年往事记得或不再记得,甚至对变老这事情本身在意或不再在意,很多时候我都是后知后觉的。我只有拥有一些片面的记忆,红灯时出租车后座的一瞥,午夜列车上沉睡时火车轨道并轨的响动,以及许多以前做过的或后悔或窘迫的事情。

2025.2.16

 • 

前几天感冒了。请了一天假在家撸猫。周五和老板开了会,东西呢算是大致做出来了,但距离合并还有点距离,因此现在在写。
和网友见面聊天,听他聊才知道有些 AI 服务的操作方式也是内部有分工的,比如一个模型先对问题进行分类,然后需要大量记忆或者推理能力的时候再给另一个模型,或是有图片多媒体的时候也需要单独的模型进行解析来描述成文字,听完觉得还挺像是黑客帝国里或是 TRON 描述的情景,以前我对这种设定都感到迷惑,如果是机器世界,机器的所有资源都应该统一地行动,个体的存在毫无意义。但似乎现实中这些模型的工作方式也体现了和人类世界一样的筛选和分工,整个逻辑也似乎是多个个体的决策合并在一起的输出了。

2025.2.13

 • 

今天请假了。没怎么睡,嗓子有点疼,脸上起了痘,体重也增加了,不是个很好的状态。
公司的东西研究到半夜算是做出来,但实现的思路已经被大组里的资深同事觉得是错的了。SwiftUI 组就这样,有的人非常的 opinionated,而且似乎就应该这样,毕竟招人的时候就看候选人在代码设计上的 taste,候选人进来了,大概率就会想要维持他自己的 taste,进而变成某种坚持。我能理解,但很多时候我做的事情,他们提出的问题我已经考虑过了,因为这样那样的问题才变成现在的思路的。如果我尝试提出我的顾虑,这个事情又会不了了之,除非我单独和人拉一对一的会。我也不想在这种时候变成一意孤行的人 push back 回去,但很多时候我觉得累,我想包容大家的意见,但这件事情本身包含着等待和沟通的元素,对于我来说有点太消耗心力了。

2025.2.9

 • 

周五下班的时候还会想着继续写东西;周六的时候整个人就懒下来了,做些有的没的,也不会想去工作。
昨天又去 lazydog。起因是 huaxia 说去买点东西吃,然后说店都关了,只有 lazydog 还在开,我说那你不如带上我。说是吃点晚饭,但我上来就又开始喝骡子,铜杯里的冰都没开始化,我就已经喝到底了,活脱脱一个酒鬼。
喝酒的时候想起来实习的时候,跟着马老师去三里屯后面的街去喝东西。北京给我的记忆总是那种夏天的傍晚,燥热又新奇。街边的便利店,路上一排的共享单车,天际线映衬的晚霞,给我的感觉和长沙不太一样。夏天的晚上在南锣鼓巷边,四合院一样的地方进去结果是 DJ Live,蹦完的人出来透气,在四合院前庭抽烟。或者跟着同事七拐八拐,进到一个小巷子里,或是一个有些破败的楼里,或是到一个天台上,总是在没预料的地方进了喝酒的地方,然后和马老师一边喝酒一边聊图形学,研究着色器,或者研究 Dribbble 上的动效设计,要么就单纯瞎聊。即使现在,我还是觉得很酷,很有粗野的生命力,并为之后再也没有这种机缘巧合而感到有些惶然。
期待什么时候马老师能来这边陪我喝,这么一算也有个八年了,真的好快。

听了 6 ShotsSunset by Bayside,这两张专辑都挺好的。还听了 VenusNow's The Time星球坠落20229PM in Shibuya,和 Why Not?

2025.2.7

 • 

周五了。原本买了 Soulection 在三番的 live 票,但 huaxia 搬家要一起移箱子,elaine 明天要早起出去玩没办法熬夜,我自己又有些工作上的东西没处理完,最后想说算了,也不是什么非要去的事情,只希望五月份 AYYBO 的 mix 场我不要再鸽了。

湾区最近又在下雨了。上周末去金门大桥拍了些图。

想开个 Youtube 频道,介绍手上用的一些胶片相机。