2025-12-29 08:45:00

from Singin' in the Rain (the musical)
When the band began to play, the stars are shining bright
Now the milkman’s on his way, it’s too late to say good night.
So, good morning. Good morning!
这周六去看了音乐剧《雨中曲》,最喜欢的一段就是这首《Good Morning》。第一次听到的时候感到很惊喜,因为我那个时候才知道 Lady Gaga 在《Harlequin》里翻唱的就是来自这部音乐剧的《Good Morning》。剧中 Don、Cosmo 和 Kathy 三人彻夜长谈之后发现已经到了第二天,三个人在街头一边跳舞一边说早上好1的场面真的很有感染力,从剧院回来的第二天我仍然感到非常快乐。
🔍这是十二月的最后一期周刊,在此进行十二月的文章回顾,精选了我认为不错的内容。
📺
不能。Frank James 在这个视频里批评的现象我也经常观察到,国内也是如此:许多人不满意自己的 MBTI 类型,想要变成 INTJ 或者 ENFP;许多人发现自己几次测试的结果不一样,以为自己是几种人格,或者以为自己的人格会变;有人把成长和性格变化联系在一起,缺乏对类型学的基本认知。
MBTI 测试结果不一致的原因有很多种:
举个例子,如果自己做的是 16Personalities 的测试题,发现自己从 INFP 变成了 ENFP,那并不是因为自己变得外向了(外倾和外向根本不是一回事),而是因为这个网站采用的是二分法,自己本身可能就在 I 和 E 之间徘徊。要得到更准确的结果,应该看自己的认知功能排序,INFP 的前四个功能排序是 Fi Ne Si Te,而 ENFP 是 Ne Fi Te Si,要分清楚自己是 INFP 还是 ENFP,应该要分清楚自己的主导功能和辅助功能是什么,更倾向于使用 Ne(外倾直觉)还是 Fi(内倾情感)。
功能排序也叫功能堆栈(Function Stack),其实是对荣格在《心理类型》这本书里提到的八种人格类型的拓展,认为荣格划分的八种类型其实是八种认知功能,人不会只使用一种认知功能,而是八种都会使用,但偏好和倾向有所不同。其中最重要的是前两种功能,主导功能和辅助功能,这两种功能一个是外倾的(作用于外部世界),另一个是内倾的(作用于内部世界);一个是感知功能,另一个是判断功能。你可以根据一个人的主导功能和辅助功能判断他的 MBTI 类型。2
如果人格类型能改变,就意味着功能排序能改变,也意味着个体下意识使用的认知功能改变了。一般认为,如果没有经历重大变故,这基本不可能发生。个体可以锻炼自己的某个认知功能,类型学社区的主流观点也是:个体应该锻炼自己的弱势功能(第四个功能),以获得成长。我作为 INFP,劣势功能是 Te(外倾思维),我就一直在用写作锻炼自己的这个能力;但就算我能像 ENTJ 或 ESTJ 一样熟练地使用 Te 功能,我仍然是 INFP,我的主导功能仍然是 Fi,我最擅长的事情依旧是依照自己内心的价值观做判断,这一点不会改变。
自己的人格类型不会改变,不代表自己作为 I 人就无法与人相处,作为 S 人就无法理解抽象概念,作为 T 人就完全冷血无情,作为 P 人就没办法变得有条理。相反,固定的人格类型为自己提供了固定的成长方向,如果你拥有多个人格类型,或者你的人格类型会改变,那你究竟要锻炼自己的哪个认知功能?你又怎么知道自己最擅长的功能是什么呢? 倘若你的测试结果真的经常改变,那就换一套测试题,或者先等自己心理状态稳定下来的时候(不处于焦虑状态、渡过了青春期、生活环境固定……)再做测试。
顺带一提,MBTI 并不是严肃的心理学,在我看来,只是提供了一种理论化的认识自己的方式。要说科学性,还不如去了解自己的依恋类型(回避型、焦虑-矛盾性、安全型)——后者是心理学者提出来的,而 MBTI 是一对作家母女(也是荣格的狂热粉丝)读完荣格之后写出来的东西。但是,如果真的要聊 MBTI,还是真的把它搞懂再来谈吧!
📜
在去年年底,Dia 浏览器刚开始宣传的时候,我就写过一篇题为《 The Browser Company 的新浏览器 》的文章表达过我对 AI 浏览器的担忧。我的担忧主要集中在数据安全方面:
你可能会说,在互联网上,隐私早就不存在了。但是,这可是一个官方声称有「记忆」功能的浏览器,它对我隐私的收集显然不止电话号码、身份证号码那么简单。
我认为这才是最值得关注的。然而在那些贬低的评论中,我居然没有看到任何人对 Dia 的数据安全提出质疑,大部分都在表达对 Arc 停更的不满,和对这个新浏览器的不看好,即使这个产品甚至没有一个公开的可供测试的原型。
过去一年里,AI 浏览器层出不穷:Dia 正式发布了,Perplexity 上线了 Comet,ChatGPT 发布了 Atlas,微软也给 Edge 加上了 Copilot…… 以往,我对 AI 浏览器的担忧没有什么实际证据,但这些 AI 浏览器发布过后,有研究机构实实在在地对他们的安全性做出了评价。
结论是:AI/Agent 浏览器对大部分组织而言,使用风险太大。
Gartner 是全球的研究和咨询公司,他们认为,默认的 AI 浏览器设置更注重用户体验,而非安全性。作者认为,这句话说白了就是:AI 浏览器更注重他们的商业模型,而非安全性。这对组织机构来说尤为可怕,雇员可能会使用 AI 浏览器完成一些工作,这个过程中,数据可能会泄漏。
在我看来,我们应该立法,让 AI 浏览器的首屏界面像香烟的包装一样,必须说明「使用 AI 浏览器可能有害数据安全」「禁止处理涉密信息」等等。
最后,如果你想要一个干净的 Web 体验,我推荐你使用开源的 Helium 浏览器,基于 Chromium 内核,默认安装 uBlock origin,无需注册账号。我已经用了三个月,除了偶尔遇到 Bug 之外,体验很不错。
📜
📰
我经常查阅 Wikipedia,尤其是英文站点,上面的资料真的很有帮助。因此,去年年底我看到他们在网站上请求捐款,我几乎没有犹豫就选择了每月自动捐款(不过一两个月后就取消了)。最近我又在查阅资料的时候看到捐款请求,这次我没有立马选择捐款,因为当时我确实抽不开身。后来,我三番五次地看到出现在网站不同位置(有时是页眉、有时固定在视口底部,有时在右下角),不同措辞但语气同样迫切的捐款请求,给我的感觉是:我今天要是不捐款,这个网站就要维持不下去了。这种错觉让我在数次忽略捐款请求后感到非常自责:自己明明是 Wikipedia 的长期受益者,怎么能吝啬得三美元都不给呢?
后来发现,我的犹豫是正确的。捐款并没有给到 Wikipedia 这个网站,而是 Wikimedia Fundation 这个拥有 Wikipedia 和其他由志愿者编辑的网站的基金会。其实仔细想想就能想明白:Wikipedia 上面的内容全是志愿者编写的,他们又拿不到钱,运营网站的人力成本很低,而服务器费用也不至于让他们破产吧?很不公平的是:真正为 Wikipedia 的内容(也是最重要的部分)做出重要贡献的人没有工资,而基金会的员工赚得可不少。然而,Wikipedia 每天都有新的编辑,网站的屎山代码和用户界面在十几年内都没有太大变化。尽管基金会没拿这笔钱干什么坏事,但欺骗 Wikipedia 的读者给他们捐钱,无论怎么想都十分令人气愤——我真的以为没人捐款 Wikipedia 就要倒了,实际上基金会的钱多得可以在里面游泳!
如果你很依赖 Wikipedia 的内容,你应该感谢无数的编辑者,或者自己加入到编写 Wikipedia 的行列中,不要给那个在网站上装可怜的基金会掏钱。
⚠️剧透警告:如果你还没有看完《同乐者》,请谨慎阅读。
《同乐者》(Pluribus)在圣诞节放出了第一季大结局。在这一集里,先前剧集里发展的几乎所有故事线都有了进展:Manousos 终于开车到了 Carol 家;同乐者们成功同化了那个想要加入他们的小女孩;Manousos 在电台接收到的神秘信号的确与同乐者有关;同乐者正在利用 Carol 的冷冻卵子制造她的干细胞用于同化……
我特别喜欢 Carol 跟 Manousos 分道扬镳之前,Manousos 跟 Carol 说的话:
Carol, do you want to save the world or get the girl?
卡萝尔,你想要拯救世界还是去追那个女孩?
然后 Carol 就跟 Zosia 度假去了——是我的话我也这么选。

