大脑充血 Vol.92
我发现自己遇到「不测风云」,也就是那些难以预料的烦心事时,已经能够做到表面平静地发疯十分钟,然后该干嘛干嘛。这周济南总是莫名其妙地开始刮大风、下暴雨,虽然讨厌袜子被打湿的感觉,但包里常备着折叠伞,也还算从容不迫。
其实还有些家人和工作上的大小事,不过我现在更在乎自己刚刚从 MUJI 买的粘毛刷好不好用,今天有没有吃燕麦喝酸奶,明天早上应该读《第一个人》还是《现象学导论》。印象中不少「重要人物」常常把自己的生活外包给别人,以腾出时间关注那些更具商业价值的事情。而我呢?如果我每天回到家不能亲自用吸尘器把地板拖得一尘不染,听见灶台点燃的热水沸腾的声音,我都不知道自己怎么活下去。
吾仅悉落
MY SKYSCRAPER 专辑
Nirosta Steel
复古,有种…… 既老派又年轻的奇妙听感。小众中透露着沉稳,但又没有很沉稳,甚至有些随意,大概可以这样总结。
最喜欢《LOST IN MUSIC》《MY NAME IS NIGHT》《FRESH FEELING》《SPECIAL WEAKNESS》,大概就是整张专辑篇中后段的部分。
作者如今六十多岁了,专辑是沉淀了几十年的音乐成果;还是酷儿,有几首歌据说是写给男友的(尽管我没听出来是哪几首);貌似还特别喜欢中国文化,挺好的,但是在音乐最后听到中式的敲锣打鼓和京剧唱腔实在是有些令人措手不及。
Walking to a different town And talking–what did I learn? Talking to a different crowd And walking–what did I learn? What did I do today? What did I do today? What did I do today?
I was holding on for something special Holding on for something new Holding on!
——《SPECIAL WEAKNESS》
心重如毛
基因编辑技术走到哪一步了?
📻 《万物生长》从六岁女孩的悲剧,聊聊我们离基因编辑治疗还有多远
最近这几天最大的新闻应该是接受基因编辑治疗的女孩意外离世的事件了。相关报道发表在《Science》上,大致死因是用于作为基因编辑载体的病毒引发了女孩的免疫反应,导致肝肾功能出现问题,女孩不久后就离世了。
一名六岁罕见病患儿,在上海接受前沿基因编辑试验后不幸离世,家属持续维权,要求厘清责任。消息从周五晚间开始在自媒体圈层扩散,随后逐步被官方媒体转载。截至录音当下,仅有上海交大医学院发布声明称启动调查,完整官方结论尚未公布。
《万物生长 FM》是讨论生命科学相关的播客,这档节目的主持人大多都是相关行业的从业者或研究人员,其中的一些对基因编辑技术也有涉猎。播客先是梳理和复盘了事件全貌,然后讨论了基因编辑疗法的现状,表达了他们对此事的看法。其中的不少观点,就目前来看,要比主流媒体更具专业性。
他们批评不少自媒体将此事件与贺建奎事件并列而谈的行为(据说这次事件的主要负责人仇子龙教授,曾经还声讨过贺建奎),因为贺建奎事件完全是私下进行的,他对婴儿进行基因编辑完全没有获得任何审批,再者,基因编辑的胚胎在发育之后,还会将被编辑过后的基因遗传给下一代,是更复杂的伦理问题。本次仇子龙事件,是经过必要的审批的,也就是“合规”的。所以,除了指责仇子龙本人,还应该反思的是整个审批的流程体系。据说基因编辑的药物在猴子身上试验时就出现了较强的负面反应,而相关机构在动物试验的毒理报告出来之前就通过了临床试验的审批,这很匪夷所思。仇子龙教授本人,除了接受女孩家长的研究资助之外,还收取了茅台酒、手机和平板电脑等赠礼。这两个关键点才是更值得关注的,整件事情都非常诡异且令人不安。
无论怎么说,目前所能看到的就只有《Science》的报道和各种媒体的转发和添油加醋,此外就是上海交通大学发布的「正在调查中」的声明。要更好地了解事件全貌,还要等待更多更可靠的信息来源发布报道。
有史以来最强的厄尔尼诺现象
📜 The Strongest El Niño Ever
如果读者在高中学过地理的话,应该对厄尔尼诺现象这个词有所耳闻。每隔数年,太平洋东部的海水水温就会异常升高,导致一系列气候异常。温度上升往往和气压降低同时出现,东太平洋气压降低,空气就会从西太平洋往东太平洋流动,使得西太平洋沿岸地区(东南亚、澳大利亚)发生干旱,东太平洋沿岸(南美洲)发生暴雨,农业和渔业都会受到影响。
原本自然发生的气候异常,在今年创下新高。模型1的预测显示今年的厄尔尼诺现象会使得相关地区的海平面温度升高 3.6°C,而此前我们从未观测到超过 2.75°C 的厄尔尼诺,这次厄尔尼诺的最低数值 2.8°C 也超过了历史最高。
不同预测模型的结果有差异,但也都预告了前所未有的高增长。根据当前的 实时数据 来看,原本的 3.6°C 甚至上升到了 3.7°C,预计会在今年十一月达到这个峰值,而厄尔尼诺对全球气温的影响一般要到第二年才会完全显现,届时 2027 年可能超过 2024 年,成为有史以来最热的一年。
鸡头蛇尾
Tangled 是真正的 GitHub 替代品吗?
🐑 Tangled - The next-generation social coding platform.
上周分享了 Codeberg 的政策变更 ,顺带明确了这样一个事实:Codeberg e.V. 作为非营利组织的使命是为自由软件提供基础设施,Codeberg 不是自由版本的 GitHub。如果用户在任何层面与 Codeberg 的理念不符,例如不以自由软件协议分发源代码、大量使用 LLM 写代码或者为 LLM 生态做贡献、存放实验性代码和不面向公众的个人项目,那就不应该待在这个平台。
政策变更其实也炸出了一部分不理解这个事实的用户,甚至有 一篇说自己后悔迁移到 Codeberg 的文章 登上 Hacker News 热门。好笑的是,文章里这个作者说 Codeberg 完全没有考虑过倾听用户的意见,然而,Codeberg e.V. 的决策相当透明且民主,我作为关心 Codeberg 和自由软件的捐献者,也早在一两个月前就了解到了相关议程。倘若这些用户真的在乎 Codeberg,那么他们完全有时间加入 Codeberg e.V. 去发表意见和投票。倘若在看到变更通知和首页横幅之前都没有想过去了解 Codeberg 的决策过程,那还能说些什么呢?
话说回来,事实就是,不是所有人都应该迁移到 Codeberg,而且绝对不应该把 Codeberg 当作 GitHub 的替代品。那真正合适的替代品是什么呢? GitLab 看起来只是另一个商业平台,只是不受微软控制,产品质量也没有像 GitHub 那样急速下滑,自托管的成本比较高,而官方实例的免费额度有限,更适合企业用户。 Forgejo 是更轻量的选择,不过自托管的不便之处,一是维护成本和门槛高,二是实例之间难以互通和协作。
还有一个小众且观点鲜明的选择是 Sourcehut ,不跟踪用户、没有广告、没有 JavaScript、没有 AI 功能、没有非必要的登录墙,你可以自托管也可以付费使用他们的服务。最低档是 4 美元一个月,但如果你因为经济状况和各种原因无法支付,也可以申请免费使用。整体而言,Sourcehut 的社区感似乎不强,界面对不少用户来说可能算得上丑(但完全可用)。功能上,Sourcehut 使用 git send-email 进行协作,交流、讨论和发送代码补丁都可以通过电子邮件进行,余下的 CI、工单管理和 Wiki 也都有,功能不会差。我怎么觉得我应该去用 Sourcehut?
和 Sourcehut 一样也还在 Alpha 阶段的另一个 Git Forge 是来自芬兰的 Tangled ,又名《魔发奇缘》,我在 第 79 期周刊 分享过,可以说是目前为止在体验上接近甚至超越 GitHub,也更适合大多数人的选择。他们的 Stacked Pull Requests (也就是把一个大的 PR 拆分成更容易审查的小块,但是可以一起合并),就在最近还被 GitHub 抄去用了 。他们对兼容 Git 的版本控制系统 Jujutsu 有直接的支持。几个月前他们还推出了 担保 功能,可以为那些能够交付可用且容易审查的代码的人(而不是滥用 LLM 的人)进行担保,受信任等级更高的人的贡献可以被优先处理。Tangled 的用户界面也很有特色,Commit 历史一般是被藏起来的,而他们把历史和当前的文件目录放在了一起。
不过更重要的是,Tangled 是去中心化的,不仅可以自托管,而且自托管之后能够通过 AT Protocol 与其他实例(Tangled 称作 Knot,也就是「结」)交互,比 Sourcehut 的电子邮件体验要丝滑不少。Tangled 背后的是 Tangled Labs Oy,一家芬兰的小公司,是位于欧盟的商业实体,无论如何都要比位于美国的微软更值得信任。
不过 Tangled 会不会在以后逐渐屎化(enshitificate),还有待观察。我注册了 账号 ,或许可以当备用 Forge 或者镜像,先用着看看。
Gopher SLIPs into a pile of parentheses
🐭 ohler55/slip - SLIce Processing is LISP for golang
这个周末想写个小的 Web 应用,大概就是支持 Fever API 的无头 RSS 聚合器。我发现自己几乎从来不会打开 Miniflux 的 Web 界面,那为什么不能只用本地客户端,而服务端只起到同步的作用呢?就着这个想法,我准备开写。自己的项目当然是要用 Lisp 写的,不过用哪门 Lisp 呢?Clojure 我已经比较熟悉了,但跑在 JVM 上最小也得占两三百 MB,看着实在是有些不是滋味。于是选择了刚学没多久的 Common Lisp,然后就被 ASDF 和 Quicklisp 整得头疼——你这包到底应该怎么导?你这项目脚手架到底应该怎么搭?
我的确找到了不少合适的工具和教程,但整体上文档都很少,略感不适。在找 Web 框架的时候突然发现了 Caveman2 这个不洁的东西。
(defparameter *app* (make-instance '))
@route GET "/"
(defun index ()
(render #P"index.tmpl"))
What is this non-Lisp Java-like ungodly syntax!?
怒,骆驼被压垮了,遂离开 Common Lisp,开始物色新语言。毕竟是自己的个人项目,技术选型可以随意些,要不是非常想用 Lisp 写,我早就用 Go 糊出来了。我开始寻找宿主语言是 Go 的 Lisp,意外发现了今年年初才发布的新鲜语言 SLIP,名字的意思是 SLIce Processing。其中 Slice 是 Go 语言的数据结构,其实就是一个可变数组。SLIP 是基于 Slice 的,而不是 cons2,据说是出于性能考量。似乎好多 Lisp 都是用宿主语言的数组或者列表类型糊出来的,所以用 Slice 也并非不能接受,至少语法没有那么不洁。
SLIP 基本上就是对 Common Lisp 的实现,仅仅有一些不兼容的地方。SLIP 还提供了插件系统,可以用 Go 拓展 SLIP 这门语言本身,自定义内置函数。我本来还想写一个插件简单包装下 Gin ,结果作者告诉我其实有内置 HTTP Server 。我还问了作者有没有考虑写更详细的文档,结果对方点醒了我,在 Common Lisp 里,用 REPL 探索语言才是最好的方式,apropos 函数可以搜索包和符号,而 describe 可以描述一个符号(函数)的作用。
嗯?所以搞了半天你不还是在写 Common Lisp 吗?甚至换了一个更难导包的实现。
于是这个周末就这么过去了,嗯……
杀死 Cookie 横幅
ℹ️ Kill the cookie banner!
欧盟有关 GDPR 的立法运动,网站声称 Cookie 横幅(也就是访问某些网站时会弹出来的,请求你同意 Cookie 协议的横幅)往往被设计得极具误导性,用户要真正表达自己的隐私偏好会很困难,很有可能就一不小心同意了网站跟踪你。同意所有 Cookies 很简单,接受必要的 Cookies 很简单(但谁知道「必要」究竟是指什么呢?),但拒绝 Cookies 往往不那么容易。这个网站提供的解决方案是,让用户在操作系统或浏览器层面设置全局的隐私偏好,与网站建立连接时,就像 HTTP Headers 里的 Accept-Language 字段一样,自动告知网站访客的隐私偏好。
这的确是更好的解决方案,如果默认设置了严格的隐私偏好,网站就不太可能通过误导性的 Cookie 横幅来引诱用户同意交出部分权利。
另外,点击网站的 Take Action 按钮,会来到一个引导页面,告诉用户采取行动的方式就是联系当地的欧洲议会代表人,让他们支持 Article 88b GDPR3,之后还列出了各个国家和各个地区的联系人信息。不得不说,真是方便。
漫步遐思
This is a thoughtless week.
- 这里的模型不是指 AI 大语言模型,而是基于数理统计的计算模型。 ↩︎
- 关于
cons是什么,我在《 Just A Common Lisper 》里写过。 ↩︎ - Article 可能是「法案」的意思?但对应的单词还有一个是 Bill。我不清楚法律术语,所以就用原文了。 ↩︎