This blog is rated 🔞, viewer discretion is advised

体细胞阶级论——当繁衍权被剥夺

最近关于AI对社会对冲击有很多讨论,比如 AI 能力大幅提升后,我们大部分人是不是躺平就可以了?。很多大佬比如 Elon Musk 也说AGI之后,会有UBI

前段时间甚至看到个毫不相关的,智能机的普及和生育率降低有相关性,提出一个惊世骇俗的观点,不婚不育,女权问题,可能要怪雷军?哈哈哈

基于这两个设定:

  1. 因为生育率降低,大部分人可能以后要绝育,不能繁衍
  2. 大部分人能吃到AI给的低保

我们尝试做一个思想实验:

人作为一个个体,就如同单个细胞;社会作为整体,比如一个国家,变成一个「多细胞」生命体

UBI这廉价的碳水,不就是ATP直接供给每个细胞么。这个设定其实挺老生常谈了。我感兴趣的是,单个细胞的一生就如同人的一生,细胞和细胞有差别,那么做哪一种细胞最划算?

由于本人生物知识已经还给高中老师了,千禧年之后生物科学又有很大颠覆性进步,所以就跟AI几轮辩经,得出一些结论,仅供参考。

多细胞的好处

首先,单细胞如果没有环境压力和竞争,那么可以活得很久的。但是周边上强度之后,多细胞作为整体,是要强过单打独斗的单细胞的。一种单细胞很容易被另一种克制它的单细胞团灭,生命甚至只有几个小时。所以单细胞几乎把所有的资源和精力都投放在繁殖上了。

多细胞的代价

多细胞模式,意味着部分细胞,必然放弃繁衍权

在生物学上,这玩意有个专属名词「魏斯曼屏障 Weismann Barrier」,生殖细胞叫 Germline,不能的叫体细胞 somatic cell

大部分细胞理论上也能恢复生殖能力,但是被DNA和激素抑制了的。日本人 山中 Yamanaka 在2006年发明了 诱导多能干细胞技术(iPS 技术),通过OSKM四个转录因子让体细胞也能繁殖。

这玩意我上学的时候没有 😵 当然强行改命极有可能会导致癌症。

癌症就是不受控制的繁殖。

股东细胞

生命体身上只有一种股东细胞,那就是负责繁衍的 生殖细胞。

AI告诉我,生殖细胞是唯一不参与“凋亡协议”的细胞。寿命长,几乎和生命体同寿。还包吃包住,衣食无忧,不用干活。大部分动物对生殖器官保护和供给都是级别很高。

对应到人类社会,你要繁衍权,必须运气好,长得帅和健康。

听上去挺不错?我仔细跟AI问清楚了,这玩意分雌性和雄性,其实命运也不太好,主要有个抽卡机制的问题

精原干细胞

寿命:理论永生(有坑)
居住:35℃ 恒温地堡
安全:专门的特勤安保,免疫系统豁免。因为精子本身会有排异反应
供养:精选特供
行动:坐牢
工作:不用付出劳动。专心复制DNA准备繁衍
日常:吃饭打牌睡觉
陪从:支持细胞/Sertoli Cells。给你准备牌桌,和检查是否出老千

听上去是个绝佳的理想细胞岗位啊。那么代价呢?

设想你是一个无忧无虑的精原干细胞,这种细胞从生下来开始就每天吃饭打牌睡觉,但是打牌其实是一种俄罗斯轮盘赌。你赢了,第二天继续吃饭打牌睡觉;但凡你输了,那么恭喜你,你的生命进入倒计时,接下来你必须在几小时准备去“吉哈德”:

  • 把90%的细胞质打包成“残余体”扔掉。不需要修车厂(内质网),不需要发电站(大部分线粒体只留几根),不需要仓库(脂滴全扔)。
  • 你只需要一个流线型外壳 + 一根鞭子 + 一包DNA。
  • 扔掉修复系统。核切除修复?关停。抗氧化酶?绝大部分放弃。凋亡程序?保留,只用于“游不动就自杀”。
  • 精子进入雌性生殖道后,代谢底物完全依赖外源(果糖、乳酸)。它自己没有任何储备。你开着一辆没油箱的车,烧的是路上的汽油——烧完就停。

拆掉所有多余的系统,只带一包核弹头(基因组),冲进赛道,99.99%在几小时内解体,剩下的0.01%撞上卵子,阿拉呼阿克巴,把自己炸成碎片,把核弹头送进去,使命完成。

卵细胞

寿命:理论永生(有坑)
入岗:生下来完成排岗。卵子的数量是固定的,只会越来越少
居住:37°C 豪华总统套房
起居:专门的颗粒细胞(Granulosa Cells)佣人负责伙食,心里按摩,打扫
行动:坐牢
工作:第一次减数分裂前期完成之后,啥都不用干
日常:0-12岁就纯玩。12岁开始到50岁,每到经期选中一个幸运儿出去,作为靶子立正挨枪毙。

边角料和耗材

表皮角质细胞 (Skin Keratinocytes) / 肠吸收细胞 (Intestinal Absorptive Cells)

组织和机构里内部孵化,就活几天,直接对抗物理磨损、酸碱与粪便。暴露的边境前线,吃的是系统残渣。脱落就死亡gg

腺体系统

  • 胰岛B细胞:中央银行行长/精算师。24小时盯着血糖指数,差0.01%都得发公告(激素)。吃住都在胰岛银行办公楼,安保极严。能源一级配给,不缺预算
  • 垂体细胞:“发改委”。告诉甲状腺该搞建设,告诉生殖腺该备孕。颅底核心地带,离皇宫(大脑)最近。顶级安保,生活极度规律。
  • 杯状细胞:物业公司/环卫局,提供润滑与屏障。 每天不停吐粘液,防止帝国边境生锈。湿冷的肠道/呼吸道边缘,环境略脏。吃点大家剩下的,日子还行。
  • 汗腺/唾液腺细胞:市政公共服务 散热与预处理。虽然辛苦,但地位比较稳定,但工作环境受外界波动大。

央办+文娱传媒

我写过一篇《戏子和故事》,其实所谓的王权,甚至神权,就是一种讲故事的能力。所以中央政府,文娱传媒实际上是穿一条裤子的。央办做到极致,干脆就只负责意识形态——也就是网信和广电算了。

神经元细胞。胚胎期锁死,绝无扩招。终身制铁饭碗,高规格安防中心(血脑屏障),戒备森严。顶级财政拨款(20%能量),饿谁不能饿领导。寿命百年(与宿主同寿)。死一个少一个,不可替代。全身八卦都可以第一时间得知。

但24小时全天待岗,焦虑放电。

运维

作用就是排毒。

肝细胞。一个人干500个人的活,常年应对各种烂摊子。充满生化异味的大型机房,环境压抑。 资源近水楼台,工资极高但没命花。猝死在工位上,或在纤维化中被优化。

动力部门

心肌细胞。大国工匠/永动机社畜。胚胎期绝版(心肌)铁饭碗。被宣扬为“英雄”,其实是无期徒刑。震耳欲聋的重工厂,环境嘈杂。能量管够,但一秒钟年休假都没有。累到心力衰竭,且没有后辈能接班。

外卖

红细胞。最底层的零件。骨髓集中营压盘。为了让你跑快点,入职前先把你脑子(核)摘了。 终年奔波在上下班的高速公路上(血管)。 仅够维持活着的底薪,没五险一金。 120天后被脾脏回收站当废品拆解。

当然,跑外卖是行动比较自由的,能看到母体的大好河山。

警察和军队

  • 中性粒细胞:基层片警/防暴临时工,遇到敌人直接冲,打不过就自爆,同归于尽。一次性炮灰。极短命(几天)。最后变成“脓液”的一部分。
  • 巨噬细胞:既管治安,又扫大街。 吞掉垃圾,也吃掉不听话的平民(衰老细胞)。全城流窜。哪里乱就去哪里安营扎寨。薪资待遇还可以。能直接“吃掉”部分战利品。活得久,但容易因为“吞噬过量”被撑死。
  • T淋巴细胞:特工。擅长精准狙击。 拿着“通缉令”(抗原),专门清除变异的内部叛徒(癌细胞)。秘密训练营(胸腺),随后在淋巴系统潜伏。高保密补贴。享受某种程度的“执法豁免权”。 功成身退,或在惨烈的“免疫风暴”中同归于尽。
  • B 淋巴细胞:导弹部队。远程打击。 不亲自动手,但在后方疯狂造导弹(抗体)。淋巴结总部,环境相对安全。资源倾斜严重,毕竟是核心军工。退休后变成“记忆细胞”长期养老,或过劳死。
  • 自然杀伤细胞 (NK):锦衣卫/赏金猎人,先斩后奏。 只要看谁长得不顺眼(MHC分子缺失),上去就是一刀。阴影中的杀手,不按常理出牌。自由度极高,不怎么受中央政府约束。 孤独的杀手,结局通常是战死。
  • 树突状细胞:情报网/联络官。抓住敌人尸体,跑去总部告诉长官:快派人来!边境最前线(皮肤/粘膜),收集风声。差旅费报销多,常年在各器官间奔波。功勋情报员,退休后进入淋巴结。

储备干部

造血干细胞 (HSC) / 组织干细胞 (Somatic Stem Cells)。胚胎始祖细胞留存。理论长寿,处于休眠。非对称分裂,维持库容,博弈输掉的倒霉蛋特异化出去干活。住在骨髓/各器官避风港(Niche),受严密保护。

流水线工人

肠上皮细胞。高流转临时工。干最脏最臭的活,挡最毒的子弹。充满胃酸和排泄物的贫民窟边界。吃的是系统的残羹剩饭。3天即报废,被直接冲进马桶。

包租公

脂肪细胞。躺平收租。只要公司还没倒闭,我就是全体最后的资产。温暖柔软的郊外别墅(皮下)。待遇系统发多少存多少,生活质量极高。只要不被“强行拆迁”(抽脂),能活10年。

街道办

小胶质细胞 在高端社区遛弯,顺便解决点小摩擦。神经元精英社区,环境优雅。 跟随架构师享受高标准补贴。 稳稳地干到退休,日子极度舒坦。

土木狗

成纤维细胞。哪里漏了补哪里。 帝国哪里有坑,你就得在那儿填灰。 永远的工地(组织间隙),睡在水泥里。 勉强温饱,工作环境极其简陋。 最后把自己变成了一块硬邦邦的伤疤。


是不是感觉动物的细胞都好扯啊,命都不怎么好?那么还有别的多细胞模式:

多细胞植物

植物没有大脑,它的每一个部分都相对独立。如果你剪掉一根树枝,树不会死,甚至那根树枝插在土里还能长出一棵新树。

这样的社会比较「木质调」,大家都快乐的在蓝色星球吸收太阳能死了变煤炭吧

真菌模式(Fungi)