看到这个画面的时候我很惊喜,因为 Carol 在读的书是《 黑暗的左手 》,这是我最喜欢的科幻小说,就是在今年五月份读完的。
不过,在 Carol 发现同乐者已经找到同化她的方法,而她只剩下一个月的时候,「追那个女孩」的梦也就破灭了。好在,Manousos 这边为了「拯救世界」,已经取得了一些进展。希望明年能尽早看到第二季,我真的很期待!
其实从第五季播出开始,我就觉得这一季给我的感觉很不一样。仔细想想,原因大概是剧中角色数量太多了,而且大部分角色的形象已经很饱满,尤其是第一季就出场的 Hopper 和 Joyce,他们对孩子的爱护一直没有多少改变,除了 Joyce 在见识到 Will 的能力之后选择相信她,这个人物几乎不能给观众带来新鲜感了,其他人物线也有不少像是「旧事重提」。另外,我从大概第三季开始就很讨厌 Mike,到第五季更是如此,无论是演员拙劣的演技、在剧情中可有可无的地位和他的性格,都让我喜欢不起来。
别误会,我还是很喜欢《怪奇物语》。大概是和我的性取向身份有所共鸣,第七集的最后,Will 和朋友们坦白的时候,我确实没有忍住眼泪。Dustin 和 Steve 的矛盾以及友谊也很值得品味。我在想,这可能是因为《怪奇物语》所触及的主题太多了,不同的人都能在其中找到共鸣,自然也不是所有情节都能让每一个人感同身受。
最后,下周,也就是跨年夜,长达两个小时的最终集就要播出,我已经迫不及待了。
月初看到伦敦西区音乐剧《雨中曲》来中国巡演,巡演地点居然有重庆,我毫不犹豫就买了票,时间就在这个周六(12 月 27 日)晚上。这是一部电影改编的音乐剧,我没有看过电影,但我看过非常出名的在雨中跳舞的电影片段,非常喜欢。
国内喜欢音乐剧的不多,重庆人更是不爱看,更何况是部英语的剧,票不好卖。我去的那家剧院因为票卖不出去,在双十二的时候搞买一送一,让那些被背刺的观众非常气愤。我买的是三楼的票,因为人实在太少,剧院给我派了一张二楼的票。到现场的时候,人群零零散散的,一楼更是有好多空座位。回忆起之前没买到《摇滚红与黑》去成都巡演的票(那还是一部法语的音乐剧),更加坚定了重庆是个文娱沙漠的刻板印象。
尽管音乐剧在重庆不叫座,但表演的精彩程度是毋庸置疑的,而且,从现场的掌声和欢呼声来看,买了票的人几乎没有后悔的。舞台设计、舞蹈、歌曲、演技和唱功都是一流的。虽然已经提前做好了心理准备,但看到舞台真的开始下雨的时候还是会觉得很震撼(幕间休息的时候工作人员上来擦了十分钟的地板也挺好笑的)。在读一些法国小说的时候有读到贵族去剧院会用望远镜看舞台,自己去了剧院之后才知道原来真的是要带望远镜的,一些场景可以更清楚地看到演员的表情和动作细节。




另外,戏剧、音乐剧对非母语者来说实际上相当友好,演员的发音比英语听力还要饱满清晰。除了仔细听能发现他们没有卷舌音之外,真的很难发现他们说的是英国口音。大概是我全年最值的一次花费了,希望明年能有更多的机会去剧院!
演出结束时已经是十点半,回程坐轻轨要一个多小时,没办法在停运之前到家,最后还是打了车。这就是离市中心太远的坏处吧。
既然为了看音乐剧进城了,就顺道在嘉州路下了车,去了一趟多抓鱼巡游商店。九月份的时候多抓鱼来了重庆,我立马就赶了过去(详见 第 46 期周刊 )。这周想起来他们要到 2026 年一月初才会离开,于是就又去了一次。
这次的人明显比上次少了很多,里面空荡荡的。令人惊喜的是门口多了一些毛绒玩具,还有很多宝可梦的玩偶,但没有看到特别喜欢的,就没买。门口还有人用书堆了一个圣诞树。




一如既往地在「外国文学」分区看了好久,找到了一本《我想结束这一切》。扫码看了下价格,门店打折后居然才 6 块,而我的多抓鱼余额也差不多还剩五块多,多抓鱼用余额付款还会打折,刚好拿下。
2025-12-25 14:47:00
我在大学的前两年都是个很守纪律的学生,从来没有逃过课。一方面,我不想因为违纪给我带来不必要的麻烦,消耗心力;另一方面,自己毕竟还是学生,在脱离这个身份之前,课还是要上的,而且,大部分的课程其实还没有到难以忍受的地步。
不过例外总是有的。
专业开设了两门和前端开发相关的课程,一门叫做「Web 前端开发」,授课内容就是 HTML 和 CSS,和 JavaScript 相关的内容很少;另一门叫做「JavaScript 框架和 SPA 技术」,授课内容是 Vue 3 和相关的技术栈(谢天谢地你讲的不是 React)。前者我在初中买过一本书自学过,那本书所属的系列还有一本 JavaScript 和 jQuery 的教程,我也买来读过1;后者我在大学期间自学过,不过,就算没有学过 Vue,我对 React 相关的技术栈也比较熟悉。在我的整个高中生活里,我的周末和夜晚几乎都用来折腾各种前端框架了。
这两门课都是同一个老师教的,学校里显然没有别的会前端的老师了。像其他目光短浅的开发者一样,我所在的环境里几乎没有人重视前端开发,从学生到老师都是如此。课程的内容不是最大的问题(虽然问题也不小),最大的问题是授课的老师对他理应掌握的知识所展现出的惊人的匮乏。我从没见过他打开浏览器的开发者工具(也就是按下 Ctrl/Command + Shift + I 或者右键菜单的「审查元素」会打开的面板),他排查问题的方式是用肉眼盯着源代码看,而且是通过右键菜单点开「查看源代码」来排查的——当课程内容转向 Vue,浏览器里的源代码视图只会显示页面基本框架和用于加载 Vue 的 JavaScript 脚本,他也就没办法在浏览器里排查问题了,就只会盯着 VS Code 的界面看,还要学生来提醒他哪里写错了。2
作为开发者,这位老师对命令行工具的使用也不熟悉得令人发指。一般而言,创建一个基于 Vue 的前端项目框架,开发者会使用 bun create vue3 这样的命令,拉取到相关的软件包之后,就会出现交互式的终端界面用于配置开发环境。这位老师的「不熟练」体现在两点,当然还有其他尚未发现的。
第一,他教学生不要使用 PowerShell,要使用 cmd,还教学生如何在 VS Code 中把终端切换为 cmd。即便我是 macOS 用户,我也知道,要运行 Node.js 相关的技术栈,cmd 这种老古董是不如 PowerShell 好使的。他这样教学生的理由是(以下是他的原话):「使用 PowerShell 呢,路径会有一些问题」我不知道他说的是什么路径问题,但我肯定那是他自己的无知导致的。
第二,我已经记不清楚他有几次课在课上这样讲到:「首先呢,我们要把 Vue 项目里的示例代码都清除掉。把 <style> 里的 CSS 样式都删掉,这样就会变得很干净。然后呢,要…… 这样一来,我们的 Vue 项目就变得很简约啦,方便我们在上面进行修改。」
……
请读者稍等我调整一下心情。

