猫鱼周刊 vol. 087 做一个 RSS 阅读器
关于本刊
这是猫鱼周刊的第 88 期,本系列每周日更新,主要内容为每周收集内容的分享,同时发布在
博客:阿猫的博客-猫鱼周刊
RSS:猫鱼周刊
邮件订阅:猫鱼周刊
微信公众号:猫兄的和谐号列车
INIT
这周还是没有图。自从进了胶片的坑,出门要么不带数码的,要么带了也不拿出来拍。而一卷有 36 张,经常一次拍不完,又想等囤起来一起洗了,所以很久都没出什么图。
这周主要很多时间精力花在一个新坑上,起因是最近 Folo 团队裁员,裁掉了最核心的两位贡献者,而且发布了所谓「正式版」,加上怎么都关不掉的 AI 功能,实在让我觉得非常难受。RSS 阅读器这块我从一开始的 Reeder(Classic)到 NetNewsWire 再折腾到 Follow(Folo),来回折腾其实都只是不一样的界面,功能上没有什么特别亮眼的,也没有能针对我的信息获取工作流做优化的地方。于是我决定写一个自己的 RSS 阅读器 Glean,中文名叫拾灵,具体的后面细说。
STDIN
AI 吊牌
说的是 AI 厂家在输出最后总会加的口癖(例如「要不要我帮你调整 xxx」)。作者举了几个小学生利用 AI 完成作文、作业,以及老师用来发朋友圈文案的例子。
我上周才提到过,如果把 AI 不加处理地用于教育领域,很容易造成「Shit in, shit out」的局面。小朋友的可塑性是非常强的,稍微「权威」的来源会对其认知产生很深远的影响。我记得以前小学的时候,学写信的格式,结尾一定要有「此致」「敬礼」,老师从来没有解释过为什么,我也理解不了为什么为什么要向信的读者敬礼(即使 ta 就是我的朋友),后来才知道其实还可以写「顺颂时祺」之类的套话,但实际上我用得最多的还是漫无章法的「祝好」、「祝万事如意」、「Best Wishes/Regards」。基础教育因为要面对非常多样性的群体,没法做到很细致,如果你拿着这个问题去问小学老师,一般得到的回答就是「你就记着这么用就行了,别问为什么,没有为什么,固定搭配」。
![]()
回到这个 AI 的例子,这里面最为讽刺的是,人把自己的知识蒸馏后训练成 AI,结果 AI 再蒸馏一遍知识给下一代的人,但每一步蒸馏都会有不少损失,所以才说对下一代的人来说,是「Shit in, shit^2 out」 。会不会下一代的人,写作风格不仅充满 AI 味,写出来的文章最后还要加上一句「如果你需要根据自己妈妈的特点进行个性化修改,我也可以帮你调整这篇作文。」?
Go 语言的编程哲学
一个初学者角度的 Go 语言印象,以及对一些 Go 生态中常见哲学的理解和解读。我觉得 Go 在我心目中算是排名数一数二的语言,虽然我最近用的 Python 比较多。
首先,Go 是偏见非常强的语言,诸如只有 gofmt 一种风格、不允许未使用的变量、强制错误检查等,一定程度上让代码「规范」了很多。这里的反例就是我最讨厌的 Java,八股里面我最讨厌的一个问题「线程有几种创建方式」,在 Go 里只有一种,就是 go 关键字,不需要考虑茴字到底有几种写法。
其次,Go 在语法上非常简单,也没有复杂的语法糖,不管你的本命语言是什么,读 Go 都会觉得很顺畅。作者举的三目表达式就是一个非常好的例子,Go 就鼓励清晰的 if-else 结构。
还有一点,Go 让我写代码的时候逻辑变得非常清晰,或者说形成了一些良好的思考习惯。比如强制的错误检查,会让你在调用某个函数的时候,仔细考虑它会可能会出什么异常,对于业务来说应该怎么处理;又比如非面向对象的设计,会让你更加好地考虑怎么设计数据结构和接口;以及相对比较「裸」的并发写法,让你自己控制通道和锁,比起 Java 那套奇怪的调度方法好理解得多。
最后不得不说的就是跨平台能力和性能。与 Java 的虚拟机机制不同,Go 在所有平台上都是二进制原生运行的,这点就很无敌。性能方面,Go 的线程就是一个很好的例子,内存占用非常小,这在现在以云服务为主,内存寸土寸金的环境来说非常友好。
我的编程入门语言是 Python,甚至是 Python 2,最早是高中的时候自己搞了点书看。然后到大一学了 C/C++,自学了 PHP、Python 3、JavaScript,大二自学了 Java,大三自学了 Kotlin,后来工作之后又自学了 Go。在见识过基本上全部主流的语言之后,我心目中数一数二的就是 Go 和 Python,这俩也是我最为常用的语言。也许后面可以专门写篇文章展开讲讲我对各个语言的一些印象。
STDOUT
Kodak Snapic A1
Kodak Reto (柯达授权经销商)新出的一款胶片相机,25mm f9.5 广角镜头,固定 1/100 快门,有自动卷片、自动回卷和自动闪光,支持双区对焦、双重曝光,使用 7 号电池供电。
![]()
我在小红书上刷到的,看了一下国内贩子都在加价,就直接在官网下单买了,99 + 3.5 运费,算下来比贩子卖得稍微便宜一点,而且 12.2 发货,第二天就收到了。我买的是白色款,包装里自带一个收纳袋和一条挂绳。
带着拍了几天,简单谈谈使用体验。它非常轻便,操作也很简单,上卷、打开电源,按快门即可。拍照的时候会有一个很轻的快门声,然后就是过卷马达的声音,这个比起手动过卷的机器来说没有拨动过片扳手的齿轮声悦耳,跟其他一些傻瓜机差不多。自带的挂绳很有意思,保证你在扫街的时候可以第一时间拿出来拍。(此处应有伍佰)我觉得胸前挂着相机大摇大摆走还是太张扬了,而且给的绳子有点长,在肚子上晃荡,所以我是绳子挂在脖子上,然后相机踹在前胸大口袋里,也很方便。
![]()
因为第一卷还没拍完,所以画质这些也许要等后面洗出来再聊。25mm 的镜头对我来说也是一个挑战,因为我平常惯用 50mm 甚至更长的焦段,25mm 这样一个大广角对我来说有点难以掌握,不过我发现这对于拍摄街景、建筑或者壁画这些东西非常适合。另外,固定 1/100 的快门和 f9.5 的光圈也有点蛋疼,官方的说明里推荐晴天/阴天户外使用 ISO 100/200 的卷,阴天、室内使用 ISO 400 的卷。我第一卷装的是全能 400,我也不确定宽容度有多高,但是拍摄的过程涵盖了阴天和大晴天,到时候看看效果吧。小红书上有不少评论说不如买几百块的二手 PS 机,二手 PS 机我也有,但是真的很难买到成色好,更别说全新的机器,而且 PS 机也做不到这样轻的重量。我觉得它的定位是玩具相机和 PS 机的中间,比玩具相机更好的画质、可以重复装卷,结构比 PS 机简单、成本更低。如果你对胶片感兴趣,我觉得这是一台比较值得入手尝试的机器。
Glean 拾灵
前面说到,Folo 的变动,让我决定写一个自己的工具,它主要是一个自托管的 RSS 阅读器 + 个人知识管理工具,主要会有以下的功能:
- RSS 订阅、阅读
- 网页收藏
- 智能推荐 & 偏好学习(根据对已读文章的喜欢/不喜欢反馈,以及收藏行为、对 Feed 和作者的亲和性,计算推荐分数,排序时间线上的文章/过滤分数较低的文章)
- AI 摘要 / 打标(这个就是很多类似工具都会有的功能了)
所以 Glean 在产品形态上大致是 Folo/RSS Reader + Cubox/Karakeep 这样的东西,相当于是把我平时用来阅读和收藏整理信息的工具整合起来了。这是它目前的样子:
![]()
它会采用 OSS + SaaS 的商业模式,OSS 版本跟 SaaS 版本的区别就是 BYOK(Bring Your Own Key,使用自己的 AI) 和平台托管,你可以自建 OSS 版本获得基本上全部的功能,如果自建对你来说太麻烦,也可以付出 AI 的成本来获得对应的服务。
做自己的工具对自己来说是非常满足的事情,除了功能,一些交互细节也可以打磨到自己喜欢的样子。例如阅读界面右边的 Outline 功能,就有非常多考虑:
- 垂直的进度条,来代替滚动条展示阅读进度
- Outline 在阅读时会模糊,减少注意力分散
- 进入文章时,Outline 会保持清晰 5 秒;低速滚动时,Outline 会保持模糊;高速滚动时,Outline 会清晰展示;鼠标悬浮时,Outline 会以比较高的速度变清晰。
另外,这次 Vibe Coding 我也在尝试一种比较新的工作流程,在过程中更多地使用 AI 和 文档,大致是:
- 基于初始需求,反复细化、确定需求,产生 PRD 文档
- 基于 PRD 文档,确定技术栈,敲定代码风格等,产生架构文档
- 基于 PRD 文档和架构文档,拆分多个里程碑,决定每个里程碑实现什么内容,产生开发计划文档
- 基于上面全部文档,生成对应里程碑的开发方案,包括测试和验收方案,修订后,放到项目中让 Claude Code/Cursor 去实现,并且利用浏览器 MCP 实现自动化测试和验收
这套工作流用下来还可以,开发的效率相对比较高,很多时候只要人工介入一下具体的交互细节就可以达到可用的程度。唯一的缺点可能是烧钱太快了,我的 $20 Claude Pro 和 $20 Cursor Pro 订阅一两天就用完了,Cursor 我升级到了 $60 还是不够用,已经上到 $200 了。
![]()
MISC
bililive-go
直播录制工具,支持多个平台的直播录制。
EOF
本周刊已在 GitHub 开源,欢迎 star。同时,如果你有好的内容,也欢迎投稿。如果你觉得周刊的内容不错,可以分享给你的朋友,让更多人了解到好的内容,对我也是一种认可和鼓励。(或许你也可以请我喝杯咖啡)
另外,我建了一个交流群,欢迎入群讨论或反馈,可以通过文章头部的联系邮箱私信我获得入群方式。