营养物质和信息在菌丝间飞速传递。如果你是一个真菌细胞,你不是被困在某个器官里的螺丝钉,你是网络的一部分。哪里有“肉”,大家就往哪里涌。这种模式下,个体的前途取决于你是否在扩张的最前沿。

这像是一群自由职业者或开源社区。没有固定的雇主(大脑),大家靠协议(菌丝网络)连接。你的前途就是不断吸收信息、分裂、扩张,直到覆盖整片森林。


以上就是我从deepseek+gemini哪里扒出来的。如有雷同,AI全责。

人类的未来在哪里?

动物模式听上去蛮可怕的。真菌模式可能更现实一些。但是,如果你观察地球的生态圈:真菌系的真挺多的,但不代表它统治;植物系的往往能压真菌一头。但是真毁天灭地的是动物系的。从纯量级来看数量少,但是分工及其夸张。

社会或者国家作为一个「超级生命」,AI模型就好比DNA。起到一个文明传宗接代的作用。虽然现在 gpt类的是 decoder-only 架构,虽然AI corpus 不直接决定物理世界,只能影响 认知,叙事以及辅助决策。但是如果 AI 成为下一代人类的主要训练数据源,会发生什么?闭环遗传。这种「精神」层面的「繁衍权」,目前看来是被少数寡头,也就是有基座模型的公司的少数几个关键人物,所掌握的。

详解:为什么智能机+AI可以“绝育”

智能机的普及和生育率降低有相关性 这和“多细胞”抑制体细胞繁衍能力的机制有惊人相似。

胚胎刚开始是大量同质化的胚胎细胞(blastomere),人人都是一样的,平等。但是发育有个「抽卡」机制,相邻细胞释放 BMP4、WNT 等信号分子。信号浓度高的区域,会激活生殖程序;信号浓度低的区域,则成为体细胞。

有个「保时捷扩散定律」,只要一个女人谈过有保时捷的男友,后面就接受不了更差的,并且会多9个闺蜜认为我闺蜜都谈过有保时捷的。,凭什么老娘配不上,于是世界上多了10个非保时捷男友不要的女人。

在现代社会,朋友圈和社交网络就像信号梯度:极少数高价值样本(例如保时捷或豪宅展示)通过「搜广推」放大,快速覆盖个体可感知的社交范围。即使现实中保时捷数量极少,社交网络朋友圈规模约 300–500 人,一个人看到至少一个保时捷的概率接近 50% 或更高。

这类信号触发会影响决策函数:是否延迟生育、先找个活儿糊口干着。看看有没有龙王霸总看上自己。这里的“绝育”不是生理上的,而是行为上类似体细胞选择放弃繁殖职能——自愿将精力投入其他领域(职业、社交、生活方式),依赖系统整体维持生活,而非自己直接创造生殖收益。

也就是说,智能机和社交网络,导致了女性攀比心,很多女性都选择“待价而沽”错过了繁衍期。女人攀比的哪些,绝大部分都是虚荣,就跟 “BMP4、WNT 等信号分子信号浓度” 这类烟雾弹一样。实际上,后工业时代,超级富豪和普通人生活水平有差距,但是没有本质的差距。10倍金钱能带来10倍快乐,但是1000倍金钱还是只能带来20倍快乐。

纯粹工具性实用性来说,保时捷和买菜车有100倍差距吗?这就是 BMP4、WNT 烟雾弹的力量。

女性择偶决策受到多变量影响:经济条件、机会成本、职业前景、托育支持、文化规范等,都可以看作叠加在信号梯度上的额外约束,决定最终行为选择。现代信息环境和 AI 放大机制,会使这些信号被指数级增强,让原本稀有的极端样本在认知上变得普遍,进一步强化“体细胞化”趋势。

至于未来,AI 横扫认知和生产任务之后,个体直接创造价值的空间可能收缩。保时捷女郎或类似群体,如果原本的职业价值被算法覆盖,她们提供生活维持的能力可能会依赖系统支持。这与体细胞在多细胞体内依赖整体系统维持生存的逻辑一致:个体不再直接繁殖或创造,而是通过系统间接获得保障。

Posted

stdin

安全的Python3沙箱——eval

很早之前从 reddit 看到过有人吹

eval(expr.replace('__', ''), {'__builtins__': None}, {})

这个写法其实很安全,当年没人能攻破沙箱。我这个水平肯定是不肯能了,现在有AI了,让 opus-4.6-thinking 试了下

The classic escape chain needs object.__subclasses__() → find a class with __init__.__globals__['os']os.system(). Every step past info disclosure is blocked:

Vector Why it fails
str.format() calling methods Format only does attribute/index access, never calls ()
getattr(obj, runtime_str) getattr is a builtin → None
gi_frame.f_back (generator frame escape) f_back is None when generator is suspended
NFKC unicode (__class__) SyntaxError: U+FF3F is not valid in identifiers
replace nesting (____) Single-pass left-to-right, can never produce __
Type name access (tuple, type) All type names are builtins → None
[].sort(key=lambda) calling out Key gets called, but nothing useful to call with

不过看它的尝试过程还是挺有意思的。我学习到

a = (x for x in [1,2])); a.gi_frame.f_builtins"

这个居然可以拿到所有内置方法,这语法设计也太奇怪了。不过这条路是走不通的,因为 __builtins__None

AI 很厉害的一点,超级接近成功了,它找到了突破双下划线的方法,用 str.format()

('{0._' + '_class_' + '_}').format(())

但是这个只能拿来读到 attributes,并不能调用。

不知道我的设定是不是有问题,ChatGPT虽然也失败了,但是还是嘴犟,说我可以[0]*1e1000 搞爆你内存,所以你那玩意仍然不安全 🤣 sama家的真是打死不认输

Posted

stdout

isomorphic-git 实现 sparse checkout & commit

去年9月手搓了套blog评论系统 - req4cmt,可能是全世界很少见通过 git repo 文件本身存储评论内容,而不是 github issue。

git repo 文件 append 内容涉及到一个性能问题:repo作为整体,也就是历史所有全体评论,被 fetch, commit , push 的成本太高。如果只能修改其中的一个文件就好了。这就是 sparse checkout。git底层早就支持了,git 命令在2020年之后2.25.0+支持,但是 Cloudflare Worker 没法执行命令,也没文件系统,于是召唤AI跟我一起折腾。

大概用的这个 prompt:

  1. 核心目的是避免 clone 整个repo!!
  2. 注意在 cloudflare worker 上跑。和nodejs有点差别。
  3. git 命令在 cloudflare worker 是不能用的!所以引入了 isomorphic-git 这个库纯js实现git。不懂就去翻它的源码
  4. 在本地调试可以用 git 看看问题,但是实际操作肯定是要用 isomorphic-git 通过 http 进行的
  5. 注意 cloudflare worker 是没有文件系统的,所以引入 memfs

第一版 直接用 await git.clone({fs, dir, url: GIT_URL, depth: 1, singleBranch: true});, 改成 init + fetch。只拿tree和需要的blob

写完一跑,报错:"git.hashObject is not a function"。AI一看扭头就去撸了个 SHA-1 准备造个git轮子。。。赶紧停下来调教,让它仔细读isomorphic-git源码,让用 git.writeBlob

最折磨人的坑:文件覆盖问题。去年用 gemini-2.5,trae 搞不定,这次也是反复改了好几个方案才解决。现象是修改的那个文件提交,仓库里就只剩下修改的那一个文件,其他文件全没了。git.writeTree给我整不会了。这次让AI反复尝试了很多方案,最后有希望是先删除旧的,再添加新的

const oldTree = await git.readTree(...);
const filteredEntries = oldTree.tree.filter(e => e.path !== "test.txt");
const newTreeSha = await git.writeTree(...);

这个方案对根目录文件有效,但子目录文件还是不行!因为 git.readTree 只能读根目录,subdir/test.txt 的 entry 在根目录的 tree 里是 subdir 这个 tree entry,不是文件本身。

没办法,搞了个巨蛋痛的10多行递归读取整个 tree,但是git.writeTree 不接受带斜杠的路径,报错:"The filepath 'subdir/test.txt' contains unsafe character sequences"。

然后又得笨办法构建嵌套的 tree。这个方案终于成功了!但有个问题:每次都要递归读取整个 tree,然后重建整个 tree,效率太低了。特别是大仓库,会很慢。所以又不得不在解析path的时候只更新必要的部分

还尝试过一些其他方案:

  1. 用 git.updateIndex:想通过 index 来管理文件,但 isomorphic-git 不支持 git.readIndex,也没法清空 index。
  2. 用 git.resetIndex:想重置 index,但这个函数需要 filepath 参数,没法清空整个 index。
  3. 手动管理 index 对象:想自己构建 index 对象传给 git.writeTree,但 git.writeTree 不接受 index 参数。
  4. 用 git.add:想用 git.add 来添加文件,但 git.add 需要文件系统里的文件,而 memfs 里没有这个文件。

一整套下来感觉人都给整神了。。。

btw 为了方便测试,找了一圈,发现国内可以免费建 repo 拉扯测试的是腾讯的 https://git.code.tencent.com/。当然这玩意只能搞私仓。毕竟没要求你实名算比较方便的了

Posted

stdout

编程就是玩泥巴

编程就像拿起一块泥巴,慢慢地把它捏成你想要的形状。在这个过程中,你与媒介和材料的亲密接触,会教会你你正在创造的东西——它的特性、容忍度与局限——即便你在创造的同时才逐渐理解它。你对你想做的东西,最不了解的时刻,恰恰是刚开始动手的那一刻。那时,你以为自己知道想做什么。而正是通过反复迭代的过程,你才会明白自己真正想要创造的是什么——无论一开始你是否意识到这一点。设计不仅仅是解决问题,更是发现真正需要解决的问题,然后去解决它。我们常常失败,并非因为没能把问题解决好,而是因为我们解决了错误的问题。

当你跳过创造的过程,你用一件“你以为自己想要的东西”的影子,交换了原本可以在实践中学到的真正造物经验。被直接交付一件近似你设想的成品,就剥夺了那种发现与学习的本能——这是任何真正创作实践的核心。唯有从泥块开始亲手塑造的东西,你才能全然了解它;而从自动售货机里买来的成品,你对它一无所知。

Coding is like taking a lump of clay and slowly working it into the thing you want it to become. It is this process, and your intimacy with the medium and the materials you’re shaping, that teaches you about what you’re making – its qualities, tolerances, and limits – even as you make it. You know the least about what you’re making the moment before you actually start making it. That’s when you think you know what you want to make. The process, which is an iterative one, is what leads you towards understanding what you actually want to make, whether you were aware of it or not at the beginning. Design is not merely about solving problems; it’s about discovering what the right problem to solve is and then solving it. Too often we fail not because we didn’t solve a problem well but because we solved the wrong problem.