这句过了四级都能读懂的英文,意思是:要跳过示例代码,用一个空白的 Vue 项目开始吗?
这个老师还会教学生删除目录下的 .git 目录和 .gitignore 文件,因为他认为「Git 很麻烦」。对于教学生不去使用行业内最基础的版本管理工具和协作工具的老师,我不知道该说什么好。我只能想想,他在提交更改和处理冲突的时候,看到终端里弹出来一大堆他看不懂的英文,不清楚自己做错了什么也不知道如何修复,在网络上四处搜索才解决,之后也很快忘记了解决方案,只留下了「Git 很麻烦」的印象。
以及,我从没见过他用过 npm 或者别的什么包管理器添加依赖,在教学生使用 Element Plus 这个 UI 框架的时候,他强调要学生使用它放在 PPT 上的方法引入框架——用 <script src=""> 和公共 CDN 直接引入。他声称「教材上的方法是有一些问题的」,我没买过什么教材,因为该有的东西都写在官方文档里了。我猜测,他所谓的有问题的引入方法,应该涉及到通过包管理器添加依赖,然后用 ES6 标准的 import 关键词引入依赖,但他不会,在尝试这么做的时候得到了他读不懂的英文报错,于是留下的「教材上的方法有问题」的印象。
这个老师是第一个也是目前唯一一个让我产生逃课想法的老师,只可惜,所有没办法靠自己的教学能力把学生留下的老师都有一个狡猾的手段——位置签到。学生必须到达教学楼,和一个可疑的软件共享位置信息,在老师发布的限时签到中按下签到按钮,才算出勤。要是缺勤,辅导员回来找我麻烦;要是缺勤三次,按照学校的规定,这门课直接挂科——他也只能用这种手段把我留下来了。
这类中老年男人教师有一个很奇怪的习惯,会把已经讲过的事情重复讲好多遍,无论是否重要,比如如何删除 Vue 的示例代码、如何移除 Git,以及关于课程作业中 AI 的使用。我已经记不清楚我有多少次听见他说:「我觉得啊,既然有这个工具,那为什么不用呢?不过啊,同学们至少还是要把 AI 生成的内容看一遍,读懂他是怎么写的,什么原理…… 话说回来啊…… 我们还是要…… 所以啊……」
如果你真的能接受在课程作业里看到 LLM 生成的代码,也就不会把这句话三番五次地拿出来讲了。倒不如坦诚一点,直接把态度挑明。
说起 LLM,我刚读完 Cytrogen 写的《 在 AI 恐慌的时代,熟练度是一种累赘 》和《 I had (maybe) the worst computer class in my life 》,他讲述了一个连 HTML 都不懂的 Python 老师如何给他这个本来就已经会写网络爬虫的学生打了 F,因为老师认为他使用了 AI 并且没有披露 AI 使用,因为他用到了上课没有讲过的方法。这个老师竟然意识不到,同样的解决方案不仅可以是 LLM 生成的,还可以来自于用于训练 LLM 的原始数据——官方文档,就是那个所有开发者都应该会读的东西。学不高身不正还带着点傲慢的老师真的是不分国界,无处不在。
自己写的代码被质疑 LLM 辅助,我也感同身受。我本来就对前端很熟悉,于是在第一次提交「Web 前端开发」的作业的时候,我用最基础的 Flex 布局4和卡片样式完成了作业,老师虽然没有直接点我的名字,但他在某次碎碎念的时候明显是在用我作业的例子告诫同学们合理使用 AI。也有其他老师表示:「你一个学生写出来的代码,和熟练的老手写出来的代码肯定是不一样的,看得出来。」
就这样,我不得不装疯卖傻,在作业里提交一些我在正常开发过程中不会写的代码,以迎合这些老师对学生的想象——这就是高等教育啊。
毕竟这篇文章被我归到议论文下,还是不能写得太散,是时候整理一下前文提到的现象了。
我认为,以上所有问题,源自于两点:无知和傲慢。无知是可以理解的,就算是老师也会有知识盲区;傲慢也是可以理解的,这是人之常情。然而,无知和傲慢放在一起,在我看来,就是缺德了。
只可惜,身份认同(或者说 Entitlement,某种称号)往往会给人带来傲慢,教师这个身份亦是如此。当一个人经过体系的认可站上讲台(哪怕是一个有缺陷的体系),他就会认会自己有义务教育台下的人。另一种很容易产生但更不健康的心态是:我比台下的人学识更高,他们不懂我懂的东西。关于这一点,我在与本文同题的《 教师的傲慢 》中阐述过。
教师评价学生的方式,由「我比台下的人学识更高,他们不懂我懂的东西」这一偏见发展而来。他们惩罚的对象主要有两者:
简单来说,「不像学生的学生」,而这个「像学生」的标准是极其模糊、极其经验主义、极其不可靠且毫无用处的。教师奖励那些「像学生」的学生,并不会造就优秀的学生。
当今大学教育普遍存在的另一个偏见是对本科教育的不重视。我得说明,这可能也是我对大学教育的偏见,因为我所接触到的样本是有局限性的,只限于我所在的高校、我从身边人口中听到的他们学校的情况,而且大部分是理工科的样本。我接触到的有相当一部分的老师,并非是真心想要教学生的老师,他们大概可以分为以下几类:
把课上得再好,老师也不会因此获得晋升,不如把精力放在更有回报的工作中。对学校而言,能带来短期利益的往往是科研成果和先进事迹,而非难以量化的教学质量。
第三个偏见和前一个同根同源,却又显得矛盾。大学体系相对而言没那么重视本科教育,但又在规则制度的层面非常重视本科教育,而这种规则制度本身也是偏见的。这种偏见可以理解,但无法原谅,那就是:规则制度更偏向于限制学生的行为,对教师的教学工作以及教学质量并没有那么细致入微的关照。
对学生的严苛体现在对数据以及合规性的重视。
所谓数据,就是出勤率和挂科率。解决出勤率低的方法是上课点名、位置签到、将出勤分计入课程成绩以及对缺勤学生进行处分。解决挂科率的方法是强迫老师让成绩「服从正态分布」,老师的评价体系必须要使得平庸的学生占据大多数——不过我不得不承认挂科率对于学生还是相对宽松的,反倒是老师会担心挂科率太多给自己造成麻烦,降低评价标准,尽可能地把学生的分数捞上去。不过,这难道不也是问题吗?
所谓合规性,是在本身就不重视本科教育的情况下,应对本科教育评价等其他针对大学教育的审查。以我所在的学校为例子,他们迎接本科教育评价的方式是:在教室安装新的摄像头和录音设备录制每一堂课,利用 AI 技术分析影响统计课堂的抬头率和前排就座率,并揪出那些在课堂上没有认真听课的学生。大学教育正在逐渐高中化,全国各地都在上演,树老师录过一期相关的播客—— 读书不成林《过度自由和过度纪律如何正在让大学教育沦为笑话?》 。
在非特殊时期(是的,迎接检查当然是特殊时期),学校为了保证合规性,对学生采取的策略是禁止一切会导致难以处理的责任的事情,最常见的例子是对学生宿舍的限制(比如开着摄像机突击检查学生宿舍收缴违禁物品这种骇人听闻的侵犯生活空间的行为)。说起来,是在保证学生安全;本质上,这是在规避责任。
安全教育,在我看来,规避责任的目的大于真正的教育目的。很多时候,老师会在完成安全教育之后补充一句「别说我没讲过」,同时,这样的安全教育在进行时,会被要求拍照留存证据,证明学校履行了对学生进行安全教育的责任义务;我在签订走读生管理协议时,协议上也清楚明白地写着「学校有义务对学生进行相关的安全教育」。
当学校被机构化,行政的工作就大于了教育的工作;当生活空间被责任化,保障生活条件的目的就成了一种责任和义务,并且必须制定新的规范来保证不会产生更多麻烦的责任。
——《 生活空间中的规则、秩序与责任 》
对教师的宽松体现在相关评价体系的不完善。
为了管好学生,学校发明了相当多的指标,诸如挂科率、出勤率、前排就座率、抬头率、第二课堂分数。在双向的教育过程中,对学生的学习有管束是共识,但对老师的讲授就是另一回事了。我遇到的念 PPT 的老师其实很少,但对着 PPT 胡说八道的倒是不少。
一个教软件项目管理的老师,在解释一个经济学概念的时候,仅仅是凭借她对术语字面含义的理解在阐述而已,举了一些不恰当的例子。我读过曼昆的《经济学原理》的前几章,那是一个很基本的经济学概念;其他没有这些知识储备的学生,难道不会被她的这种不负责给误导吗?
——《 这个世界会累死完美主义者吗? 》
还有前面提到的那个不会使用最基本的开发工具的前端老师,我就不重复了。据我所知,不少教育培训机构对于老师都有很严苛的培训和考核流程,而大学老师对自己讲授的知识究竟有多少了解,学校作为用人单位似乎并不会严格把关。这大概也不能责怪他们,毕竟,对于某个具体领域的知识,一个学校里真正掌握的可能也就一两个老师(而且还不一定是专业完全对口的老师)。那位教前端的老师是这样回顾自己的大学生活的(是的,几乎所有中年老男人都有这个毛病,在课堂上随意跑题也是学校不管的),他在大学根本没有学过网页设计相关的课程,他是把前端当作自己的爱好来学的,而自己现在竟然站在台上讲授自己的爱好,人生真的很神奇啊——原来这样就能当上老师讲授某个课程,确实是很神奇了。
针对老师的评价体系,主要体现在可以量化的成果上(和高中不一样,学生的成绩并不算成果),譬如科研论文、项目成功和竞赛奖项。教师鼓励学生参赛,我想并不完全是为了学生的职业发展考虑,还有一部分原因是为了让自己有拿得出手的成果。
我很尊敬教我软件需求工程6这门课的老师,从她的谈吐中能感受到她在计算机领域和教学工作中都沉淀了很久。她不会跟那些不认真的学生纠缠,而是把注意力放在讲授内容和帮助愿意得到帮助的学生上,给出的建议都很诚恳,并且是以坦诚、平等的态度与学生交流的。她也不像许多对方法和工具过度执着的老师,要求学生必须使用某个软件完成作业7,她只注重学生呈现出来的结果。
讽刺的是,这样的老师反而是最不注重出勤率的(她的原话是:「爱来不来」),对前文所提及的偏见也熟视无睹,而且非常同情当代年轻人的处境。
不过,开明的教师总归是占少数,就像真正能从这套充满偏见的体系中受益的学生也是少数一样。
说了这么多教师的傲慢,也得来说说这套体系下学生的问题。问题就在于,大学生太把自己当学生,没把自己当成年人看。不服管若是仅仅以叛逆的形式表现出来,自然是不成熟的,不服管的真正原因是「一群成年人本身就不能被这样管着」。想象这样的画面:大学生想要外出游玩,但学校安装了门禁,夜间出行需要辅导员同意,辅导员驳回了所有出去聚餐和出去玩的请假,大学生们怨声载道——这他妈不是高中吗?辅导员表现得像是高中班主任,大学生也表现得像是个高中生。
最近两年有在举行一个名叫大学生生涯规划竞赛的全国性活动,两次都在班级群里发通知声称「所有 XX 级的同学都必须参加」,我印象里真的有不少学生吓得不轻,急急忙忙地把文档写了交上去。我两次都没报名,没有人管我——只要仔细想想就会发现,「必须参加」是一句无礼但弱小的命令,如果真的必须参加,发通知的人大可附上不参加的后果,然而这种必须逼人去参加才能办起来的比赛,不去自然是没有后果的。在这个例子里,学校把成年人当小孩子一样命令和看管,学生把自己当成小孩子一样听从命令,并暗自讨厌家长、老师和学校——从哪边看都觉得可笑,大学不应该是这样子的。
可悲的是,这种学校、教师甚至学生自己都不把学生当成年人看,对学生抱有经验主义想象的教育环境不会改变,至少很长时间内都不会,而且,大学高中化的趋势只会愈演愈烈。各种大环境不好、工作不好找的叙事,在日渐封闭的校园里只会变成遥远的传说,就像养殖场里圈养的猪在农场里讨论那些被农夫拉走的其他猪发生了什么一样。
或许暂时没有办法离开养殖场,但思想是自由的,不要在体系下变成像学生的学生、像小孩子的成年人,不要让别人来告诉你你应该学些什么。你的自由值得在更好的地方开花结果,尽管这个地方很难找到。
是一本排版和装帧都很精致的书,放在现在也是少见的,不过我忘记了名字,兴许之后能找到。 ↩︎
他在这方面无知也导致了学生对基本前端开发知识的无知。我在被迫参与小组作业的时候,帮一个组员排查问题。我把他的代码拉下来,在浏览器里打开控制台,报错再明显不过了——他的 AI 删除了一段函数定义,所以代码里有一个不存在的函数引用。谁能怪他呢?没人教他前端也会报错。 ↩︎
我最常用的前端开发工具是 Bun 和 PNPM,所以我不清楚 npm 和 npx 应该怎么写。 ↩︎
顺带一提,这个教前端的老师从来没有教过 Flex,他教的是…… 你猜猜看是什么?没错,是表格布局,也就是基于 <table> 元素的布局。 ↩︎
我印象很深的是,我的「大学物理」这门课是我们计算机学院的老师授课的,这名老师经常隔三差五地跟我们宣传读研的好,还找辅导员要学生的成绩,想找优秀的学生来跟着他做项目。 ↩︎
插句题外话,我认为需求工程大概是软件工程中最核心的分支了,尤其是编码过程正在被 LLM 大幅度简化的背景下,需求从未如此重要。 ↩︎
谁懂我必须装一个 Windows 虚拟机在 macOS 上运行 Microsoft Project 这个老古董软件的无奈…… ↩︎
2025-12-25 01:39:00
我早早地订好了《Wicked: For Good》的电影票,平安夜的晚上是在电影院度过的。大概是因为音乐剧在国内水土不服,重庆人更是不爱看,所以本地影院的排场少得可怜。沙坪坝除了有一家影院提前开始售票,其他影院都是在开播的前一天才有票买,这也导致我去看的那场几乎坐满了人。
《Wicked》第一部电影,我是在去年的一个周四去的,那个时候电影已经开播了一段时间,整个影厅里只有我一个人,算是享受了包场。这次的感觉很不一样,前后左右都是人,不过,除了个别不知道是高中生还是大学生看到一丁点尺度极低的床戏就开始大笑之外,体验也不算差。
夏天刚结束的时候,我在好几次占卜中都得到了积极的预兆,大概会在十二月底到 2026 年初的时间遇见新恋情(其实更准确的说法是第一段恋情)。我虽然不是宿命论者,但我相信吸引力法则和心理暗示的力量——只要我怀着这样的期待和相信,这件事情发生的概率就只会增加而不会减少。我在这周安排了两次出行,其中一次是周六要去南岸区看音乐剧《雨中曲》,另外就是这一次。不喜欢去太吵闹太外放的社交场合,影院、剧院、书店和咖啡厅,是为数不多我能遇到陌生人的地方了,尽管这也意味着我和他们很有可能不会说上一句话。
这个周三给我的感觉很奇妙,一天都不想接收太多信息。这天一共走了一万八千多步,一般都会在路上听歌或者听播客的我,意外地对耳机感到些许厌烦。距离家三十分钟步行路程的影院,来回我都是走路,在路上只和自己的思绪作伴——我很喜欢散步的感觉,要是城市里没有电瓶车在人行道上狂奔就好了。
或许是没从虚拟世界里接收什么信息,心事也都在过去的几天里想遍了,脑子突然有了空闲的线程处理我身边的信息:早上刚走出电梯,看到地上有滩红色液体,脑子里本来已经开始想象邻里纠纷和动物虐待,并为人类感到高兴对猫猫狗狗感到痛心了,结果走出门发现另一滩相同的液体上有一颗烂掉的杨梅(好失望……?);远远地在学校的绿化带上看到一片颜色奇特的落叶,还没来得及感到惊奇,就发现那是某个没素质的人丢的火腿肠包装纸;影片快开始时,从前面匆匆跑进来三个人,身材中等,样貌打扮像是中学生,我疑惑「你们八点就放学了吗?」;在位置上坐下后,右下方突然有一个十岁出头的小男孩站起来(他的监护人在哪?);右边两个女生在放映之前一直在大声聊八卦,内容我忘记了,我没有很介意,但她们的声量和谈话方式的确是有点招人厌烦的类型,坐在我左边的男生似乎有些不满…… 唔,不知怎么地,接下来我的注意力就全放在坐在我左边的这个男生身上了。
我进场的时候,他已经坐在那了。因为觉得在没有交谈的情况下直视陌生人的脸不太礼貌,再加上灯光昏暗,我没有看清他长什么样子。他坐在 1 号座,我是旁边的 2 号座,右边的两个女生也已经坐在那了,所以我刚好进去填补了那个空位。大概是因为他有一种我难以描述的不好接近的气质,我坐下的时候,身体下意识地往远离他的方向倾斜,也导致我刚开始一直坐得不太舒服。这种气质,可能只有同类人才能如此清晰地察觉到,因为之前有人也说过我有「生人勿近」的气场,其他人要么是在跟我聊过一两句后发现我其实很好说话,要么就是因为这种气场一开始就没有跟我靠得很近,但不会细想这种印象的来源。总之,「坐在旁边的是一个很内敛的男生」,这个印象就这么产生了。
众所周知,INFP 的大脑结构很神奇,语言中枢并不会在他们开口讲话的时候被激活,这块大脑区域主要被用在以下场合:为未来即将发生的对话做预演、在脑子里回放以前进行过的对话并重新组织之前没说好的话,以及想象自己正在进行一场实际上根本不会发生的对话,对话的参与者与自己甚至根本不会相遇,再甚者,这个参与者根本不存在于现实当中。1
不过事实就是,我的确花了不少的时间想象,我会和坐在左边的这位和我一样在平安夜一个人出门看电影的男生,发生什么样的对话。我想他大概也暗暗地对这件屋子里其他所有的人感到厌烦,于是我跟他分析起右边两个讲八卦的女生的人物性格;他在看手机,是在和朋友聊天吧,我猜他也有大把大把的在网上认识的有趣的朋友;我猜他一定有着古怪的幽默感,所以我开始想象他笑的时候眯眼睛,盯着我看,尽管我从没看见过他的脸。
这些猜测,都是一些微小的、一般人不会注意到的细节,被我捕捉到之后,通过直觉自动生成的联想,而我已经忘记那些一开始让我产生这些印象的事实是什么了。
电影进行到奥兹国人民举着火把离开翡翠城,踏上黄砖路要去杀死西方坏女巫的桥段,此时北方好女巫 Glinda 心情十分复杂,看着队伍离去之后关上了窗户,窗户关上之后人群的吵闹声就几乎听不见了,而背景音乐并没有开始播放——本来是情感丰沛的一幕,而我脑子里蹦出来的第一个想法是「这窗户隔音真好!」我觉得我应该在电影院里保持安静,所以我又开始和脑海里的人对话。我在想,如果我把这句不合时宜的话说出来,他一定会笑的,虽然,我根本就不认识他!
我很难描述清楚这种感觉。为什么会对一个从没跟我说过一句话的人如此关注呢?他坐在 1 号座,要给好多过路的观众让位。我看见他好几次挪开腿让人通行,竟从他的肢体动作里读出一丝厌烦、无奈和小心翼翼。不过,我的理智告诉我,他可能有也很有可能没有这些感受,我只不过是在投射我自己的想法而已。
他似乎把自己的包规规矩矩地放在胸前,又时不时在里面翻找些什么东西。他偶尔会调整自己的坐姿,但大部分时候好像是缩在椅子里的,是太拥挤的空间也让他觉得不舒服吗?他会是个高中生吗,我会不会像我那个令人讨厌的室友一样喜欢上一个高三学生?不,我对他绝对是说不上喜欢的,只是令人费解地对他感到好奇。他掏出了手机,屏幕上显示的像是课表的界面,那他一定是个大学生了。课表好像很满,他会是大一新生吗?他会不会也有着那种愤世嫉俗却不真正理解社会运作方式的思维特质?不清楚具体的原因,我似乎一直很害怕自己的这部分特质,这或许在以前的我身上会明显很多。我会真的和他说上话吗?如果的会的话,应该是什么契机?他会讨厌我和他搭话吗?我会有这样的担忧,大概是因为我本身就讨厌莫名其妙找我搭话的人。
原来,我对素未谋面的人也会产生「他懂我」的错觉,真的是顶级恋爱脑了。不过,事实是,我只是在脑子里和另一部分的自己玩耍而已。
他穿了一件白色的内搭,似乎是毛衣,也可能是卫衣。电影进行到尾声时,他穿上了一件黑色的外套。散场灯亮起,我才看清楚他的裤子是咖啡色的。电影的演职人员表刚开始播放,他就迫不及待地起身走了出去。没过多久,我也站了起来,走出六号影厅,我往左转弯,才在走廊尽头看见他的背影。我没有刻意加快步伐,但走得也不慢。等我走出电影院,我已经找不到他了。我还是没有看清楚他究竟长什么样。
为什么我会感觉像是错过了命中注定的人一样?真是奇怪。2如果我未来的爱人性格和我一样,两个不爱跟陌生人说话的内向者,究竟是怎么相遇的呢?
如果我三生有幸,能让未来的文学学者来研究我写的这篇文章,他们大概会分析:作者借文中人物之口(或者「之躯体」?)表达了他对人群的厌烦、对自己的厌烦以及一种在全文中占据主导地位的情感——孤独。
2025-12-23 16:01:00
塔罗牌中的第十六号牌往往被认为是不祥的征兆,几乎没有一个人在占卜师抽到「塔」时不感到虎躯一震。各种塔罗牌中的「塔」的牌面通常描绘了一场灾难,尤其是天灾,在画面上能看到从天上劈下来的闪电、从高塔上掉下来的人以及起火的房屋。不过,「塔」并不是单纯的令人闻风丧胆的祸害,我也不认为七十八张塔罗牌中有纯粹的坏牌,今天的文章就来剖析「塔」的意象。

