+++
title = '稻草人周刊 Vol.71'
subtitle = '擦马桶如何帮我维持学者风范?'
tags = [
"软件",
"生活",
"健康",
"道德",
"哲学",
"自由软件",
]
date = 2026-03-09 00:03:38
draft = false
toc = true
toot = 'https://akk.eltr.ac/objects/173b0e00-88f5-44dd-b081-1c73e7883025'
+++
{{< music album=true title="Voicenotes" artist="Charlie Puth" cover="https://img.eltr.ac/geedeapro/weekly/Charlie_Puth_Voicenotes.png" apple="https://music.apple.com/cn/album/voicenotes/1293229669" spotify="https://open.spotify.com/album/0mZIUXje90JtHxPNzWsJNR" >}}
《Voicenotes》是 Charlie Puth 的第二张录音室专辑,2018 年的热单《Attention》就出自这张专辑。最近在找几年前的专辑来听,走路和跑步时常听这一张。我很喜欢 Charlie Puth 的风格,不过我缺乏基本的乐理知识,不知道从何说起了。这张专辑里我最喜欢的歌曲其实是第一首《The Way I Am》。
> I'ma tell 'em all
>
> I'ma tell 'em all that you could either hate me or love me
>
> But that's just the way I am
顺带一提,Charlie Puth 的下一张专辑《Whatever's Clever》在本月底就要发行了。我想在这里引用 Taylor Swift 歌曲里的一句歌词:
> Charlie Puth should be a bigger artist。[^1]
就这样,继续看周刊吧。如果不麻烦的话,还请留意这一期的「当下」栏目。
---
## 连接
### 程序员如何沟通?
> [!note] 📜
> [What I Do](https://inessential.com/what-i-do.html)
[NetNewsWire](https://netnewswire.com/)(macOS 和 iOS 上的自由且开源的 RSS 阅读器)的开发者 Brent Simmons 尝试向亲友解释他的工作,我很喜欢文中的某些句子:
> I know I’m a big nerd and what I do must seem all super nerdy and vague.
> 我知道我是个大书呆子,我做的事情一定看起来超级书呆子,让人看不明白。
> My blog inessential.com (this site) has been going since 1999. I mostly write about Apple nerd stuff. Other Apple nerds read it.
> 我的博客 inessential.com(这个网站)从 1999 年就开始写了。我主要写 Apple 书呆子相关的东西。其他的 Apple 书呆子会读。
> In the Apple nerd world I’m the NetNewsWire guy.
> 在 Apple 书呆子们的世界里我就是 NetNewsWire 哥。
> So I’m a nerd and a computer programmer. But what I am not is a math nerd... I’m usually the worst person at math in any room I’m in. Shock, I know!
> 对,我是个书呆子,是个程序员。但我绝对不是数学书呆子…… 我在任何地方通常都是那个数学最差的人。令人震惊,对吧!?
好了,对 nerd 这个词的滥用我们看够了。读完之后我突然觉得 Brent 变得很亲切,因为我和他一样,数学非常差劲!虽然有些难以启齿,但仔细想想也没什么好隐瞒的:我的高考数学成绩只有 68 分!Brent 说他没有大学毕业,但就算毕业了,也会得到英语学位,而不是数学学位。
似乎全世界都有这样的误解:程序员一定数学很好,要学编程一定要先学好数学。我记得我的初中老师就问过我:“你学这个编程,难道不需要把数学学好吗?”
他关于软件开发的观点我很喜欢,他认为==编程的重点不是数学,而是沟通==。首先是程序员和机器的沟通,更重要地,如果你在开发一个 App,也要考虑如何设计软件,让软件更好地和用户沟通。我在学软件工程相关的课程,例如需求工程、软件项目管理和架构设计的时候,也逐渐意识到,软件开发中最重要的过程从来不是写代码,而是沟通。架构设计是一种沟通、需求获取是一种沟通,更别提开发团队内部的沟通和与用户的沟通了——这也是我不担心程序员会被 LLM 取代的原因。
> Like any other popular art form, it’s about connecting with humans.
> 就和其他流行的艺术形式一样,重点在于和人的链接。
我想我比起后端更喜欢前端开发的原因也是如此,前端与用户的链接感会更强。不过从技术上,我还是不太喜欢 JavaScript 生态。记得去年还有过学 Swift 做苹果开发的想法,兴许最近也可以捡起来了,先等水逆过去吧。
### 擦马桶如何帮我维持学者风范?
> [!note] 📻
> [《独树不成林》315 - 擦马桶如何帮我维持学者风范](https://www.xiaoyuzhoufm.com/episode/69ab81365b2d0ed069b63f7d)
听这期博客的前几天才刷过马桶,亮到能反光。于是我一边把洗手间的各个角落刷了一遍,一边把这期播客听了两遍。我最喜欢的句子是:
> 在网上喷粪不如在现实中擦粪。
树老师说他不焦虑、不想死,是因为每天都要做家务,没空想东想西。整天坐在电脑前从事思考工作的人容易产生这样一种假象,认为一切都在控制当中,然而当生活中的小事出了差错,这种差错很容易降他们击垮,陷入崩溃当中。我也赞同,在网络世界、精神世界、知识世界中待久了,需要关注现实,而且是与自己有着直接关联的现实,而非别人的生活、海另一边的战争、某个无聊的家伙对自己的谩骂。
刚打开这期播客没多久,我就做了一个决定。我找到我的室友,告诉他以后的家务都由我来做。这里要交代一个背景:先前我们是按照时间来划分家务职责的,一个人负责一天,但他老是忘记,我也常因为各种小事跳过自己做家务的那一天;最近改成了按照事务划分,每个人负责一部分,当时厕所划分给了我,与是我立马把马桶擦得锃亮给他打了个样,可惜激励效果欠佳。某天我看不下去,自己动手吸尘拖地(这本该是他负责的工作)。于是我想,比起每天阴湿地暗暗谩骂对方不好好做家务,不如自己把活儿全干了。我告诉他接下来的家务我全包了之后,他还有些尴尬地回应说自己最近太忙了。
我最近也没闲着,野心勃勃地同时推进着两个个人项目,学校那边也有各种琐事,辅导员和某些老师也在推着我做职业规划,焦虑是难免的。正是因此,我才开始比以往更加频繁、细致地做家务,把自己的大脑从想东想西的状态拉出来,开始关注身体、生活环境和秩序。
*所以,读者有没有什么瓷砖和木地板的清洁剂推荐呢?*
### 亚当·斯密如何颠覆古典美德?
> [!note] 📻
> [《政治哲学圆桌》15 - 亚当·斯密如何颠覆古典美德?](https://www.xiaoyuzhoufm.com/episode/69a8f5ebc8cdeb38c2e5a3ed)
~~赵老师的讲话方式指定跟树老师学了不少。~~
播客前半部分阐述了亚当·斯密(《国富论》的作者,现代经济学之父)的生平和轶闻,后半部分进入正题,讲述亚当·斯密眼中现代社会应有的美德,与古典美德有何不同,以及他对于古典美德的观点。
美德在拉丁语中写作 virtus,也就是如今英语里的 virtue,这个词的词根 *vir* 意思是「男人」,拉丁语中美德的本意是 manliness,可以译作「男子气概」。古希腊语中的美德 ἀρετή 也是类似的意思。谈到古典美德,一般会说到柏拉图的四个枢德,即节制、审慎、勇气和正义[^2],其中勇气是最重要的。相对的,温柔等特质在古典语境下通常与女性联系起来。简单来说,在古希腊人和古罗马人看来,最勇猛的战士就是最具美德的人。
亚当·斯密认为,古典美德所强调的男子气概是野蛮的、原始的、落后的,现代社会所需要的美德应该是具有同理心(sympathy)的美德,即设身处地为他人着想。在古典美德中,美德有高低贵贱之分,而且往往是生来就具有或者没有的,比如贵族的美德就要比奴隶的美德更高;而亚当·斯密认为的美德是人人都能够获得的,是在社会交往中通过反思获得的。简单来说,亚当·斯密的美德是一种更温顺的美德,如果说古典美德实际上是男人的美德,那么亚当·斯密的美德就更接近女人的美德。不过,亚当·斯密所言的同理心其实和大多数人理解的意思也有差异,比如,他认为和商贩交易也是同理心的体现,因为顾客设身处地为对方着想,提供了对方所需要的东西;再比如,他认为富人和快乐的人更容易引发同理心,而不是穷人和悲伤的人。
对于这两种美德,也可以联系到第 42 期周刊引用的[古典审美与现代审丑](/posts/weekly/42/#古典审美与现代审丑)。在我看来,古典美德在如今的视角下更接近于自我要求,而强调同理心的现代美德更接近于社会要求。个体可以要求自身节制,比如节制饮食,但在社会层面,应该对肥胖者有同理心,不去责备他们缺乏节制的美德。[^3]
### 锻炼是为了什么?
> [!note] 📻
> [《独树不成林》313 - 如何学习快乐老女人运动法](https://www.xiaoyuzhoufm.com/episode/69a84afae46749707ffdff3c)
树老师在这期运动闲聊播客里分享了她母亲的锻炼心态,她认为她母亲的心态要比她自己和许多年轻人都健康不少。她的母亲在过去的几十年人生里都没有任何运动习惯,直到年过五十,发现身体正在明显地衰老、恶化,才开始为了维持生命而运动。她锻炼的目的是为了对抗衰老和掌控身体,是为了锻炼神经系统调动身体部位的能力,每天能动起来她就很快乐了。
对比另一种锻炼心态,追求进步、对比和竞争的锻炼,「快乐老女人」的锻炼心态要更健康。前者容易陷入这样的窘境:一旦做不到进步,或者进步不够明显,锻炼的乐趣和动力就会大大减少;一旦有了对比,锻炼的目的就不再是满足自己身体的需求,而是为了迎合别人的审视;一旦有了竞争,人就会感到焦虑。这种锻炼心态甚至成为了门槛,让没有锻炼习惯的人认为,自己要是没有运动天赋,就不该开始运动。实际上,每天都让自己动起来这个事实本身就值得骄傲,就像自己又活了一天一样值得庆祝。
关于锻炼的目的,我的观点可以引用 Steven Pressfield 的《[一生之敌](/library/2025/一生之敌/)》中的一句话来阐释:*除了爱,出于任何其他原因而从事艺术创作,都是卖淫。* 把这句话的「从事艺术创作」换成「锻炼」,就是我的观点,而且我觉得这句话用在「身体」相关的话题上,显得更有说服力。
锻炼是为了保证身体的机能,提升神经适应性,保证自己的身体能做到它应该做到的事情。简单来说,是为了健康,而对健康的追求就是对生命的热爱——*我那个经常跑健身房,买五花八门运动补剂,没事就对着镜子拗造型的室友,还对我这个目的颇有微词。* 我向来很欣赏热爱力量训练并关注身体变化的人,不过我欣赏的是能从训练和身体变化本身得到满足的人。
更准确地说,我欣赏所有好好为自己和自己热爱的事情活着的人,在我看来,这才是生命力的体现,而生命本身就是意义。
## 星群
### GRAM
[Zed](https://zed.dev/) 的分支,托管在 Codeberg 上,移除了服务条款和 AI 功能,是纯粹的自由软件,也是纯粹的编辑器。Zed 和 GRAM 是用 Rust 语言编写的 VS Code 替代品,换用 Neovim 之前我一直在使用 Zed,至少在 macOS 上启动速度很快,界面也很干净,是我很喜欢的用户界面风格。
不过 Zed 并不是纯粹的自由软件,因为它有[服务条款](https://zed.dev/terms),还有付费的 AI 功能,是开源的商业软件。最近 Hacker News 上还有有关 Zed 的小[讨论](https://news.ycombinator.com/item?id=47240158),因为 Zed 在服务条款里增加了年龄要求,不过并不是威胁隐私的年龄「验证」,相关内容见[我的帖文](https://akk.eltr.ac/objects/bdd43b12-41ed-41b8-9bf5-14d492082d3b)。尽管本体是 GPL 协议,但项目的 README 下赫然写着:
> Zed is developed by Zed Industries, Inc., a for-profit company.
那就不能指望挣钱的企业抛弃讨厌的 AI 功能了。GPL 协议的好处就是自由,可以随意更改和分发软件,于是一个移除了服务条款和 AI 功能的 Zed 编辑器就诞生了!*也不知道我这个 Neovim 用户在激动什么。*

如果你在找 VS Code 替代品[^4],GRAM 值得一试。
访问:[GRAM](https://gram.liten.app/) 或 [Codeberg 仓库](https://codeberg.org/GramEditor/gram)
### blogtato
用 Rust 编写,基于命令行的 RSS 阅读器,无需订阅,本地优先,而且支持使用 Git 同步数据。不过说是阅读器,其实更像是 RSS 更新提示器。这对我来说更好,我一直不太喜欢直接在 NetNewsWire 里阅读文章,更喜欢到源网站上阅读。
`blogtato` 的操作很简单:
```shell
# 添加 RSS/Atom 源,blogtato 会自动搜寻订阅源的具体地址
blog feed add https://www.geedea.pro/
# 同步更新,除非执行这个命令,否则 blogtato 不会发送网络请求
# 也不会占用除存除外的任何系统资源
blog sync
# 查看更新
blog
# 在默认浏览器打开编号为 x 的文章
blog x open
```
还提供了一些好用的筛选和分组功能:
```shell
# 按日期、周或订阅源分组
blog /d
blog /w
blog /f
# 合并分组
blog /d /f
# 按照订阅源筛选
blog @hn
# 按照阅读状态筛选
blog .unread
blog .read
blog .all
# 按时间筛选
blog 1w..
blog 3m..1m
blog /d 2w..1w
# 合并筛选和分组
blog @hn .unread /d
```
`blogtato` 原生支持 Git 同步,采用无冲突的设计,同步数据时无需担忧 Git 冲突,数据全部以 JSONL[^5] 存储在本地。
我很喜欢 `blogtato` 的设计理念,我一两个月前也有用命令行做一个 RSS 阅读器或者书签管理器的想法,但一直没有去实现,没想到这几天就在 Hacker News 上看到有人做出来了。可惜目前还不支持导入和导出 OPML 格式,于是我跟作者提了 [Issue](https://github.com/kantord/blogtato/issues/89),很快收到了回复。对方表示写一个 Shell 脚本导入也不难(毕竟是命令行工具),但其实项目里已经有解析 XML 的依赖项了,所以作为 `blogtato` 本身的功能加上也没有什么成本,他说他会看看。很期待更新!
我前几天还在联邦宇宙上吐槽,有了 [AeroSpace](https://nikitabobko.github.io/AeroSpace/) 和 [Vimium](https://vimium.github.io/) 插件之后,我的日常操作都可以用 Vim 键位完成,可惜每次查看 RSS 更新的时候,都苦于 NetNewsWire 不支持用 `j` 和 `k` 上下移动。`blogtato` 至少能保证我的手不用离开键盘。
访问:[kantord/blogtato](https://github.com/kantord/blogtato)
## 当下
不出意外的话,这应该是《稻草人周刊》里最后一次出现「当下」这个栏目,原因是我正在计划每月更新的新闻报,也就是「Newsletter」,名字暂时还没有定下来。新闻报中计划包含这些内容:
1. 过去一个月里,自认为写得不错的博客文章(其实《稻草人周刊》也有「回拨」这个栏目,原本打算每个月写一次,但总是忘记,干脆放到月刊里)
2. 正在进行或已经完成的项目,情况以及进度回报(我对「项目」的定义很广泛,一般来说是软件项目,也可以是目标明确且耗时较长的大任务,比如「把家里的所有塑料制品都替换掉」)
3. 书影音游回顾,包含这个月看的剧、写过的书评合集和完整听过的专辑等(也希望能借此治好我的电子阳痿吧)
这意味着《稻草人周刊》会更关注于分享我每周读到的有趣文章、听过的觉得有启发的播客、发现的觉得不错的项目。如果你关心我最近做了什么事情,可以等待新的月刊,预计会在四月初发布第一期;或者,你可以在[联邦宇宙](https://akk.eltr.ac/@eltrac)上关注我,可以用 Mastodon、Misskey、Pleroma 等联邦宇宙软件与我社交。
## 切片
- 状态低迷、注意力涣散和效率低下的状态持续挺久了,春节结束回到家也不见好转,遂求助玄学,盘了半天月运势和周运势也没看出个名堂,直到突然被提醒天象:从二月底开始水星逆行了,直到三月 20 日结束。
水逆啊,那不稀奇了,放心躺吧。
*双子座加月升处女已经被水逆折磨习惯了*
- 夜里睡不着,爬起来看手机,很奇怪,根据我的经验,刷信息流实际上能让我更容易入睡,因为大脑会很快感到疲惫。疲惫之前,看到了 Minecraft 26.1 版本的更新,给所有生物都增加了幼年形态,很可爱。
还有史诗级的更新,命名牌可以用纸和铁粒(以及金粒和铜粒)合成了!钓鱼和开箱子找命名牌的时代结束了!虽然是很好的更新,但总觉得有些失落——原来现在 Minecraft 里的命名牌已经不是稀奇的事物了啊。
有些怀念以前的游戏时光,好久没有畅快地和朋友玩一下午 Minecraft 或者饥荒了。想拉拢几个人来,搭一个 Minecraft 服务器,也不知道能不能找到人,或者说自己能不能抽出时间。
周刊的最后,给各位看看我几年前自己画的 Minecraft 皮肤吧。
{{< gallery >}}


{{ gallery >}}
[^1]: 出自《The Tortured Poets' Department》
[^2]: 参见:[美德 - Wikipedia](https://zh.wikipedia.org/zh-hans/%E7%BE%8E%E5%BE%B7#:~:text=%E6%BA%90%E8%87%AA%E4%BA%8E%E6%9F%8F%E6%8B%89%E5%9B%BE%E7%9A%84%E5%9B%9B%E4%B8%AA%E7%BB%8F%E5%85%B8%E7%9A%84%E5%9F%BA%E6%9C%AC%E7%BE%8E%E5%BE%B7%EF%BC%88%E6%9E%A2%E5%BE%B7%EF%BC%89%E6%98%AF%EF%BC%9A%E8%8A%82%E5%88%B6%EF%BC%8C%E5%AE%A1%E6%85%8E%EF%BC%8C%E5%8B%87%E6%B0%94%E5%92%8C%E6%AD%A3%E4%B9%89%E3%80%82)
[^3]: 相关博客文章:《[关于肥胖的杂谈](/essays/关于肥胖的杂谈/)》
[^4]: 是时候抛弃这个基于 Electron 的软件,~~停止用浏览器编辑代码了~~
[^5]: JSONL 是 JSON Lines 的意思,是每行都是一个有效的 JSON 对象的存储格式,可以理解为把一个 JSON 数组写入文件,但是没有前后的 `[]`。