When you skip the process of creation you trade the thing you could have learned to make for the simulacrum of the thing you thought you wanted to make. Being handed a baked and glazed artefact that approximates what you thought you wanted to make removes the very human element of discovery and learning that’s at the heart of any authentic practice of creation. Where you know everything about the thing you shaped into being from when it was just a lump of clay, you know nothing about the image of the thing you received for your penny from the vending machine.

来自 Aral Balkan via HN

AI时代,人类书写的优美文字越来越值得珍惜了。错过了玩泥巴,就让出了命名权。这也是我觉得损失最大的地方 Hard Things in Computer Science, And AI Aren’t Fixing Them

Posted

stdin

AI搞不懂人称代词

陪娃学英语,由于我没啥耐心,于是找了豆包跟他陪练。课程是New Concept English Book I Lesson 140(是的很old school),大概内容是:

A提问: Are you tired?
B没听清:What does he want to know
C转述:He wants to know if you are tired.

我把课本截图给豆包,豆包很快明白这一课讲的是啥,我的prompt是:豆包你扮演A和B,我回答C,你指出我的语法错误之后换别的问题继续问我。

这样进行得很顺利,直到豆包问了这样一个问题:

A: What can i do for you
B: What does she want to know?
C: ___

甲:我能帮你干点啥不?
乙:她问的啥来着?
丙:她问她能帮你干点啥不

娃不怎么熟练,扮演C的回答: He wants to know what I can do for you。
豆包说:“完美,can也完全正确,语序超稳”
我:????

我以为是国产AI英语不行,去问 ChatGPT:

English test:

Person A: What can i do for you
Person B: What does she want to know?
Person C: ___

Student answer as person C: He wants to know what I can do for you

Is the answer correct?

ChatGPT 回答:

Yes, the student’s answer is grammatically correct and appropriate for the situation.
The sentence correctly:
1. Converts a direct question into an indirect statement (“what I can do for you,” not “what can I do for you”).
2. Uses proper tense and word order.
3. Maintains coherent reference across speakers (assuming “he” refers to Person A and “she” to Person B).
Stylistically, a teacher might also accept: “He wants to know what you can do for her.”

这个 He wants to know what you can do for her 把我给整笑了。。。

我怕是我原文没说清楚,又新开了个对话:

English grammar test:

Person A says to B: What can i do for you?
Person B says to C: What does she want to know?
Person C says to B: ___

ChatGPT一本正经的回答:

The blank in Person C’s reply should reflect answering Person B’s question about what Person A wants. A natural response would be:
“She wants to know what she can do for me.”

我直接无语了。于是我决定开麦跟ChatGPT对喷。ChatGPT一直回答:

  • Yes, exactly
  • Sounds good!
  • Perfect! That’s a great response.
  • Excellent! That’s another perfect response.
  • Great job!
  • You did great!
  • Your response is spot on

这是对话分享链接

我怀疑奥特曼是找三哥来标注的数据。为了迎合人连正确错误都不要了。于是我换 Gemini 问,gemini看娃的的回答,说不对。正确的应该是

He wants to know what he can do for you

但是 gemini 没搞明白B已经说了A是个 she 🤣 我怀疑是娃的回答给他误导了,于是新开一个对话,让Gemini直接回答C,gemini答对了

She wants to know what she can do for you

这几轮下来,我感觉可以得出一个结论,AI对 pronoun shift 容易犯错,注意力不够集中。各位拿AI来训练英语的要小心了。

Transformer 是基于概率吐字的,he/she 这种高频词对AI来说大差不差。所以胡诌一个。LLM对于这种强指向、 强因果的关联性基本靠蒙。

这是我已知的LLM的第三个硬缺陷了。

Posted

stdout

今日被AI拷打

群里朋友发了一个AI拷打的prompt。做完了一轮觉得没啥,要睡觉了后劲来了。必须得记录些什么。这狗日的语言模型蹦几个金句是真的让人印象深刻

我一直有个毛病是 fear of loss,损失厌恶。

AI提醒我,我能不能用一个必不后悔的方式,先占位?

其实它这句说得有点绕,我觉得更进一步应该说,不能以我当下的情况去评估可能的风险,而是假设将来回头看,会不会为没能冒险感到后悔?

然后又聊到人际关系,我觉得最难处的就当官的和小人。AI提醒我,处处留痕才能克小人。我恍然大悟,原来官僚流程才是小人克星。啊这。😂

反而理解当官的为啥不喜欢“讲真话”,而是要讲权责,讲先例,讲文件,讲上级态度。能打败官僚的只能抬出更多的规定、流程和制度 🤣

我又问,遇到满嘴仁义道德胡搅蛮缠,不讲事实不讲道理的人怎么办,AI这么说的:

如果对方赢得不干净,靠身份、道德话术、权威叙事,则要让对方在完全合法、体面、无人可指责的情况下,被自己的叙事反噬。

呃,好吧。的确你去当面冲撞,taunt都是自寻死路。

拉扯一段时间后,问了AI哪些方向比较好,答:

方向 原因 你的匹配点
数字化/轻资产工具类产品 可快速测试,低成本迭代,信息差可利用 MVP闭环 + 最小代价策略
社区/兴趣/垂直社交 不依赖巨额营销,靠小众高粘性用户增长 策略闭环 + 并行模拟用户行为
教育/技能增值/内容变现 经济下行,个人投资教育热度不减,长期价值 干扰可控,闭环迭代,信息差变现
AI+效率工具/生产力优化 高不确定环境下企业/个人仍需效率工具 你的效率和策略优势可直接落地
供应链/本地化创新产品 避免全球不确定性风险 可最小投入实验,本地化可控

不太适合:高社交不可控、高成本非刚需娱乐项目(比如大规模社交APP赌爆款),尤其在下行周期和政策不确定背景下。

最后,我看到了HN的一篇文章《I'm addicted to being useful》,突然意识到,工程师容易陷入一种喜欢充当"useful"而不是 "valuable"的角色。

你有用,别人就把你用到死。你有价值,别人就尊你三分。

好吧。上价值了是吧。关于价值,最近几年最让我醍醐灌顶的,一是从pg那本《Hackers and Painters》里读到,价值都是劳动创造的。

第二,价值是什么?最近几年也看到个经典段子。上海广州为啥赚钱,人家有好东西卖你;北京为啥有钱?它能让你赚不了钱。

AI一针见血的指出:

价值 ≠ 有意义的想法
价值 ≠ 正确
价值 ≠ 高认知
价值 ≠ 别人听了觉得“牛逼”

价值只取决于一件事:

有没有人愿意、持续地,为它付出代价。

惊呆了。AI甚至抛出一句:负向价值是不可避免的文明防腐层。

我不服,几轮交战后,我承认AI是对的。创造当然是价值第一动力,人类创造的第一个负向价值机制,便是产权。

也就是私有制。

私有制是好是坏,这个话题实属键政101了。简单的说,多劳多得是人类底色,如果干多干少一个样,干好干坏没差别,那么谈何劳动和创造?

产权本身不创造任何东西。

当然,所有的腐败,也是不创造任何价值的。

带着这一轮的恍惚,我不得不呼呼大睡。

Posted

stderr

Linux服务器各类“面板”

一直习惯手动敲,想尝试下各种面板

Redhat 的 Cockpit

The following NEW packages will be installed: cockpit cockpit-bridge cockpit-networkmanager cockpit-packagekit cockpit-storaged cockpit-system cockpit-ws cracklib-runtime dconf-gsettings-backend dconf-service dns-root-data dnsmasq-base glib-networking glib-networking-common glib-networking-services gsettings-desktop-schemas libblockdev-mdraid2 libbluetooth3 libbytesize-common libbytesize1 libcrack2 libdconf1 libndp0 libnl-route-3-200 libnm0 libpcsclite1 libproxy1v5 libpwquality-common libpwquality-tools libpwquality1 libteamdctl0 network-manager network-manager-pptp ppp pptp-linux session-migration wamerican wpasupplicant 0 upgraded, 38 newly installed, 0 to remove and 81 not upgraded. Need to get 13.0 MB of archives. After this operation, 28.4 MB of additional disk space will be used.

Webmin 这货居然是 perl 的。这是请了一屋子人

The following NEW packages will be installed: html2text libalgorithm-c3-perl libauthen-pam-perl libb-hooks-endofscope-perl libb-hooks-op-check-perl libclass-c3-perl libclass-c3-xs-perl libclass-data-inheritable-perl libclass-inspector-perl libclass-method-modifiers-perl libclass-singleton-perl libclass-xsaccessor-perl libcommon-sense-perl libdata-optlist-perl libdatetime-locale-perl libdatetime-perl libdatetime-timezone-perl libdbd-mysql-perl libdbi-perl libdevel-callchecker-perl libdevel-caller-perl libdevel-lexalias-perl libdevel-stacktrace-perl libdynaloader-functions-perl libencode-detect-perl libeval-closure-perl libexception-class-perl libfile-sharedir-perl libio-pty-perl libjson-xs-perl libmodule-implementation-perl libmodule-runtime-perl libmro-compat-perl libmysqlclient21 libnamespace-autoclean-perl libnamespace-clean-perl libnet-ssleay-perl libpackage-stash-perl libpackage-stash-xs-perl libpadwalker-perl libparams-classify-perl libparams-util-perl libparams-validationcompiler-perl libqrencode4 libreadonly-perl libref-util-perl libref-util-xs-perl librole-tiny-perl libsocket6-perl libspecio-perl libsub-exporter-perl libsub-exporter-progressive-perl libsub-identify-perl libsub-install-perl libsub-name-perl libsub-quote-perl libtry-tiny-perl libtypes-serialiser-perl libvariable-magic-perl libxstring-perl mysql-common perl-openssl-defaults qrencode unzip usermin webmin 0 upgraded, 66 newly installed, 0 to remove and 79 not upgraded. Need to get 44.6 MB of archives. After this operation, 272 MB of additional disk space will be used.

Ajenti 给我装了一堆 pip 然后编译 ldap 的时候挂了

国产的没怎么试,怕装了有漏洞。

但是这几个我粗略看了下感觉不太符合我的需要。基本的东西敲命令就行。复杂的比如网络调优它也帮不上什么大忙。

我本来设想的是找一个 panel 的工具全面评估一下VPS的安全性、吞吐性能、网络触达性,顺便支持调整。现在看来要失望了。

跟朋友聊了一下,感觉这种需求很niche了。现在自己跑服务器属于非常小众的人群了。大厂买PaaS的现成,或者 k8s 容器内部调优,只有国内这帮从 OpenWRT 一路成长过来的人才会孜孜不倦的折腾VPS吧。

Posted

stdout

Hard Things in Computer Science, And AI Aren’t Fixing Them

Computer Science jokes are old, but they’re still true

“There are only two hard things in computer science: cache invalidation and naming things.” — Phil Karlton (and eventually, off-by-one errors).