是的,《 塔罗牌漫谈 》系列终于更新了。如果你对占卜和塔罗牌并不感兴趣,你或许也能在阅读这篇文章的时候发现一些有趣的神话故事和符号学小知识。
十六号牌「塔」在占星意义上对应火星,也就对应了罗马神话里的战神马尔斯(Mars)。玛尔斯是天神朱庇特(Jupiter,也就是木星)和天后朱诺(Juno,也就是婚神星)的儿子。朱庇特在希腊神话里对应的就是大名鼎鼎的宙斯(Zeus),他俩都是天空与雷电之神, 也是众神之王——在「塔」牌中很少缺席的「雷电」元素,大概就是玛尔斯父亲的影子。
玛尔斯一开始被认为是牲畜、农田和农夫的守护神,算是农业之神(玛尔斯的爷爷,也就是真正的农业之神萨图恩发了一个问号)。后来,随着罗马帝国的扩张,玛尔斯逐渐被视为战争之神,战争是玛尔斯的能力之一。罗马的建立者罗慕路斯与雷穆斯,传说是玛尔斯的孩子,所以罗马人也自称「玛尔斯之子」——或许类似于中国人说的「龙的传人」。1我猜想,罗马人对通过战争、扩张建立罗马帝国的情怀和他们的爱国主义,使得他们将玛尔斯塑造成了一位战神。
玛尔斯的象征标志是「矛与盾」,也就是「♂️」标志——没错,表示男性的性别标志实际上来自于火星的占星学符号;至于女性的标志「♀️」,实际上是金星(Venus,维纳斯)的标志。有一本挺火的有关两性关系的书叫做《男人来自火星 女来自金星》,不知道和这个符号关联有没有关系。2
写到这里,就不得不提一个问题:象征战争和杀戮的马尔斯,是怎么和塔罗牌里的灾祸联系起来的?



