MoreRSS

site iconEST修改

EST = Extrospect, Sein & Tao ,后端工程师。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

EST的 RSS 预览

今日被AI拷打

2026-01-21 00:35:00

群里朋友发了一个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了。简单的说,多劳多得是人类底色,如果干多干少一个样,干好干坏没差别,那么谈何劳动和创造?

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

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

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

Linux服务器各类“面板”

2026-01-20 21:46:00

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

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吧。

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

2026-01-19 00:27:00

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.

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

2026-01-18 23:17:00

计科里有两件极难的事儿,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,多思考。

The Seal Manifesto: Against the Ephemeral

2026-01-17 13:45:00

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。

python版的mtr(traceroute for macOS)

2026-01-16 00:10:00

首先,我讨厌编译,我喜欢二进制,直到昨天我惊讶的发现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 几个字到末尾。

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