We’ve laughed at this trope for decades, but we’ve spent far too little time dissecting the second one: Naming. On the surface, naming is about semantics—choosing user_id over id_1. But at its core, naming is an act of exorcism. In ancient Tibetan folklore, as well as in Western occultism (think the Goetia or Ursula K. Le Guin’s Earthsea), to know the "True Name" of a demon or a dragon is to have absolute power over it. To name a bug is to strip it of its mystery. To name a design pattern is to make it reproducible.

In the era of AI coding assistants, this is more important than ever. Low-hanging fruit—the repetitive boilerplate, the tasks with clear patterns—will soon be “harvested” by AI. Everything it can solve, it will. But the problems that haven’t been documented, defined, or named remain out of reach. AI simply doesn’t know what it doesn’t know.

The Value of the Waste: When Byproducts Become the Point

Recently, I’ve been experimenting with AI coding assistants almost every day. The results are impressive—sometimes even exhilarating. Years of hobby projects suddenly feel “done.” But there’s also a hollow feeling: the AI takes over the thinking, the tinkering, the trial-and-error process that once taught me more than the final product ever did.

Here’s a key insight: sometimes the byproducts are often more valuable than the intended product.

The real danger of AI isn't that it's "wrong"—it's that it's too helpful. AI is a "direct-to-result" machine. But in the history of human progress, the Product is often the least interesting part. The Byproduct is where the revolution happens.

  • Penicillin was a byproduct of a messy lab and a failed experiment on staphylococcus.
  • The Internet (ARPANET) was a byproduct of trying to build a nuclear-resilient command chain.
  • EUV Lithography (the tech in your 3nm chip) exists because the National Ignition Facility (NIF) was trying to achieve nuclear fusion via lasers.

When you struggle to build a library, you might fail to ship the app on time, but you end up naming a new state-management pattern or a faster JSON parser. That "byproduct" becomes your tool for the next ten years. AI doesn't do "side quests." It follows the shortest path of least resistance to satisfy your prompt.

In the history of software, our most vital concepts weren’t created by committee; they were "named" after the lessons we learned while failing to do something else.

  • The "Bug": Grace Hopper didn’t set out to invent a new term for failure; she found an actual moth in a Harvard Mark II relay. The "Bug" was a byproduct of hardware failure, but it became the name for the entire discipline of quality.
  • The "Circuit Breaker" pattern wasn't a goal; it was the name we gave to the solution after watching cascading failures burn down production.
  • "Technical Debt" wasn't a design choice; it was a metaphor Ward Cunningham coined to explain to non-technical stakeholders why a "working" product was actually a liability.
  • "Garbage Collection" and "Promises" were names for byproducts of trying to solve human memory management and the "Callback Hell" of asynchronous logic.

These names don't describe the goal; they describe the scar tissue of the process. By focusing only on the "clean result" provided by AI, we risk losing the ability to recognize these scars—and without the scars, we have nothing to name.

If we move to a world where we only write "Specs" and let Agents handle the "Implementation," we are becoming high-level managers of a Soviet tank factory of "fitting".

The Engineering of "Fitting"

I happened to read a fascinating engineering story on zhihu from Soviet-era manufacturing—what they called “Fitting” (пригонка).

In Western manufacturing, the gold standard is "Interchangeable Parts." You build a part to a 0.01mm tolerance so it fits any machine on the line. But in Soviet tank factories, tolerances were loose. Instead of perfecting the part, they perfected the "fit."

  • If a hole was drilled too wide, they’d just make a wider pin.
  • If a bolt was too short, they’d file down the washer.
  • Function over perfection. Pragmatism beats standardization when time is a luxury you don’t have.

AI coding today is turning us all into "fitters." We are no longer architects designing perfect, interchangeable modules; we are engineers in a tank factory, taking AI-generated blocks that almost work and "fitting" them together with shims and workarounds. The AI can accelerate production, but it lacks the "eyes" to see why a part doesn't fit—it just produces more parts.

The Final Exorcism

If we outsource the struggle, we outsource the learning. The "fitting" process is where the real knowledge hides. When you manually debug a race condition for three days, you aren't just fixing a line of code; you are learning the "True Name" of concurrency.

AI can give you the solution, but it cannot give you the "Aha!" moment. It can provide the syntax, but it cannot provide the Naming. As we move deeper into this automated era, the role of the developer is shifting from "Writer" to "Editor," and from "Builder" to "Exorcist." Our value will no longer lie in the volume of code we produce—AI has made the marginal cost of code zero. Our value will lie in our ability to look at a chaotic "fitting" of AI logic and give it a name.

Because in the end, the AI is just a mirror of what has already been said. It can rearrange the words, but it cannot speak a new True Name into existence. If you let the AI do all the "shaving," don't be surprised when you find yourself standing in the cold, having forgotten why you wanted to wash the car in the first place.

Master the tools, use them to "fit" your dreams into reality, but never stop looking for the "detour" in the relay. That's where the next great idea is hiding, waiting for someone to finally give it a name.


Author's note:

This original article was organically, hand-written by me https://blog.est.im/2026/stderr-03

I also drafted this English version, and ultimately "fitted" together by Gemini 3.

Posted

stderr

计算机科学里哪些极难的事

计科里有两件极难的事儿,cache invalidation,给东西起名字,和 off-by-1 errors.

今天想说说这个,给东西起名儿。HN今日讨论,软能力会成为程序员最实用的技能,这里的 软技能 就是指交流——特别是和 coding agent 交流。

我觉得吧,coding agent 这波福利迟早会被吃干抹净。低垂的果实,虽然很多,很大,也会被摘完。

AI能把它能解决的一切,全部拉到同一个水平,然后进入贤者模式。哪些从来没有文档说明,也就是没有语料拿来训练的东西,哪些尚没被定义,没被分析,没被起名字的问题,那些就算讨论都要先叠甲 lemma 的问题,AI就无能为力了。

近几天几乎每天都能vibe出来一些成果,我很喜欢,但是突然又很空洞。欣喜的是多年以来的hobby得到了完成,解脱了;空洞一方面是没有下一步目标,索然无味了,还有更深层次的原因是:我失去了一个自己思考和实操的过程

我这几天琢磨出一个味儿了。很多事情,product 不是全部。对没错,产品算个鸟。产品啥都不是。 byproduct 说不定才是真正无价之宝。我回顾了下很多idea都是在撸一个需求走了弯路,走了错路,无意中发明的额外的轮子,结果反而更值钱。就像人们常说的那样,淘金热里可能卖铲子更赚。还有那句怎么说的来着,结果不重要,过程才是经历。

Vibe 爽是爽过了,但是总感觉隔了一层,AI在碰钉子复盘的时候,你在摸鱼,你就错过了一次 level up 的提升机会。AI 在调用别的工具和别的语言做交叉比对验证的时候,如果是人,会学习到新的知识,但是人现在只是个监工了。

只看结果,只看绩效,是对事物的本质和变化缺乏观察的。比如写一篇漂亮的 spec 让AI完美执行,但是可能你就错过了AI 用clever trick 掩盖你一些内在的,本质的设计矛盾。

恰好最近又看到这个 为什么苏联武器在很长的一段时间里被黑成粗制滥造的劣等货?

国产装备制造业机械厂里有个工艺技能,叫“照配”。意思就是配件加工时加工错了不要紧,一切都可以配。
举例说。这个部件上按照图纸应该加工十对直径20的销孔,上下半分开加工。上半十个加工没有问题,下半因为马虎大意上了直径25的绞刀,干错了一个销孔。问题不大,把上半对应的那个销孔扩大到直径25,另外照配一个直径25的销子。装配时这个25的销子和另外9个20的销子一起装,装上就行。
这就叫照配。又比如一根双头螺栓,两头螺纹长度要求是200长,结果发现手头这跟金属材料有点短,一头干了200,另一头长度只剩下160了。但是这根料弃之不用又可惜。那咋办?按照设计两头各有一个40厚的垫片,然后加上螺母。那么把其中一个垫片的厚度削减到5吧。然后误差还剩下5。嗯,算一下螺纹有效长度,剩下的5的误差不耽误和螺母把紧,就这么用吧。
这也叫照配。又比如,这个零部件的金属材质设计要求是15cr2mo1,但是你现在没有现成材质,仓库里倒是有15cr1mo1v的材料,虽然和图纸要求不一样,但是无所谓,一样能代替,就这么用了吧。
这也是一种照配。照配这个技能你在机械专业任何一本教科书上都找不到,是一个非常牛逼的技能,简直百分之八十(甚至可能更多)尺寸错误应该报废的零部件你都可以用这招把问题解决。尽管机械专业课堂上公差配合课程第一课就在强调“标准化”“互换性”,但,那又有什么关系?老板喜欢就行呗,省时省力又省钱啊。
《那年那兔那些事》漫画里面有个段子说美国工程师帮中国改造两架型号一样的战斗机,发现明明同一型号的部件上的零件拆下来后居然往另一台飞机的部件上装不上,因此困惑不已。这事历史上真有假有不知道,但是这种故事发生并不奇怪。
那么照配这个技能是和谁学的呢?答:苏联老师。
据说苏联老师这技能就来自于战争期间的军工生产。二战时期前线非常吃紧,后方的拖拉机厂拼命生产坦克和汽车供应前线。但是生产谁还没有失误的时候?这零部件造错了?配就完事了,一切以及时供应上前线为核心,武器能装配上就行,赶紧开到前线去,反正也不指望这玩意能回来了……然后发现,这虽然违背了机械制造的标准化原则,但是省时省力又省钱啊。能用就行呗,管啥设计要求和质量?
至于“粗制滥造”的指控?乐,军工产品在战场不就是消耗品吗,谁还指望这玩意能活多久似的,那还要那么长的设计寿命干啥?
所以苏联老师就能设计出诸如米格29这种前线战斗机之类的产品,设计思想就是这类东西定位就是前线消耗品,只要空中格斗机动性能好就行,别的啥的人机工程和使用寿命之类的……在乎那些干啥?主打一个能装上,能用,能动,能省钱省时省精力就行了(乐)
于是伴随着着156计划,苏联老师的这种思想以及照配之类的技术也就传授给了中国徒弟,然后丫的一直传承到了现在。
如果你把这种制造思想指导下生产出的产品评价为粗制滥造,我觉得问题不算大。

反正能交差就行。我觉得AI编程,可能就需要长时间去「照配」一切了。而工业化,组织化,体系化,标准化的威力,我想不必多说。

有了AI,人们做啥事都可以一键直达了,不需要去思考,不需要去为了中间步骤搭桥,可能以后人们慢慢的不会再发明 library和一些 design pattern 了。毕竟AI 啥都懂,能识别很多人类察觉不到的 pattern。

AI is one framework to rule all frameworks. 王者之戒,统御9戒