在一些来自比利时的塔罗牌中,十六号牌并非「The Tower」,而是「La Foudre」(The Lightning),即闪电,牌面描绘的是闪电劈中一棵树,树下的行人受到了惊吓。3有趣的是,在《吸引力法则》这幅现代的塔罗牌中,牌面描绘的也是闪电劈中大树的场面,只不过树下的人穿着雨衣,背对着画面,似乎毅然决然地要和大自然抗争。在一种名为 Minchiate 的古老的意大利卡牌游戏(这种卡牌游戏的卡牌结构与塔罗牌十分相似,塔罗牌在一开始也是一种游戏卡牌)中,代替「塔」这张牌位置的牌,描绘了两个赤身裸体的人逃离着火的建筑物的画面。这么看来,现代常用的 Rider-Waite 塔罗中的「塔」,大概是以上几种概念的融合——闪电、着火的建筑以及从高塔上跌落的人。
还有一种解读,将一个宗教故事和「塔」牌联系在了一起。一幅名为「耶稣在地狱」的画,描绘了耶稣基督在死后,冲破了地狱的一道大门,给从世界之初就被关在那里的人带来了救赎。在这幅画中被耶稣破坏的大门,就是镶嵌在一座塔里的,某种程度上也描绘了「塔」的毁灭。尽管「塔」象征毁灭,但地狱等不祥之物的毁灭也可以象征救赎——我在抽到「塔」这张牌的时候,经常是自己被许多繁重的任务缠身的时候,抽到这张牌的不久之后,我就会以异常迅速又敷衍了事的方式痛苦地结束掉工作,这和「塔」的这层含义的确很契合。
如果把「塔」的牌面变化和发展历程和战神玛尔斯的形象联系起来,就能发现一些微妙的关联——闪电劈断树木、火灾赶走了居住在房子里的人、地狱之火折磨着被囚禁的人,不仅火与电和战神的形象与出身十分契合,战争伤害无辜者的意向也与天灾残害人类的情节有着相同的内核。尽管玛尔斯受到罗马人的崇拜,但真正的战争无疑让人感到害怕。
换个角度看,战争带来的毁灭和死亡并非总是坏事,如果战争的胜利方是自己,死掉的是让自己感到厌恶和痛苦的东西(比如耶稣撞破了地狱的大门),「塔」也完全可以有积极的解读空间。
除了「耶稣在地狱」,另一个经常与「塔」牌联系起来的宗教故事是「巴别塔」。巴别塔的故事来自于圣经《创世纪》,第 11 章。我手上刚好有 白熊阿丸 赠予我的《圣经》和合本,可以顺手翻一下这段故事,其实很短,只有几句话。