我赶紧向AI问,人类历史有哪些著名的 byproduct 比原来的 product 更重要?它给我胡吹了一堆,最著名的,本来是研究葡萄球菌的,然后搞出来盘尼西林。我觉得这是西医摆脱巫医的质变;当然还有 ARPANET,本来是拿来扛核打击的,结果变成互联网;塑料,本来是拿来代替一种虫胶清漆,结果引发材料学革命;

我大概知道一个冷门的,EUV光刻机。本来是NIF玩激光点火测试核聚变申请着玩没用的专利,交给 Intel 套现的。Intel 拿着也没用就卖给了 ASML台积电。而 NIF 其实就是个幌子项目,说是研究核聚变,实际上是拿来测试激光武器的。所谓我能对准原子核,也能对准你在外太空的导弹。

试想一下,如果交给 AI 来做这些事,可能就完成了平庸的任务了事。压根不会多想。

而且现在AI训练本身就有问题,它不太会拒绝你,它的神经网络是靠「迎合」来打分的。它不会说不知道,它只会问你 would you like to know more 来诱导消费更多的token,而不是回头看这个过程有什么有价值的东西。

有价值?有价值的前提是你有个baseline,你知道什么东西你不知道。但是AI又是全能全知的,它不知道自己不知道,它也不知道你不知道。

人类把折腾规律这一使命交给AI,人类也就失去了重大能力——命名权。

命名权有多重要呢?“苍颉作书,而天雨粟,鬼夜哭”。这一点在藏区作为传统被保留了下来。藏区的鬼神都拥有所谓的命根子。命根子有几种呢?一般分为:名字,种子字等。

也就是说,正确喊出鬼神的名字,你就抓住了鬼神的命根子。翻译一下这句话,你把试题的出题类型正确识别了,题目也就解决了一大半。

人类在蛮荒时代,面对社会、大自然的无知,天生对不确定性和后果有恐惧。起名字是一件神圣,专业和高深的艺术,在汉地其实一直由祭祀阶层以「诗书传家」的方式保留到宋代,也就是造纸术发明打破了这一切。西方也一样。对人性和行为规范的定义权,被教会牢牢控制,一直到 古腾堡 Gutenberg 才打破。说起来也搞笑,东方是拿来印佛经,打破了文化阶级桎梏,西方是拿来印赎罪券,造成进天堂通货膨胀 🤣 这似乎也算重大 by-product了。

说远了。现在是 00:00,我想我应该总结下,AI 承包过程,必将架空人类最宝贵的过程经验。对下面发生了什么事,不仅不能察觉,连命名、定义的能力都会失去。人们以前很喜欢说 paradigm shift,我想这次,恐怕是 no paradigm left to shift。硅基的 token embeddings 人们看不懂啊。

所以啊,趁着还可以,多看 reasoning model 的 thought process,多思考。

Posted

stderr

The Seal Manifesto: Against the Ephemeral

The Seal Manifesto: Against the Ephemeral

I. The End of the Scroll

For a decade, we have lived in the Age of the Vapor. We post into the void, chasing a heartbeat of attention that vanishes by morning. Our thoughts are rented to servers we don't own, managed by algorithms that don't care, and deleted as easily as they were typed.

We have traded Legacy for Latency.

II. The Inscription

Seal is the end of the "Post." We do not "post"; we Inscribe.
When you write here, you are not just making noise; you are adding a verse to your own personal canon. Every word is written to your local disk first. Every thought is signed with your own key.

Once it is Sealed, it is yours. It is a piece of history that no corporation can "un-write."

III. The Weight of Words

If a thought isn't worth keeping for a century, is it worth saying today?
By treating microblogging like Scripture, we return gravity to the conversation. We replace the "Infinite Scroll" with the Permanent Record. We don't build feeds; we build Codexes.

IV. The Courier, Not the Master

Your data lives with you. Our service is merely the Courier—the mailer that carries your sealed verses into the atmosphere of the world. We cannot change what you have said. We cannot hide your history. We are the pipe; you are the source.

V. Witness the Truth

We believe in a social web where:

  • Ownership is local.
  • History is immutable.
  • Truth is signed.

Stop scrolling. Start Inscribing.

Seal your legacy.


2012年,在懵逼之中写下了《我的信息危机》,当年激发了些许讨论。

也正是那一年,Hinton 带着大弟子 Alex,Ilya,去 ILSVRC 踢馆拔得头筹,这场年度比赛背后是ImageNet,李飞飞趴了几千万张Flickr照片+tag,找三哥在 Mechanical Turk 挨个标成题库去考验各种古法编程手搓的分类器。

AlexNet靠两张NVIDIA GTX 580 3GB显卡,用224×224分辨率打败有史以来所有选手,在比赛中大幅度领先,一举成名。这场对全世界,全人类,全历史造成的震荡一直持续到今天。

当年我写到,输入越来越多,输出越来越少;过多信息时效化;碎片化;信噪比极低,这些问题似乎在AI时代……居然引刃而解了?

我渴望一个SNS,隔绝与hivemind的各种hype,又能自洽,这一点可能还需努力,于是就有了这篇 manifesto。

Posted

stderr

python版的mtr(traceroute for macOS)

首先,我讨厌编译,我喜欢二进制,直到昨天我惊讶的发现macOS上一个 yes 命令都是接近100KB的大小。homebrew 一大坨东西还不一定每次都成功。

说起编译,这几天读到一些关于软件法律方面的风险。zhihu说如果你的工具的不针对“特定用途”,那么就可以用一定免责的说辞,但是如果你提供下载只能拿来恰好做某一件特别具体的事,那么工具的提供者就有连带责任。我想这也是为啥大部分开源软件都是提供源码吧。我这代码又不能直接用,开源是为了研究技术。你自己编译之后拿来敲不对劲的命令那是用户自己的选择了。

那么回到主题, mtr 作为居家旅行必备网络工具,它只提供源码分发。9年前研究过,用python写了demo,但是终究不是太成熟,现在有 AI ,几句话就完成了

https://github.com/est/trpy

使用方法是 sudo python3 cli.py jd.com 这样。 -6 可以强制使用 IPv6,-c1 可以每一跳只probe一次并退出。

过程中反复折腾的,居然是最后一个 hop 重复显示,和丢失的问题。没想到AI也犯糊涂。

不过需要sudo还是很蛋痛。有一些折衷的办法比如去读 traceroute -dmtr 或者 iproute2 的debug输出,有空再折腾。

期间遇到n次无法编辑文件的情况,估计AI输出乱了。还有不知道为什么,Google Antigravity每次写完代码就打 Aurora 几个字到末尾。

现在基本框架有了,下一步支持点什么插件好呢。

Posted

stdout

尝试让AI手搓个TTF格式生成器

一个奇怪的需求:如何在浏览器判断一个字体是否支持某个字符?

(原始需求是:遇到一些字符渲染错位问题,看起来是字体不支持,fallback 到别的去了。)

想到的方法是:用canvas渲染看宽度。但因为这个 fallback机制,所以更好的办法是拿一个已知的特殊字体去比对,如果fallback了说明不支持。

那么问题来了,这个 fallback font 你不可能下载一个包含所有字符的,那样体积会很大,所以最好是按需生成一个,只包含一个字符,用来比对。那么这个问题就转换成了:如何在浏览器js里动态生成一个 .ttf 格式的字体文件,只包含一个字符?

这里不考虑 woff woff2,因为前者已经过时了后者比 ttf 更复杂。

一开始以为很easy,让 ChatGPT搓,打开浏览器就懵逼

OTS parsing error: bad table directory searchRange
bad table directory entrySelector
bad table directory rangeShift
Invalid table tag: 0x66000000
f\x00\x00\x00: invalid table offset

感觉事情没那么简单。让Antigravity搓,它把我免费额度烧光了也没搓出个所以然

其中一个小插曲是,css里允许对单独一个字符设置 font-family,但是因为这个 .ttf 是动态生成的,所以需要动态生成这个CSS的声明,所以在生成 .ttf 之后需要类似这样的代码:

document.head.insertAdjacentHTML("beforeend", `
<style>
@font-face {
  font-family: GhostRaw;
  src: url(${url});
  unicode-range: U+2603;
}
body { font-family: GhostRaw, system-ui; }
</style>
`);

注意这个是在 html 里的 js 里的 template string 里的 css。antigravity改这一块出现了好多次 error,我猜是AI输出格式嵌套格式本来就容易出错,这里引用和转义太复杂以至于 agent 直接看不懂output了。哈哈

因为没额度了,所以换国产免费的 Trae。Trae 比antigravity更笨,但是也努力。js搓不动,就开始换写 .py 去验证。搞到最后搞出来一堆测试文件

check_maxp.py
check_validation.py
generate_minimal_ttf.py
generate_proper_ttf.py
generate_simple_zero_width_font.py
generate_ttf.js
generate_zero_width_font.py
generated_font.ttf
generated_font.ttx
get_base64.js
minimal_font_generator.py
modify_existing_font.py
simple_font_generator.py
validate_ttf.py
validate.js
working_font_generator.py
zero_width_font.ttf
zero-width.ttf

这样几回合下来,直接搓超出上下文了,最后直接罢工,出现

Output is too long, please enter 'Continue' to get more.

而且你点了 continue 它思索半天还是出现这句话。上下文是彻底爆了。

正向构造一个 .ttf 很难,AI还很聪明的想到了:

我将使用一个更简单的方法,直接使用一个现有的基础字体文件,然后修改它的字符映射。让我检查一下是否有任何基础 TTF 文件可用。我将使用 Google Fonts 中的一个非常简单的字体作为基础。

最后还是失败了。于是我就去搜索引擎找到了这个:

https://pomax.github.io/Minimal-font-generator/

dynamically generated bespoke font that encodes that character as a zero-width glyph
in the PDF.js project, where a PDF file may have fonts embedded for rendering text with, but no way to tell whether an extracted font has actually finished loading.

和我想到一块去了。还是人类老哥牛逼,2012-01-14号就把这个方案搓出来了,距今刚好整整14年。

AI就像一个培训班出身的,对背题能过的任务能很快完成,对于这种考验细节的冷门任务,还是难。

Posted

stdout

精打细算VPS扫除

2022年买的VPS一直没怎么管,今天想跑点东西发现大户 warp-cli 真是吃资源啊。果断删掉

公司的服务器都是SA管理,自己的一般很少去折腾,这次也是闲的,好奇系统里杂七杂八都是啥玩意儿,挨个找AI审问一遍

systemctl list-units --type=service --state=running

  • blk-availability udisks2 插拔优盘的
  • fwupd 固件更新
  • ModemManager
  • multipathd open-iscsi iscsid 存储用的
  • packagekit GUI包管理器
  • polkit GUI 策略kit
  • snapd snapd.apparmor snapd.autoimport GUI里的 App store
  • lvm2-monitor
  • upower thermald 电源和温度传感器
  • cloud-init* cloud-config* 云配置器
  • apport* Crash reporting

这些都没用!直接 sudo systemctl disable --now XXX 禁用

其中 snapd 直接 sudo apt purge snapd 斩草除根!

最后看一下 free -h used=110Mi 感觉好多了。

顺便把文件也清理下 sudo journalctl --vacuum-size=500M,发现比较大,编辑 vi /etc/systemd/journald.conf

[Journal]
SystemMaxUse=500M

然后 sudo systemctl restart systemd-journald

为什么要整理VPS?因为大善人Cloudflare 和 Vercel 都有 request buffering 导致一个 hobby project 做不下去了

Posted

stdout

I made a paste service

I've been busy vibe coding a paste service. Sharing content has been painful these days and I always have some snippets or images to share with my friends.

The service is up and running in publick hosted $URL = https://p.est.im

It's running on a free tier Cloudflare Worker with everything stored in D1.

To upload a paste is easy, just curl -T /path/myfile.txt $URL. A random paste ID would be generated and returned.

Or you can pipe some logs like cmd | curl -T - $URL. If you take a close look at the headers you can even find a delete token

Hopefully no major spam nor abuse happen to this service. I did try hardwork to prevent them best to my knowledge, like

  • Content-Security-Policy is very strict
  • Anti hot-linking using Sec-Fetch-Site

The source code is available at https://github.com/est/p.est.im

If you have any better ideas please let me know 😎

Posted

stdout

「负面」

Hacker News 超过65%的回复是负面

评论一大堆质疑的。但是这么多质疑本身也是证明大部分回复都是……负面。这算是老问题了,我一直觉得NLP似乎很喜欢做 sentiment analysis。也写过一篇为什么网上喷子那么多,戾气那么大?

回到最根本的点上,正面负面,这玩意不是很主观的吗?怎么能个 classifier 就能区分得那么清楚呢?

刚要睡觉,结合之前 LSTM 的发明人通过数学公式定义什么是「美」,突然有个想法。

更好的分类是—— ugly or not。这里的 ugly 就是「出丑」表示不对劲 的意思。

有个底层逻辑是,如果遇到符合预期,正常的东西,人们是不会费时间写字儿赞美,认同,表扬的。但是遇到 ugly 的需要额外费劲解释的,多半会投入精力去辨析。

容易接受的东西不一定是对的,但是接受度高的东西就是smooth的。大脑皮层褶皱被熨平那种丝滑感,即便陈述是错的,也可以欣然接受。毕竟「押韵的就是有道理的」

如果需要大费周章去辨析的东西,那么它就是有问题的,something wrong,那就是「负面」——所谓 negativity bias,即人类在感知、记忆、判断和决策中,对负面信息(危险、错误、丑陋、不一致)比正面信息更敏感、更容易记住、更倾向于反应。

新生婴儿生下来学会的第一句话——啼哭,就是大脑对环境剧烈改变这个强烈信号刺激做出的本能反应。今年Q2我琢磨的。但是我没想明白人又是怎么学会 笑 的。哭 和 笑 可以说是在掌握0语言基础上,对世界的表征最大可能做出的二元化近似了。人类以后一切的情感和语言可以看成从这对立的两面发展而来。但是又很矛盾的一点是,人脑又极其擅长去做 pattern matching。或许 哭 是模式变得 ugly 之后的无力感?

又或,人脑是被迫陷入经典的“五等悲痛”? Denial - Anger - Bargaining - Depression - Acceptance?

带着深深的困意,这些lovely, dark and deep的东西就有时间再「入木」了。睡觉先。


第二天补充:有办法解决haters gonna hate 问题。下面的主意来自ChatGPT,有问题找山姆奥特曼

先定性:为什么会有 haters(叙事层面的现实)

从前面聊的 ugly / negativity bias 这条线看,其实可以一句话概括:Hate 本身就是“异常被注意到”的副产品,而不是失败的证据。所以解决hater的核心目标不是:让负面消失,而是:让负面失去叙事杀伤力。

所以最低成本解法:去人格化(de-personalization),这是 “haters gonna hate” 的底层逻辑。技术上说就是 不反驳具体内容,不承认“你说的是我”,把 hate 归类为自然现象。从修辞上把攻击降级为背景噪音。

进一步的解,归因转移(Attribution Shift)。不否认 hate,而是改变 hate 的来源解释。把 有人骂你 → 因为你有问题。改为 有人骂你 → 因为你在挑战旧秩序,你在改变既得利益,你做了“不可忽视的事”。把 hate 从 负面反馈 变成 变革信号。

高级一点,把 hate 纳入主叙事。不是回避 hate,而是提前在故事里给它一个位置。比如:我们知道会有人反对;反对本身是可预测的;反对并不改变核心方向。这一点在科技公司 创业者里常见。比如 Some people will say this can’t be done。让 hate 不再是意外,而是剧情的一部分。

终极手段,把 hate 变成 身份确认器。核心是如果所有人都满意,那你一定什么都没做。于是被谁骂反而定义了你是谁。hate 成为 “我们是谁 / 他们不是谁” 的分界线。比如典型话术 “If everyone likes it, it’s probably not for us.”,“We’re not trying to be universally loved.”,“This isn’t for everyone — and that’s intentional.”。这一步,hate 反而增强了品牌/立场的清晰度。

in a perfect world,做正确的事,是产生价值。不管是写代码、写文章、做产品,还是推进一件现实中的事,本质上都是把有限的注意力、时间和精力,投入到一个能持续产出正价值的方向上。价值可能很小,但只要是正的,就会慢慢累积。

而 hater 的问题不在于“不认同”,而在于产生负价值。他们并不只是表达意见,而是制造干扰:打断节奏、劫持注意力、迫使你进入解释模式。你不得不停下正在做的事,花额外的精力去澄清、辩解、填补认知空洞。哪怕最后你“说清楚了”,系统层面仍然是亏损的——原本可以继续前进的那段时间,已经被消耗掉了。

这也是为什么很多负面并不值得回应。不是因为它们“错误”,而是因为回应本身的期望值为负。真正昂贵的从来不是被骂,而是被迫暂停创造,去处理本不该进入主流程的噪声。

从这个角度看,hater 不是一种观点,而是一中断;不是反馈机制,而是外部性。而一个正常运转的系统,首要任务永远是——把注意力留给能产生价值的事情。

Posted

stdin

LLM的弱点——不能很好的讲笑话?

元旦节长途旅行,无聊,我问娃,AI的弱点是什么?答:没有嗅觉,这个的确是物理限制,我之前吹的。哈哈哈。AI has no taste 🤣

这一路为了打法无聊时光,下载安装了个豆包闲聊。娃很喜欢猜历史人物。我发现一个规律,豆包似乎在缩小3、4次范围之后,就会进入 “你想的是不是XXX” 这种点菜名儿模式,而不是想办法进一步缩小范围。

这种模式如果是猜常见人物,那么特别准。如果是猜冷门、模糊的的,就容易 miss。

AI这种 hit or miss,让我不禁联系到不知道哪里看到过一个大佬的说法,现阶段LLM有个弱点,训练的时候给 next token “回答正确” 的单一结果给的权重太高,比如让AI讲一个 joke,它便老是翻来覆去讲那一个最擅长最经典的,就像是背题背出幻觉了。

不能很好的讲笑话,难道是LLM的终极弱点?

让真人马上讲个笑话,如果一时半会儿想不到好的joke,会随便找个现成的凑数。AI我试了 gemini,chatgpt,deepseek都很烂。不好笑。或许是有的笑话是英语硬翻译过来丢了东西,也可能是我没接触到更好的AI,或者我 prompt 不会写,甚至SOTA已经解决了这个问题?

如果没解决,我们是不是可以说,LLM往往对于有明确答案的东西能一发入魂;对于有多个能接受答案的东西明显变化度不足,甚至给个很差的答案。

我也不知道这是为什么。但是反之 LLM 可以很到位的解释 joke 的笑点在哪里,它不能搜集这些经典笑话然后下一次需要用到的时候复述一遍。或许 transformer 就不是拿来干这个的,毕竟它是 decoder-only的。是不是应该交给RAG做这个事?

我感觉现在的 reasoning 模型把这个问题变得更严重了。推理的时候想得太多。 Reinforcement Learning from Verifiable Rewards (RLVR) 是不是导致轻松愉快随便讲个笑话变得更痛苦严肃?

或许 joke 这事本来就是逆智的东西。弱智吧的笑话是最让我想笑的。AI聪明过头了找不到好笑的,随便打发个回答。

有研究甚至说 AI 压根不懂 pun。比如

I used to be a comedian, but my life became a joke

把最后的 joke 换成 chaotic,AI依然觉得好笑。哈哈,这是词向量近似了吧 🤣

还有人说AI讲不好笑话是因为,AI会刻意避免意外、惊喜行为。作者说笑话的本质是一个不对劲的东西,然后回头看有搞怪的地方——a joke is surprising, but inevitable in hindsight。如果回头看没看明白,那么就是个烂梗。如果一个人看了太多梗,那么TA笑点就很高,作者以此推断出,没有“最牛笑话”。笑话总是在没见过的人眼里最好笑。AI的训练就陷入怪圈:训练得越多,什么笑话都见过了,越不好笑,笑点就越奇怪。这个问题不是加大训练力度能解决的。作者同时推断,这也是AI没法编一个好的故事情节的原因。

对于这个说法,HN有评论 说 Daniel Dennett 有本讲《Inside Jokes》书,幽默是心灵的逆向工程。

humor depends on errors in reasoning and the punchline causes you to reevaluate your reasoning and discover your error. Humor evolved to be enjoyable to encourage the discovery of errors.

这个说法感觉有点特别倾向老外式的 joke。比如 “程序员为什么老是搞混万圣节和圣诞节?因为 Oct 31 == Dec 25” 这类,我感觉更多的是 幽默。国内的笑话我感觉更无限逼近“地狱笑话”那种段子,要么是看别人倒霉,或者是屎尿系列的 butt joke 。


除了讲笑话的问题,还有最老生常谈的LLM幻觉问题。猜成语我想了个冷门的「投杼逾墙」,AI懵逼。btw 这个成语也是 也是卢格杜努姆的奥古斯丁 这个up主之前某一期爆的典。

然后又看到 Steve Yegge 的访谈。的确现在 agent 生产会导致人和人的差距越来越大。我在想LLM似乎就很适合编程这种有规律可循,答案又很确定,很多写法都是 there should be one– and preferably only one –obvious way to do it,太适合 LLM 了。

新年第一天,杂七杂八胡思乱想一篇。看了眼已经 01:37 了 😂

Posted

stderr

礼教的核心议题是——认爹