巴别塔的故事接着大洪水过后,挪亚的三个儿子又都生了儿子,形成了宗族,在地上建立了国家。那个时候人类都说着相同的语言,他们组织起来,要建成一座通天塔。耶和华降临,看见地上的人们都说着一样的语言,觉着要是继续下去,他们就没有什么事情干不成了,于是就下去变乱他们的口音,让人类彼此语言不通,之后这巴别塔也就没有建成了。
这个故事大概是以前人们对于「世界上的人都说不同的语言」这个现象的宗教解释,放到现在也有一些象征意义——如果人们都说相同的语言,有着相同的思维方式,能够互相理解,那就没有人类干不成的事情了,更不会有矛盾、冲突和战争。这里的「语言」可以是抽象的,不一定是口音、语法和词汇,不同语言的使用者自然有着不同的思维方式和不同的世界观,比如前文提到的 La Foudre 其实是法语,而 La 是法语中的阴性定冠词,所以对法国人来说,闪电是女性(顺带一提,在法语里,「阴道」这个词是男性)。除了世界观和思维方式的差异,个体之间经验的差异也会造成认知层面的差异,这也会造成个体之间难以理解——这个世界上没有真正的「感同身受」。
如果把塔罗牌中「塔」的崩坏,理解成巴别塔的停工与毁灭,就能解释「塔」牌中描绘的天灾人祸的原因——人们无法相互理解,而这又是人类无法违抗和改变的命运。
无论结果好坏,「塔」牌总会给人一种无力感,无论是从天而降的雷电,还是一些塔罗牌中描绘的海怪袭击、陨石坠落,都是人力无法动摇的。「塔」象征着那些强烈、影响巨大、能引发强烈情感波动的既定事实,那些无论如何都无法改变的事实。结合巴别塔的故事,「塔」指出了人的主观能动性的局限性——世界上不是所有的东西都能被人改变。对于这些无法改变的事实,人只能改变看待它们的方式。
第十七号牌,也就是在「塔」之后的一张牌,是「星星」牌。这两张牌形成的对比很强烈,使得「星星」看起来像是「暴风雨过后的平静」。前文提到,塔不一定是对自己有利的东西的毁灭,还有可能象征着对自己有害的外物的倒塌,一些人也会把「塔」解读为「现有秩序的瓦解」。总之,毁灭可以是中性的和积极的。「星星」牌在某种程度上强调的是「内心秩序」的建立。这两张牌的出现顺序构成了这样一个故事:有些现存的东西必须倒塌,自己才能真的看见自己,建立起新的秩序。
不过,无论是怎样的毁灭,过程都不会好受。天灾虽然可怕,但其实有种宿命感,有的毁灭就是必须发生,命中注定有一劫。就算不谈宿命,也可以从个人成长的角度来谈。必须经历磨难和痛苦过后,人才能获得精神上的成长,内核才能变得更稳定,这也是为什么老年人普遍显得内心更平和。
总之,「塔」虽然可怕,但不妨想象自己的要渡的劫难又少了一个,事情总会过去的,而这件事情过去之后,自己总会收获一些新的感悟,内心会变得更强大。和一些同样爱好塔罗牌的朋友比起来,我更喜欢「塔」和「倒吊人」这种吓人的牌,前者给我一种痛苦之后就能重获平静的感觉,而后者则有一些破茧成蝶的意味。其实我是个受虐狂啦!
呈现逆位的塔罗牌往往给我卡顿和停滞的窒息感,而逆位的「塔」就很微妙了——它让我联想到现实中的比萨斜塔。
比萨斜塔之所以倾斜,是因为建造之初地基只打了三米深,而且是建造在不稳的底土上的,一开始的设计就有致命的缺陷。当时,比萨共和国正忙着打仗,塔在建造到一半的时候停工了大半个世纪,这让底下的土壤有时间沉降加固,不然比萨塔肯定会倒塌。3
在 1990 年,比萨斜塔向公众关闭,因为研究发现比萨斜塔有倒塌风险。在 1990-2001 年这个阶段,人们进行了结构性的加固,在 2008 年,工程师宣布比萨斜塔有史以来第一次停止了移动,并且至少在 200 年内都会保持稳定。4
不过,对历史而言,200 年是很短的时间。
在我看来,「塔」的逆位也意味着灾难,但灾难是内源性的,而非天降横祸。前文提到,必须经历毁灭在能稳固内核,而逆位的「塔」揭示的,正是由内核不稳而导致的毁灭。逆位的「塔」也意味着有补救措施被做出,在短期内都不会有威胁,但这仅仅是推迟了不可避免的倒塌的发生而已——这种并不健康的风平浪静的局面,是需要靠长时间、不间断的神经紧绷,以及亡不完的羊和补不完的牢维持的。就像有人撒了一个谎,如果想要一直隐瞒真相,就需要撒更多的谎来自圆其说,到最后总会露出破绽。
在我看来,逆位的「塔」象征着暴风雨前的平静,而这种平静也预示着暴风雨终将会来临,就像声势浩大的灾难意味着灾难终将会结束,平静终究会回归一样。想要拼命维护地基本来就不稳的塔,只是在掩盖缺陷的存在、掩盖无法改变的事实而已。
用粗糙一点的话来讲,长痛不如短痛,与其每天为不知何时会到来的灾难忧心忡忡,不如让暴风雨来得更猛烈一些,把该经历的都经历了了事。逆位的「塔」预示的正是前一种短期内岁月静好,但长期来看更难受的局面——不过,这也意味着个体有停下来喘口气的时间。
既然这篇文章写「塔」,那还请读者原谅我用「塔」一样的迅速、势不可挡、咄咄逼人、难以预料的方式结尾。
再见!
参见: 玛尔斯 - 维基百科 ↩︎
顺带一提,这个作者还写了好几本畅销书,名字分别是《男人约会往北,女人约会往南》、《男人进卧室向左,女人进卧室向右》和《火星人的秘密食谱,金星人的健康法则》。放到现在的互联网上大概会被喷死。书我没读过,就不评价了。 ↩︎
参见: #History Following Construction - Leaning Tower of Pisa -Wikipedia ↩︎
2025-12-22 08:37:00