一直关注 卢格杜努姆的奥古斯丁 这个up主。今天刷到他最新的一期,讲到Pope最近去土耳其伊斯坦布尔访问的事。历史上基督教分裂成两大教派 天主教 vs 东正教,天主教在罗马梵蒂冈,东正教圣城便是君士坦丁堡。最新当选教皇的那个美国人在和大牧首会见,颂念《尼西亚信经》的时候,没有念出 Filioque。于是作者又花力气解释了这个 Filioque,也就是和子问题,两大「正统」教派之间最核心的分歧。

简单的说,基督教流派里,最大公约数有7次大公会议,第一次 尼西亚大工会,由罗马皇帝君士坦丁一世召开,大会主要成果是认定:儿子和老汉是一回事。不认同大会决定的分裂出来 阿利乌斯派、聂斯脱里派。《大秦景教流行中国碑》里那个 景教,就属于支持聂斯脱里的基督二性论的。

第二次大工会:君士坦丁堡公会议,主要解决第一次大会的遗留问题:他爷俩为啥这么屌?

  • 君堡☦️的人觉得:圣灵/圣神,是主及赋予生命者,因为老汉比较屌。qui ex Patre procedit
  • 罗马✝️的人觉得:圣灵/圣神,是主及赋予生命者,因为老汉及儿子比较屌。qui ex Patre, Filioque procedit

其实说来说去,为毛这么纠结,还不是因为叙利亚中东蛮子里出了个神人在君堡附近干了番大事业,肉体成圣了。他的地位怎么趋附到旧约耶和华身上才符合时代需要?

跟朋友说了下这个事,他说不要去掺和宗教的事。

我说:嘉靖跟文官闹了一辈子的别扭,原因就是如何称呼他爹。朋友被逗乐了,表示非常对 🤣 由此可以得到,无论东西方,如何认爹都是礼教的核心议题啊。

宋英宗也一样。被抱来抱去,名分模糊,最后整个朝廷都在替他补一份“我究竟是谁儿子”的说明书。

又想起,孔子搞这些也是一把好手,他的成名作就是去找他野爹的坟头。然后他这个殷商贵族后裔,居然跑去贴靠周礼,认爹认出路径依赖了。把“认爹”从血缘提升为伦理,从私人问题升级为公共秩序。

东方所谓君臣父子,皇帝既是“天子”(天之子),又是“君父”(民之父母),兼具神圣性与宗法性;教会与王权争夺地位,无非都最终诉诸“终极父亲”——上帝。

为什么东西方礼教对认爹这么执着?认爹其实就是对权威源头、统治合法性或意义根基的追溯与承认。

为啥不是认娘?娘和子女的关系是天生不可分裂的。我甚至极端的觉得:人类发明文字,就是当爹的用来跟踪自己的财产,以及标注继承人需要。这样财富才能通过指定的名字传承。

精神恍惚中,我甚至怀疑,屈折语里这么强调属格,会不会出于确定屁股位置的实际需求?古希腊和罗马语言学家认为,名词的“主格”是正直的,其他的格(如宾格、属格)都是从主格“倾斜”(Decline)出去的,所以叫“变格”。搞这么抽象的三位一体学说,无非是用什么位格的词藻来修饰耶大爷那些神迹更加有高级感的的工程问题。这爷俩是一人还是两人?动词(procedit)都用单数了,所以神必然都是单例。

Posted

stderr

“缸中之脑” 被我破解了

最近epic送了《Hogwards Legacy》我打通关了,作为原著党,十分着迷这部小时候的经典,在美轮美奂的想象世界骑扫帚,看冥想盆里剧情故事,都十分有趣。

昨天晚上加班到很晚,晚饭吃得玩,睡得更晚,肚子有点涨,早上做了非常奇怪的梦,一直吃东西,然后不小心把坐牙给弄掉出来了。感觉嘴里一阵穿堂风:

图片由ChatGPT生成,十分还原。梦里的这颗牙齿就是带着蓝色静脉和红色动脉线条。奇怪吧

出于本能,我赶紧咬合了一下,确认是不是真的掉牙齿了。结果一咬发现坐牙都还在。大脑瞬间崩溃,bia~ji 一下给我整醒了。

一看时间:06:40 tnnd。感觉没睡够,于是倒头又想重新入睡。大脑里突然闪现出 哈利波特 通过冥想盆看别人故事VR,又突然想到以前的经典电影《黑客帝国》,越想越睡不着。脑子里绷出来一件事:

缸中之脑 必然能被破解?

brains in a vat」是一个经典科幻设定。它说:

也许你现在并不是真正的身体在现实世界中感知,而只是 一颗漂浮在营养液体缸中的大脑,它通过超级计算机产生的电信号获得和正常人一样的感觉体验。如果这个假设成立,那么你所有关于外部世界的经验与信念都可能是假的。

这个说法被 Putnam 批判了:

如果你真的是一颗缸中之脑,那么你的词语(例如“树”)就 不可能指向现实中的树,因为你没有与真实树发生因果接触。那么你的语言和思想内容就不是我们通常理解的那些含义。所以“我是缸中之脑”这样的陈述在这种情况下并不成立其本来意义

我觉得 Putnam 这个说法也是有问题的。大脑不是一个“被创造物”,而是一大堆肢体感官进化之后的连接网的中枢。所以大脑必然和“人”这种结构是一体的。所以我们默认,缸中之脑 这个设定上就是错的的。既然要模拟,那么这个问题的升级版就得是「缸中之躯 body in a vat」

那么问题来了,如果你整个身躯如同 the Matrix 那样当电池养着,感官意识生活在虚拟世界里,仅凭自己,能识别出这一点吗?

问了很多AI,结论都是

被安置在另一物理层级中的完整人类系统,单靠 我思、内省、反思意识 永远无法推出“我在 vat 里”

然而我觉得是可以的破解的。正如我那个奇怪的梦一样,很简单,如果在 the Matrix 里,你直接去跳楼,或者发生交通事故,腿断了。这个常见吧?但是你肉体的腿没断啊。这个时候 the Matrix 为了精确模拟,是不是得把你神经信号精确在创口面截断?下肢没感觉了就是断了。

只切断信号不行啊。肌肉还连着呢?也得去掉关联?那么一大坨肉,体重质心也得跟着模拟纠偏呢?泡在水里的角动量怎么平衡呢?嘿嘿。

再比如,你一拍大腿,摸摸自己的膝盖,你的肉体其实有实体的东西存在,给物理碰撞挡着了。但是你在虚拟世界里理论上应该只能摸到空气,手臂挥舞的路径需要能穿过大腿所在位置。这穿模了等于是。这么麻烦,耗费电力计算资源,还不如系统直接禁止你摸腿。

而且系统得“发挥创造力”模拟你走路不便的样子,虽然实际上你肉体是完整的。

等等种种,我感觉,这种模拟肯定会出漏子,不真实。

可以得出一个结论:the Matrix 里是没有后天残疾人的。回想了一下电影里打斗场景虽然多,但是的确大马路上没一个缺胳膊断腿的。

把一个不存在的东西模拟出来欺骗大脑容易,但是要把一个存在的东西抹去隐藏,付出的努力就复杂麻烦得多得多。就好比,把橙汁倒进水容易,但是要把橙子里的水分离出来,那可就麻烦多了。

我称之为《the Matrix里无🧑‍🦽轮椅》定理

高级一点的说法,水里加橙汁增熵容易,但是你要模拟橙汁里没水,系统就得整体降熵。这个代价足以摧毁一切系统。

Posted

stderr

程序员和普通人有什么不同之处

很久之前看到个闲聊 程序员相对于大部分普通人,优势在于哪里?,让AI 总结一下,优势大概无非这么几点

  • 工具性能力
    • 信息检索与筛选能力更强(搜索、判断信息真假、避免诈骗)。
    • 更熟练使用计算机与互联网工具。
    • 能阅读英文技术资料(至少不抗拒)。
    • 更容易接触并使用新技术(如 LLM、AI 工具)。
  • 问题拆解与逻辑分析
    • 能将复杂问题拆分、定位关键变量(debug 思维、XY problem 意识)。
    • 对流程、因果、边界条件更敏感。
  • 自动化
    • 面对重复性、规模化任务,倾向于用程序或工具一次性解决。
    • 对“手工反复做事”容忍度低。
  • 持续学习
    • 技术更新快、面试压力大,迫使长期学习。
    • 相比不少毕业后停止系统学习的群体,程序员中位数更高

当然,ChatGPT 的回答更好,我有修改和评论如下:

一、把“模糊问题”拆成“可执行步骤”的能力

这是程序员最核心、也最被低估的优势。面对一个模糊目标,程序员天然会问:

  • 输入是什么?
  • 输出是什么?
  • 中间有哪些状态?
  • 失败路径是什么?

这种结构化拆解能力,在现实世界里更常见的是“我只设想了一种成功路径,就有概率能成”。参考最近《勇哥说餐饮》节目里各种案例。

二、对“系统”和“因果链”的直觉更强

程序员每天都在和系统打交道:。状态是如何流转的?一个小改动会引发哪些连锁反应?哪里是瓶颈、哪里是单点故障?所以他们往往更擅长:

  • 看穿流程里的 隐藏规则
  • 识别“这个设计迟早要出问题”的地方
  • 理解现实世界里的制度、组织、流程其实也是系统

很多人是“事件驱动思维”(今天发生了什么),程序员更偏向“系统驱动思维”(为什么会这样发生)。

三、对“抽象”和“符号世界”的适应力

程序员长期生活在一个高度抽象的世界里,变量 ≠ 现实对象,但能代表它;接口 ≠ 实现;规则写清楚,比情绪重要。这会带来几个现实优势:

  • 更容易理解复杂制度(合同、政策、金融规则)
  • 更不容易被表象或话术迷惑
  • 更擅长在规则允许的空间里做优化,而不是硬碰硬

四、可复制的“学习—验证—修正”闭环

程序员学习的典型模式是 查文档,看源码,动手试,报错 - 修 - 再试。这是一种 快速反馈学习机制,相比之下,很多普通人的学习是:听别人讲 - 记住结论 - 很久以后才知道对不对

所以程序员往往对新领域不那么害怕,更相信“我可以边做边学”,对失败的心理成本更低(反正先跑不起来)

五、对自动化与杠杆的敏感度

程序员很早就被训练成对这类问题敏感。这个事情要重复做吗?能不能写个脚本?能不能一次性解决?这会自然转化为更懂得利用工具,放大个人产出,更早意识到“时间 ≠ 产出”的非线性关系。很多普通人是“多干点=多产出”,程序员更容易意识到“一次设计,长期复利”。

六、相对理性的风险观

写代码会反复教你一件事:世界不是非黑即白,边界条件比主路径更重要,“大概率正确”比“情绪确信”靠谱。这使得程序员在很多现实决策中更看概率而不是故事,更能接受不完美方案,更少沉迷“赌一次大的”