巴赫
康塔塔(Cantata)是一种古典乐形式,也叫做「清唱套曲」,是一种包含独唱、重唱、合唱的声乐作品,一般包含多个乐章,大多有管弦乐伴奏。1咖啡康塔塔2是巴赫在 1732 到 1735 年创作的作品,尽管叫做康塔塔,但其实更像是短小的歌剧,而且偏喜剧。
故事的内容是一位父亲想要改掉女儿每天喝咖啡的恶习,威胁她要是不停止喝咖啡,就不准她参加派对、不准上街、没有新裙子穿,女儿说要是能喝咖啡,怎么样都行。最终父亲忍无可忍,说要是不戒掉咖啡,就不给女儿找男人,女儿说要是能找到一个健硕的爱人,自己就不会喝咖啡——最后,女儿偷偷地传播消息:要是不在婚约上写自己可以想什么时候喝咖啡就什么时候喝,自己就不会嫁给他。
我真的很喜欢这段歌词,我想我会背诵下来的 😋
If I couldn’t, three times a day, be allowed to drink my little cup of coffee, in my anguish I will turn into a shriveled-up roast goat.
如果我每天不能美美喝上三次咖啡,我就会痛苦得像一只被炙烤的山羊。Ah! How sweet coffee tastes, more delicious than a thousand kisses, milder than muscatel wine.
啊!咖啡尝起来多甜美!比一千个情人的吻还美味,比麝香葡萄酒更温柔!Coffee, I have to have coffee, and, if someone wants to pamper me, ah, then fill up my coffee again! 3
咖啡啊咖啡,我一定要喝,如果有人要款待我,就请满上我的咖啡杯!
📜
作者抱怨了 macOS Tahoe 在菜单栏里加图标的新设计,他一直认为菜单栏里的图标是一种视觉噪音,看起来很乱,而且可能造成误解。许多产品(比如 Google Sheets)都采用了这种设计,而随着 macOS Tahoe 发布,Apple 也加入了「硬往菜单里塞图标」的大军,他感到很沮丧。
作者认为用于移动窗口、管理窗口布局的图标,用图形来指示位置是很直观的,是好的设计,然而,如果没有好的理由,就不应该往菜单里塞图标。讽刺的是,Apple 实际上违背了他们自己的 设计指导 ,相关的文档中有一节专门讨论图标在菜单中的使用。
There are a few standard symbols you can use to indicate additional information in menus…Don’t use other, arbitrary symbols in menus, because they add visual clutter and may confuse people.
有一些标准的符号可以用在菜单中指示附加信息。不要在菜单中随意使用其他的符号,因为它们可能会造成视觉杂乱、使人困惑。
我也不喜欢菜单里硬塞图标的设计(还有在 PPT 里塞语义模糊、与上下文无关的图标),我认为这种设计本质上是缺少思考的体现,没有考虑设计是否必要,只是想要把空间占满,明明有些空白就应该留着。
📜
作者观察到了一种现象:如今的软件开发者非常喜欢用动物、虚构角色和一些意义不明的名词来命名自己的软件,像 Cobra、Viper 和 Melody,使得整个软件生态变得像是动物园,最大的问题是,这让那些排查依赖问题的开发者很头疼,看着长长的依赖树却根本不知道每个依赖是用来做什么的。作者指出,其他科学领域里不会把这种命名方式视作专业行为——如果一个化学家把一个分子命名为 Steve,仅仅因为 Steve 这个名字很好笑,而且会让他的论文更接地气,这无异于社会性自杀。
作者指出,以前的软件名称都有表意作用,比如早期的编程语言名字:
还有早期的 Emacs 编辑器里的一些名字,dired 是 Directory Editor(目录编辑器)、eshell 是 Emacs Shell;一些命令也是如此,比如 grep 是 Global Regular Expression Print(全局正则表达式打印),sed 是 Stream Editor(流编辑器),cat 是 Concatenate(串联)。
作者认为动物园式的命名方式会造成认知债务(cognitive tax),使开发者不得不花更多的时间来理解工具的名字。他认为软件开发者应该使用复合词,根据用途来命名软件,至于宣传和接地气的部分,完全可以单独做一个吉祥物,比如 PostgreSQL 的吉祥物是一只名叫 Slonik 的大象——不要把软件的名字当成吉祥物。
我其实不能完全认同作者的观点。实话实说,在读这篇文章之前,我完全不知道 grep 的全名是「全局正则表达式打印」而 Emacs 里的 dired 是目录编辑器——这几个东西我都用过,grep 还是我最常用的命令之一,然而,它们的名字对我而言,和 Cobra、Viper 之类的没有太多区别。作者可能忽略了,许多人(尤其是非英语母语者)并不在乎一个工具的全名是什么,只要把用途和名字匹配起来就好了——所有程序员都会写 SQL,但除了学校里的老师可能会在 PPT 上写「SQL 的全名是 Structured Query Language,结构化查询语言」之外,还有多少人在乎呢?像 MySQL 和 PostgreSQL 这样的数据库管理系统,明明不是一种 DSL 或者 SQL 的变体,却还是使用了 SQL 的名字,这个词已经变成广义上的关系型数据库的代称了。
更别提 FORTRAN、COBOL 和 Lisp 了,如果不是真心对这几门语言感兴趣的黑客,谁能一眼看出来他们表示什么意思?作者所提到的认知债务,在这些「具有描述性」的名字中依然存在。此外,我也不太能明白为什么作者认为 Go 语言是一个有点蠢的名字,难道必须起一个像 http-request-validator 一样的名字,才能算好吗?那同类软件之间要如何做出区分呢?
不过,我也要承认,随便拿一个几乎毫无关联的名词做软件的名字,的确不太妥当,但我认为不妥当的点在于自我意识过剩和对作品以及用户不负责,而不是「名称不具有描述性」这个理由。比如,一个开发者很喜欢宝可梦,便把自己开发的一个系统清理工具命名为 Squirtle(杰尼龟),就不太妥当了,因为名称与工具之间几乎没有任何关联,或者说脑回路过于奇特,其他人难以建立起关联。但是,如果把一个用于将网盘挂载(mount)到文件系统中的软件命名为 Pokémount,我认为这不失为在个性和描述性之间的一种平衡(只不过这个例子可能会有版权问题,但我觉得我表达清楚我的观点了)。
作者在文中提到了一个名为 libsodium 的加密库,说自己看到这个名字的时候必须从「解决问题模式」切换到「一探究竟模式」,才能搞清楚这个库为什么叫这个名字——加密往往涉及到「加盐」,而名字中的 Sodium(钠)明显代指「盐」,这个名字实际上还是具有描述性的。我想说的是,开发者完全可以更专注,在解决问题的时候收一收自己的好奇心,就像我在用 grep 筛选查看返回信息的时候,只会专注找我想要的内容,而不是纠结 grep 这四个字母究竟是什么意思。
📜
作者表示自己作为中文母语者,更喜欢用双重否定表达肯定,比如「不错」「没事」「没错」,而他观察到英文使用者更偏好直接肯定,比如「Decent」「Okay」「Right」。他认为中文使用者更偏好使用双重否定,其实是一种留白,刻意留下了一定的模糊性以避免直接承担表达的责任,设立了一种心理屏障。例如,A 在选购某种商品时寻求了 B 的建议,如果 B 说「我觉得很好」,而 A 买下之后却遇到了各种不如意,那 B 就有可能承担 A 的选择带来的后果;如果 B 说「还行吧,不坏」,没有得到直接肯定答复的 A 需要承担全部的选择带来的责任。作者认为两种语言实际上构建了两种不同的现实模型(realities)。
毋庸置疑,语言会影响思维方式,不过我并不赞同这种过于简单粗暴的二分法,实际上「Not bad」这个说法也很常见,甚至比中文里还要常见,因为中国人在相似场景下可能更喜欢说「还行」——一个语气更弱的直接肯定,而不是双重否定。
作者似乎也没有意识到,世界上说英语的人很多,全世界都有英语使用者,而作者提到的偏好肯定的、简单直白的英语,更像是美国人说的英语。文章下有一条评论是这样说的:
我只是过来说一句下面已经有人说过的话:你显然没有和某一类英格兰人打过交道。
美国人是喜欢玩火柴和刀片的小孩子。
Came here to say what someone else has already said below: you’ve obviously had little to do with a certain sort of Englishman.
Americans are children playing with matches and razor blades.
不过,作者的确在自己的认知范围内做出了足够多的分析,文章写得也足够条理清晰,读起来很有意思。只不过,这篇文章收到的一些批评也提醒我:不要陷入太过简单的二元对立陷阱中,真实情况往往更复杂;分析现象时最好要找到足够多的依据,对于这类文化问题,最好找一些英语使用者和中文使用者来讨论,或者请他们读一读文章草稿。
用于测试和 Debug 原子化 CSS 的工具,支持 TailwindCSS、UnoCSS、PandaCSS 等其他原子化 CSS 库。刚发现的时候还觉得用处不大,因为原子 CSS 的类名本身就很清晰了,但发现这个工具的同一天,我就遇到了一个奇怪的 UnoCSS 导致的问题——有一个类只有变量,但没有实际发挥作用的属性。如果没有这个 Atomic CSS Devtools,我可能要在 Styles 标签页翻找好久才能发现。
这个插件在前端开发者工具中添加了一个 Atomic CSS 标签页,会把选中元素的样式全部列出来,在右侧显示是哪个类提供了这个样式。

访问: GitHub - astahmer/atomic-css-devtools
一个跨平台的桌面端应用开发框架,后端使用 Go 语言,UI 可以使用任何前端技术构建。和 Tauri 一样,Wails 不会把浏览器内核打包到最终的软件包里,而是使用系统默认 WebView,软件包的大小会比 Electron 小很多。
Tauri 使用 Rust 语言,而 Wails 使用 Go 语言,两者在前端技术上都没有限制。除了 Tauri 出现的时间比较早,生态可能更成熟之外,我认为两者都是不错的跨平台开发选择——不过相比 Electron,这两个框架在生态上都没有太大优势。
访问: Wails
一个比较新的跨平台 RSS 阅读器,用 Wails 开发。我并没有觉得 MrRSS 的设计有多惊艳,但我对它使用的技术栈很有好感,使用的是 Go 语言和 Vue.js(如果用的是 Node.js 和 React 我大概会直接晕过去)。作者正在积极开发,如果你在选择新的 RSS 阅读器,MrRSS 可能是一个不错的选择。
Fediverse(联邦宇宙)是去中心化的社交网络,所有使用相同协议的实例能够相互通信,使得用户可以在一个服务器上查看整个 Fediverse 中架设于其他服务器上的社交媒体实例上的内容。最常用的协议是 ActivityPub,支持这个协议的软件有 Mastodon 和 Misskey 等微博(Microblogging)平台,像 Ghost 这样的内容管理平台也有支持 ActivityPub 的,也属于联邦宇宙的一部分。
相比 Twitter(我不想用 X 这个名字)和 Instagram 这类由某个科技公司提供的社交媒体,Fediverse 更自由,用户可以选择在自己信任的服务器上注册账号(或者自己架设服务器),只需要电子邮箱就能注册,只要在任何一个支持 ActivityPub 协议的服务器上拥有账号,就能在整个 Fediverse 上和其他人交流,而且,在这里没有人想要给你推荐广告、收集和售卖你的数据。
我刚开始探索 Fediverse,所以选择了在一个公共实例上注册,未来兴许会自建实例。 @[email protected] 是我的 Mastodon 账号,期待能和你在联邦宇宙上相遇。
indieweb.org 是这样介绍自己的:
IndieWeb 是专注于人的网络,用于替代「大公司网络」。
我们是由独立的个人网站组成的社群,基于这样的原则:拥有你自己的域名,把域名用作你最主要的线上身份,在你自己的网站上优先发表内容(发在其他地方是可选的),并且拥有你的内容。
The IndieWeb is a people-focused alternative to the “corporate web”.
We are a community of independent and personal websites based on the principles of: owning your domain and using it as your primary online identity, publishing on your own site first (optionally elsewhere), and owning your content.
之前一直很喜欢 IndieWeb 的概念,但没有深入了解。其实加入 IndieWeb 也很简单,最主要的步骤就是拥有自己的域名和网站,优先在网站上发表内容,之后再同步到其他地方,这件事情我已经在做了。要说别的什么东西,大概就是设置一下 Microformats、配置 IndieAuth 和支持 Webmention。
Microformats 是基于 HTML 的一种标记内容和身份的格式,主要用来帮助自动化工具展示作者信息和内容信息,详情可查阅 IndieWeb Wiki 。
至于 IndieAuth,就是给链接加上 rel="me" 属性以声明链接到的个人资料的确属于自己,这个链接可以是 <link> 也可以是 <a>,以下是我的写法:
<link rel="me" href="https://c7.io/@eltrac">
<link rel="me" href="https://github.com/BigCoke233" />
<link rel="me" href="mailto:[email protected]" />
确保网站上有 rel="me" 的内容之后,还需要在以上链接中链接到自己的网站,比如在 GitHub 个人资料中设置个人主页链接。许多 IndieWeb 相关的服务,比如
webmention.io
,支持 Web Sign-In,只要提前配置好了 IndieAuth,就可以通过自己指定的 GitHub 账号或电子邮箱等方式,以域名拥有者的身份登录。
如果你拉到网页最下方,会发现博客的评论按钮旁边多了一个图标为 @ 的按钮,这就是 Webmention,一个 W3C 标准。你可以以发送 HTTP 请求的方式向支持 Webmention 的网站发送回复、点赞、提及等回应,自己也可以作为接收方接收这种回应,展示在网页上。只要配置得当,在自己的网站中插入链接就能像在社交媒体上用 @用户名 的形式提及其他用户一样给其他人发送通知,不过要完全自动化还是有些麻烦的。
我使用
webmention.io
提供的服务来接收 Webmention,在 <head> 中添加了以下代码来声明我的 Webmention 端口。
<link rel="webmention" href="https://webmention.io/www.geedea.pro/webmention" />
向这个端口发送 Webmention,就会展示在我的网站上。你可以点开博客下方的 Webmention 按钮,查看这一页收到的 Webmention,也可以通过表单提交你的网址以手动发送 Webmention,不过发送 Webmention 的前提是你提交的网址中有链接到这个页面。4
我目前还没有配置自动发送 Webmention,用静态网站生成器还是不太方便做自动化,要自己配置 GitHub Actions,兴许有空了我会尝试一下。
在发布周刊之前我就收到了两个 Mentions,有些惊喜,如果你不喜欢发评论,或者没有 GitHub 账号,可以在自己的网站上撰写一篇文章回应我,又或者只是在写文的时候简单提及,无论怎样我都会很开心的。
参见: 康塔塔 - 维基百科 ↩︎
原名:Schweigt stille, plaudert nicht (Be still, stop chattering), BWV 211,也叫 Coffee Cantata ↩︎
歌词来源: EMMANUEL MUSIC ↩︎
经过测试,我发现在社交媒体上发布链接并提交 Webmention 并不能成功推送通知,因为发送 Webmention 的前提是源链接(也就是你提交的链接)指向的网页中,有链接到目标链接(也就是你要发送 Webmention 的网页)的超链接。社交媒体的内容一般是通过 JavaScript 动态展示的,HTML 中没有内容,所以也就检测不到链接。 ↩︎
2025-12-20 17:33:00
So, my roommate just threw a litany of facts about psychoanalysis and Buddhism on me, like all kinds of name-dropping and inconsistent statements. I wasn’t paying much attention because I was just taking a short break from my work, and honestly, I don’t give a damn.
I felt the urge to write something about this random experience immediately afterward. I think the reason is that — he made me feel bad about myself, like I was a muggle who cannot appreciate the beauty of philosophy, which I do read a lot about.
Why do I feel that? I think it’s because I don’t feel seen. It feels like he’s only talking to me when he needs an ear, who is human but always accepting, and doesn’t talk back when there’s a disagreement or merely a confusion. I had this impression because:
Upon hearing his passive-aggressive response, I stopped talking and went back to my room. I don’t like the energy there. As far as I’m concerned, keeping this conversation will do no good. (which is not actually a conversation, because you see, a conversation involves two individuals respecting each other, not just one person dumping unclear claims.) I’ve tried to exchange some ideas before, but his mind is not to be changed. He never stood corrected. And I’m not even trying to change his mind here. I just wanted to understand his opinion (or the opinions he read from someone else). Apparently, that was too much to ask for.
Why do you engage in or even start a conversation, when you make no effort to be understood? It is as simple as defining some terms, clarifying some confusion, and making a goddamn point.
By the way, this is exactly what people do on most of the Internet. They expect people to understand when they’re only typing a few words or making a 2-minute video about their opinion (or is it really an opinion?). And when people don’t understand (and they’re supposed to not understand), they get mad, and yet another meaningless time-consuming Internet argument begins.
Just stop. Please make some effort to be understood in the first place. Define the context. Explain the reasons. Answer questions without mistaking them as trolls. Learn to speak some meaningful words. If you find that’s too hard to do in speech, then write. Start a blog. I’m sure there will be your audience on the Indie Web. Just don’t pick me as your unwilling one.