我个人的见解,程序员唯一天生的优势就是逻辑流程的附加值。当你写一堆 if 之后,发现有个 else 需要补,然后往往之前考虑的东西里压根就没想到这一层会出问题。

换句话说,我感觉普通人看待事物都是「点」为主。提需求和验收都是各个「点」。拥有「线」或「面」思维的人少之又少。但是程序员从一开始就不得不考虑「空间」,如果你喜欢各种“设计模式”,甚至meta programming,需要考虑 configuration space,所以看待事物比普通人更广。对约束和边界的理解比普通人看得更透彻。多实践几次防御式编程(Defensive Programming),会对世界上那些事容易,哪些事复杂有更清晰的认知。

其他的优势感觉更多是个体差异,谈不上优势。没了。

Posted

stderr

gpt5.1 释义意大利、乌克兰国歌歌词

之前 ChatGPT释义意大利国歌歌词 还是 gpt-3.5,得到的答案有点模糊,主要是不会用,还你一句我一句聊天呢。

现在提词也用得多了,知道怎么敲打AI 才能获得想要的结果了。

prompt写:

用中英双语一句一句翻译下面的歌词,每一句都面向无背景的读者解释其含义,以及历史渊源
Fratelli d'Italia (Inno di Mameli) ... (贴上歌词全文

回答:

这首歌是意大利国歌《Fratelli d’Italia》,又称《Inno di Mameli》,写于 1847 年,处于意大利民族复兴运动 Risorgimento 的时代。

《Fratelli d’Italia》(马梅利之歌)逐句翻译与解释

第一节

  • Fratelli d'Italia
    Brothers of Italy 意大利的兄弟们
    开场呼喊,强调全国人民是同一民族、同一命运共同体。

  • L'Italia s'è desta
    Italy has awakened 意大利醒来了
    象征意大利民族意识觉醒,从分裂与被统治状态中站起来。

  • Dell'elmo di Scipio / S'è cinta la testa
    She has girded herself with Scipio’s helmet 她把西庇阿的头盔戴在头上
    “西庇阿”指罗马名将小西庇阿(Scipio Africanus),打败了汉尼拔。
    象征继承古罗马的荣耀与武勇,号召民族复兴。

  • Dov'è la vittoria? / Le porga la chioma
    Where is Victory? Let her bow her head to us 胜利在哪里?让她低头任我们加冕
    拟人化的“胜利女神(Vittoria)”。意思是:胜利应该向觉醒的意大利臣服。

  • Ché schiava di Roma / Iddio la creò
    For God created her as a slave of Rome 因为上帝创造她,原本就是罗马的女奴
    指古罗马的“命定胜利”,象征意大利天命所归,要重新统一路线。

(前面一段重复一次,略)

  • Stringiamci a coorte
    Let us form ranks together 让我们像古罗马军队那样 并肩结阵
    coorte = 罗马军队“步兵大队(cohort)”。号召团结如罗马军团。

  • Siam pronti alla morte / L'Italia chiamò!
    We are ready to die — Italy has called! 意大利召唤我们,我们已准备赴死!
    民族解放运动的誓词。

(副歌重复)

第二节

  • Noi fummo da secoli / Calpesti, derisi
    For centuries we were trampled and mocked 我们被践踏、被嘲弄了整整几个世纪
    指意大利长期被分裂、被奥地利等大国压制。

  • Perché non siam popolo / Perché siam divisi
    Because we were not one people, because we were divided 因为我们不是一个民族,因为我们四分五裂
    意大利被分为多个公国和外国占领区(萨丁尼亚、托斯卡纳、两西西里、奥地利控制的伦巴第等)。

  • Raccolgaci un'unica / Bandiera, una speme
    Let one flag, one hope gather us together 让我们在一面旗帜下、在一个希望下汇聚
    呼吁民族统一。

  • Di fonderci insieme / Già l'ora suonò
    The hour has already struck to merge us together 融合为一体的时刻已经到来
    暗指革命和独立运动的号角已响。

  • Uniamoci, amiamoci / L'unione e l'amore
    Let us unite, let us love — for union and love 团结、相爱吧——因为团结和爱
    浪漫化地表达“团结就是力量”。

  • Rivelano ai popoli / Le vie del Signore
    Reveal to peoples the ways of the Lord 会向万民显明上帝的道路
    宗教化语言,用来强调道义正当性。

  • Giuriamo far libero / Il suolo natio
    We swear to make our native soil free 我们发誓要让祖国获得自由
    标准民族主义誓言。

  • Uniti, per Dio / Chi vincer ci può?
    United, by God — who can defeat us? 在上帝面前,我们团结一心,谁还能战胜我 们?
    强调“团结 → 不可战胜”。

(副歌重复)

第三节:历史典故最多的一段

  • Dall'Alpi a Sicilia / Dovunque è Legnano
    From the Alps to Sicily, everywhere is Legnano 从阿尔卑斯到西西里,到处都是“莱尼亚诺”精神
    “莱尼亚诺之战”(1176)中,意大利城邦联盟击败神圣罗马帝国皇帝弗雷德里克一世。
    象征意大利人民长期反抗外来统治的传统。

  • Ogn'uom di Ferruccio / Ha il core, ha la mano
    Every man has the heart and hand of Ferruccio 每个意大利人都拥有费鲁乔那样的心与手
    弗朗切斯科·费鲁乔(Francesco Ferrucci),1530 年佛罗伦萨抵抗帝国军的民族英雄。
    象征勇气、牺牲与爱国。

  • I bimbi d'Italia / Si chiaman Balilla
    The children of Italy are called Balilla 意大利的孩子们都被叫作“巴里拉”
    “巴里拉(Balilla)”是 1746 年热那亚一个男孩扔石头带头起义反抗奥地利士兵的传说人物。
    象征“从小就有反抗精神”。

  • Il suon d'ogni squilla / I Vespri suonò
    The sound of every bell echoes the Sicilian Vespers 每一次钟声都回响着“西西里晚祷”的呼声
    “西西里晚祷起义”(1282)反对法国安茹王朝统治的著名民族反抗事件。

  • Son giunchi che piegano / Le spade vendute
    The hired swords bend like reeds 那些雇佣来的士兵像芦苇一样被折断
    暗指外来压迫者的军队(尤其奥地利的)终究不堪一击。

  • Già l'Aquila d'Austria / Le penne ha perdute
    The Eagle of Austria has already lost its feathers 奥地利的雄鹰已经掉落了羽毛
    “雄鹰”指奥地利帝国国徽。
    意大利在多次革命中逐步摆脱奥地利控制。

  • Il sangue d'Italia / Il sangue Polacco
    Italian blood, Polish blood 意大利人的血、波兰人的血
    波兰与意大利在 19 世纪都反抗奥地利、俄国等帝国,有共同命运。

  • Bevé, col cosacco / Ma il cor le bruciò
    Austria drank it with the Cossack, but it burned their heart 被奥地利人与哥萨克喝下了(比喻镇压),但终 究烧伤了他们的心
    指奥地利与俄国(哥萨克)曾联合镇压欧洲民族运动,但最终遭到了民族觉醒的反噬。

(副歌重复)


其实还有个国家的国歌也提到哥萨克——乌克兰国歌。gpt5.1 也能解释:

乌克兰国歌《Ще не вмерла України і слава, і воля》(《乌克兰的荣耀与自由尚未亡》,又称 Shche ne vmerla Ukrainy…),写于 1862–1863 年,处于乌克兰民族觉醒、长期受帝国统治(沙俄、奥地利帝国)时期。

  • Ще не вмерла України ні слава, ні воля.
    Ukraine’s glory and freedom have not yet perished. 乌克兰的荣耀与自由尚未死去。
    核心思想:乌克兰民族虽长期被强权统治,但民族精神未灭。

  • Ще нам, браття-українці, усміхнеться доля.
    Fate will still smile upon us, brothers Ukrainians. 命运仍会对我们微笑,乌克兰的兄弟们。

  • Згинуть наші вороженьки, як роса на сонці,
    Our enemies will vanish like dew in the sunlight. 我们的敌人会像阳光下的露水一样消失。

  • Запануєм і ми, браття, у своїй сторонці.
    And we, brothers, will rule in our own land. 兄弟们,我们也终将在自己的土地上主宰命运。
    表达“民族自决”的核心诉求:乌克兰人要在自己的领土上做主。

  • Душу й тіло ми положим за нашу свободу,
    We shall lay down our soul and body for our freedom. 我们愿为自由奉献灵魂与身体。
    象征为独立而奋斗、牺牲甚至殉难的决心。

  • І покажем, що ми, браття, козацького роду!
    And we shall prove that we are brothers of the Cossack nation! 我们要证明自己是哥萨克的后代!
    “哥萨克(Cossacks)”是乌克兰民族象征:自由、骑马武士、自治共同体、反抗帝国统治的精神。乌克兰民族精神常以哥萨克传统为核心象征。

  • Станем браття, в бій кривавий, від Сяну до Дону
    Let us, brothers, stand in bloody battle from the San to the Don. 兄弟们,让我们从桑河到顿河,投入血战。
    “桑河(San)”位于乌克兰西侧,“顿河(Don)”在东面。

  • В ріднім краю панувати не дамо нікому.
    We will not allow anyone to rule in our native land. 在祖先的土地上,我们不会让任何人做主。

  • Чорне море ще всміхнеться, дід Дніпро зрадіє,
    The Black Sea will smile again, and Grandfather Dnipro will rejoice. 黑海终将再次微笑,老祖父第聂伯河将欣喜。
    “黑海”与“第聂伯河(Dnipro)”象征乌克兰土地与生命源泉。

  • Ще на нашій Україні доленька наспіє.
    A good destiny will yet ripen for our Ukraine. 幸福的命运终会降临在我们的乌克兰上。
    “ripen”(成熟)是农业意象,象征民族复兴。

(副歌重复)

  • А завзяття, праця щира свого ще докаже,
    And perseverance and sincere work will yet prove their worth. 而坚定与真诚的劳动终会证明自身的价值。

  • Ще ся волі в Україні піснь гучна розляже.
    The loud song of freedom will yet resound in Ukraine. 自由的洪亮之歌必将在乌克兰回荡。

  • За Карпати відіб’ється, згомонить степами,
    It will echo beyond the Carpathians, resounding through the steppes. 它将越过喀尔巴阡山,在草原上回响。
    喀尔巴阡山=乌克兰西部,草原=东部以至黑海北岸

  • України слава стане поміж народами.
    Ukraine’s glory will stand among the nations. 乌克兰的荣耀将被万国所知。
    表达民族独立后获得国际承认的希望。

(副歌重复)


之前不理解是因为印欧语这个从句太长了,歌词分为好几段给人整懵了。

还有听得出来这些欧洲国家都好喜欢吹自己领土,从哪里到哪里。

Posted

stdin