Weekly#30
琐碎二三事
博客改动
将原来随着列表缩进的代码块变成了 100% 的宽度。
毕竟本来代码块就是块级元素,单独换行的,这样可以多展示一些代码。
同时略微缩小代码的字体大小,也是为了在小屏幕下能尽可能多看到一些代码。
- 将图片的 caption 颜色稍微调小和调淡一些,使得和正文能够区分开。
- 将 dark-mode 下的链接颜色对比度调高,contrast ratio 达到 7:1。
支持 Atom feed,替换原来的 RSS feed,并且塞入了最新的 15 篇全文。
原来是依赖 Emacs 生成 RSS,因为生成很慢所以没有生成全文,现在改为 NodeJS 实现,15 篇文章一瞬间的事情。
多亏了 LLM,又是一次 Vibe Coding,虽然有些 bug,例如 entry 的链接拼接错了,不过生成的代码基本够用了。
虽然对于 Folo 的读者而言,在 Folo 上看会更方便,不过有空也来原站看看啦,还可以留言!ლ(´ڡ`ლ)
倦怠
weekly 拖更了,一方面是加班多,周末就一天,没太多时间写。
另一方面,不知道是不是因为加班,还是一些同事关系,觉得累了,没什么干劲。
放假只想玩玩游戏,不太想写东西。
把很久没玩的怪物猎人崛起翻出来完了一个假期,玩了一下盾斧,超解还挺爽。
还是要想办法调整一下自己状态,确保休息。
一些简单的快乐
- 抽到了想要的盲盒手办,为了这个手办,把那个系列的盲盒基本抽了个遍,都快集齐一套了。
- 盒马新出了一些鲜酿啤酒,柠檬乌龙茶味的,喝起来真的像喝柠檬茶。
- 做了香椿炒鸡蛋,香椿有股独特的味道,不太喜欢香椿味道的女朋友觉得味道还行 ლ(´ڡ`ლ)。不过第一次做,香椿太多蛋太少,下次再改进一下。
News | Article
The blissful zen of a good side project
作者鼓励做一些副项目,因为你能从中找到自由创造和探索的快乐。
摘录
我认为我们的存在是为了创造新的事物。
如果你问我,生命的意义在多大程度上存在,那就是了。我们存在是为了创造。
这种创造让我们感到兴奋,以一种其他任何事情都无法比拟的方式,将新的东西带入我们的世界——并在这样做的过程中,从根本上改变它,无论是大是小。
你创造什么,以及你如何去做,完全取决于你。这就是它的美妙之处。
享受探索可能性的自由,快乐地追随任何引人注目的冲动——这就是一个好副项目的幸福禅意。
这是在你的生活中划出一个空间,只有你可以做出选择。没有人可以干涉。
在这里,你不必听取任何其他声音,除了那个在你内心深处轻声催促你去做你知道需要做的事情的声音。
你不欠任何人选择任何东西的责任——除了你自己,以及你真实的感受。
你不需要知道它将通向何方。
实际上,它不必通向任何地方。
没有什么必须从中产生。
就算这个项目在其他人看来根本不存在也没关系。
失败并不是失败;它是过程的一部分。
完成它的标准是你自己觉得完成了。
重要的是你探索了地图的那个小角落,发现了那里有什么。
如果那什么都没有也没关系。
探索本身就是成功。现在你更清楚下一步该去哪里探索了。
所以无论你的副项目是什么:我鼓励你重新拾起它,让那部分的你再次存在。
祝你漫游愉快。
Sell yourself, Sell Your Work
如果你做了一些什么东西出来,不要期待有人会主动发现,而应该自己主动去宣传它,否则你做的东西可能就无人问津。
但宣传也讲究技巧,可以不花里胡哨,但要简洁清晰。
摘录
尽管技术上做得极其出色可能足以满足个人成就感,但你绝不应该认为这就够了。
如果你将自己锁在房间里做了最精彩的工作但不告诉任何人,那么没有人会知道,没有人会从中受益,这项工作也将付诸东流。
你可能从中获得了个人满足,但就更广阔的世界而言,你就像是从未费心去做过。
要让世界从你的工作中受益,进而让你自己充分受益,你必须让它为人所知。
…你必须写作,你必须告诉人们,并且你必须以一种他们会注意到的方式来做。
你不一定需要让它华丽、炫酷、多彩和动画化,但你确实需要好好展示它。
拼写错误可能不会掩盖意思,但你会失去一部分观众。
糟糕的标点符号可能对你来说无所谓,但你的目标观众可能会因此而感到厌烦。
模糊的写作没有明确的目的使读者很难理解你的观点。
然而,清晰简洁地写作,你的工作可能会节省他人的时间和精力,并为你赢得声誉。
…你可以以一种方式进行,使人们确实能够在你所做的基础上进行构建,或者你可以以一种方式进行,使下一个人必须基本上重复你所做的事情…
…做一份工作是不够的,你必须推销它。
对科学家来说,“推销”是一件尴尬的事情。
这非常丑陋;你不应该这样做。
世界应该在等待,当你做出伟大的事情时,他们应该冲出来欢迎它。
但事实是每个人都忙于自己的工作。
你必须把它呈现得如此出色,以至于他们会放下手头的工作,看看你所做的,阅读它,然后回来对你说:“是的,这很好。”
…问问自己为什么你会阅读某些文章而不是其他文章。
你最好写好你的报告,以便在发表时…当读者翻页时,他们不仅会翻你的页,还会停下来阅读你的内容。
如果他们不愿意停下来读你的内容,你将得不到认可。
你必须学会清晰而良好地写作,以便人们愿意阅读,你还必须学会进行相对正式的演讲,同时也必须学会进行非正式的演讲。
AI 2027
我选的结局中,最后人类都灭绝了,AI 统治了世界。
一篇对未来 AI 发展的幻想小说,蛮有趣的。
Celebrate 50 years of Microsoft with the company’s original source code
微软已经 50 年了,公开了公司最初的源代码。
整个页面是很多 Bill Gates 相关的文章合集,页面内容很丰富。
What’s the difference between an en dash and em dash?
一篇讲述 hyphen(连字符)、 en dash、 em dash 的区别的文章。
平时写的时候注意的不多,以后要多注意。
- | hyphen | 一般用于连接单词。例如 extra-marital。 |
– | en dash | 一般用于表达范围,前后没有空格。例如 7–10pm。 |
— | em dash | 1.当需要比一对逗号更强的强调时,或者就像一对括号一样。 2.附带说明或后记。 3.言语中的突然中断。 |
⸺ | two em dash | 更接近中文的破折号。em dash 更接近中文的 en dash。 |
War story: the hardest bug I ever debugged
作者定位一个 Google Docs 错误的经历,这个 bug 是“偶现”的,作者先是找办法去复现,再通过排除法去逼近问题根源。
解决这样的“偶现”问题真的很不容易,作者也是依靠了同事的专业知识,才最终定位了问题。
Atom vs. RSS
Atom 和 RSS 都是一种订阅源 (feed) 的格式,作者对比了两种格式。
Atom 比 RSS 的格式更严格,从而规避了很多 RSS 的问题。
但目前主流的 feed 格式还是 RSS,用 Atom 的还不是很多。
作者建议如果需要发布 feed,优先考虑 Atom。
目前博客使用的也是 RSS,而且也没有将完整内容写入到 RSS 中。
后续我计划替换成 Atom,同时将前 10 篇文章的内容写入进去。
摘录
你可能已经注意到,我还开始在我的订阅源条目中包含完整的帖子内容。
现在我的订阅源使用习惯发生了变化,我觉得截断内容实际上是相当无礼的。
虽然这并不太重要,但很遗憾的是 RSS 在这场格式战争中 “获胜” 了。
在我关注的订阅源中,大约 75% 是 RSS,25% 是 Atom。
这仍然是一个相当可观的网络订阅源数量,而 Atom 在我所知道的所有客户端中都得到了很好的支持,因此它并没有面临被淘汰的危险。
我遇到的那些损坏(但仍然有效)的 RSS 订阅源,如果最初是作为 Atom 订阅源创建的,可能就不会出现损坏。
Atom 是一个更严格的标准,因此会引导这些作者从一开始就正确地创建他们的订阅源。
RSS 鼓励作者做错事。
如果有一天你要为某些内容创建一个新的订阅源,请为网络做个好事,选择 Atom!
你更有可能第一次就把事情做对,这样会让其他人的工作轻松很多。
More Contrast, Please
作者建议增加文字的的对比度,contrast ratio 最好能达到 7:1。
我检查了一下我的博客颜色,将链接的对比度稍微再调高了一些。
事实上,我意识到随着年龄的增长,我需要更高的对比度才能使文本更容易阅读。
我建议任何前景文本和背景页面颜色的选择至少应符合网络内容无障碍指南(WCAG)AAA 级别的建议。
这意味着正常大小文本与背景的对比度比率至少应为 7:1。
此外,还有稍微弱一些的 AA 级别指南,要求正常大小文本的对比度比率至少为 4.5:1。
也就是说,我个人建议无论如何都要追求 7:1 的对比度比率。
Kagi Search Stats
Kagi 统计的一些标记为 Blocked 和 Pinned 的网站的排名。
Blocked 的那些网站我碰到的不多,我更多 Blocked 的是 CSDN,百度百科,广告之类的一些链接,Blocked 之后可以有效减少它们的出现。
Pinned 的链接除了排名靠前的,其他也没怎么访问过。
Kagi 大概用了两三个月了,Starter Plan ($5) 每月只有 300 次搜索。
一开始会省着用,一些网站的搜索会用回 Google,使用的时候有心理负担,一个月结束后发现没用完。
后来我就不管怎么样都直接用 Kagi 搜索,果不其然,提前一周就将额度用完了。
目前 Starter 对于我来说还是有点不够用,但 $10 的 Professional 我又觉得有点贵了 _(:3 」∠ )_
The case against conversational interfaces
语音交互的方式没有颠覆当前人与计算机的交互,原因是语音交互的输入效率没有键盘输入高。
但语音可以作为一种辅助交互,在你双手忙于一些事情的时候,可以通过语音完成其他事情。
当人们说“自然语言”时,他们的意思是书面或口头交流。
自然语言是一种在人类之间交换思想和知识的方式。
换句话说,它是一种数据传输机制。
数据传输机制有两个关键因素:速度和丢失性(lossiness)。
速度决定了数据从发送方传输到接收方的快慢,而丢失性则指数据传输的准确性。
在理想状态下,您希望数据传输以最大速度(瞬时)和完美保真度(无损)进行,但这两个属性往往是一个权衡。
The April Fools joke that might have got me fired
作者愚人节的时候恶搞了一下学校里的打印机,让打印的人支付 5 美分才能打印。
有的人知道是愚人节觉得挺好玩,但有的人觉得被冒犯到了,很多投诉邮件发到了作者老板手上,而作者正好当时休息,没能及时解释,差点被炒鱿鱼。
Exploring Generative AI
作者用了一段时间 AI IDE,她认为距离 AI 能够自主编写复杂任务还很遥远。
这些经历意味着,在我个人的想象中,我们在一年内不会有 AI 能够自主编写 90% 的代码。
它会在编写 90% 的代码方面提供帮助吗?也许。对于某些团队和某些代码库来说。
它在今天的情况下帮助我解决了 80%的问题(在一个适度复杂、相对较小的 15K LOC 代码库中)。
Tracing the thoughts of a large language model
大模型就像是一个黑盒,你给它输入,它给你输出,但是输入到输出的过程是怎么样的,如今已经复杂到连模型开发者都难以理解。
Anthropic 尝试去追踪 Claude 的思维并分享了他们的一些观察。
摘录
像 Claude 这样的语言模型并不是直接由人类编程的——相反,它们是通过大量数据进行训练的。
在训练过程中,它们学习自己解决问题的策略。
Claude 流利地讲几十种语言 —— 从英语和法语到中文和他加禄语。这种多语言能力是如何运作的?
[…]
最近对较小模型的研究显示出不同语言之间共享语法机制的迹象。
我们通过询问 Claude “small” 的反义词在不同语言中的表达来探讨这一点,发现小和反义的核心特征被激活,并触发了“大”的概念,这个概念被翻译成提问的语言。
我们发现,随着模型规模的增加,共享电路的比例也在增加,Claude 3.5 Haiku 在语言之间共享的特征比例是较小模型的两倍以上。
这为一种概念普遍性提供了额外证据 —— 一个共享的抽象空间,在这里意义 (meanings) 存在,并且思考可以在被翻译成特定语言之前发生。
更实际的是,这表明 Claude 可以在一种语言中学习某些东西,并在使用另一种语言时应用该知识。
There is no Vibe Engineering
作者不认同 Vibe Coding,他认为 Vibe Coding 只是解决了一个短期的需求,但是软件是持续迭代的,当你进行 Vide Coding 时,代码对开发者而言是一个黑盒,很可能埋了很多隐患,而最终解决它们的成本会很高。
不过 Vibe Coding 确实能快速地得到一个原型,对于一些简单的个人的需求,Vibe Coding 写一下感觉不错。
摘录
让我们首先明确软件工程师的角色所包含的内容,令人惊讶的是,软件工程并不是编写代码。
即使是高度技术化的人也常常混淆编码和工程。
我所遇到的关于软件工程最简洁、最准确的定义是:
软件工程是随着时间整合的编程。 (Software engineering is programming integrated over time.)
随着时间整合的部分至关重要。
它强调软件工程不仅仅是编写一个功能正常的程序,而是构建一个成功满足需求、能够扩展以应对需求并能够在其整个生命周期内演变的系统。
然而,与普通编码类似,氛围编码 (Vide Coding) 仅涵盖在某一时刻的编码。
如果使用代理生成一个快速原型并通过测试验证它,那就是编码——而不是工程。
工程意味着设计能够承受现实世界条件、维持工作负载、抵御安全威胁、迁移和支持用户数据在系统中的系统,并适应往往在许多年后出现的新需求。
Vibe 编码是通过提示与代码库进行交互。
由于实现对“vibe coder”是隐藏的,所有工程问题不可避免地会被忽视。
许多问题很难在提示中表达,而许多问题仅通过检查最终成果也很难验证。
历史上,所有工程实践都试图将这些问题向左移动——在开发的早期阶段解决它们,因为那时解决这些问题的成本较低。
然而,在 Vibe Coding 中,它们被极大地向右移动——在解决这些问题的成本很高时。
2024 年开咖啡店从开业到转让的感悟
开店不易,尽管失败了,但也能从中收获到一些经验。
AppStore 首页推荐后,依然月入不足 3000,独立开发两年血泪复盘
作者开发了一个 iOS 应用《打工人小组件》,得到了 AppStore 的推荐,就离职全职开发了。
但剧情发展和预想的不同,作者总结了 2 个误区:
- 好产品可以不用运营推广 ➙ 不推广很难接触到更多的用户。
- 好产品用户就会付费 ➙ 可能你的产品做的很好很用心,但是你的品类和你的目标人群决定了这个产品是赚不到钱的。
Tutorial | Resource
How to Write Blog Posts that Developers Read
作者写了 9 年博客,他的文章也多次在 Hacker News 的首页出现,文章是他分享的一些如何让博客受欢迎的经验。
- 文章要尽快吸引读者的注意力,使用目标受众熟悉的术语
互联网的注意力跨度很短。
如果你在表达观点之前拖延,读者会去寻找他们可以阅读的数十亿篇其他文章。
那么,你如何说服读者留下来继续阅读你的博客文章呢?
当读者到达时,他们试图尽快回答两个问题:
- 作者是为像我这样的人写这篇文章的吗?
- 阅读这篇文章我将获得什么好处?
给自己一个标题加上你的前三句话来回答这两个问题。
如果你发现自己在第二段时还没有回答任何一个问题,那你就麻烦了。
为了向读者表明你是为他们写作,提及他们关心的话题,并使用他们熟悉的术语。
如果你抛出行话或不熟悉的概念,读者会认为这篇文章不是为他们写的,然后点击离开。 Source
- 尝试扩大文章的受众。
- 将文章发不到多个地方,让更多的人知道,不要寄托于用户通过搜索引擎找到你的文章。
- 图文并茂,如果都是文字,用户可能会觉得单调。
- 有的读者会快速浏览文章后再决定是否阅读,考虑快速浏览时,大纲和图片等内容是否足以吸引读者。
要让文章流行起来,还挺不容易的,作者的做法和自媒体运营也有点像,有一些套路在里面。
不过我倒不那么追求文章阅读量很大,还是作为自己的一个小角落,写写自己想写的,随心所欲好了。
Neural Networks from Scratch - an interactive guide
关于神经网络的交互式介绍。
Best Practices for Cognitive Accessibility in Web Design
一些降低页面认知负荷的建议。
A Programmer's Reading List: 100 Articles I Enjoyed (1-50)
作者整理了一些他觉得不错的技术文章,主要关于:一般编程知识、软件工程、后端开发、技术写作、Python、Go。
程序员可能是互联网上最乐于分享的群体之一。
他们不仅喜欢开源软件,还喜欢通过撰写文章分享他们的知识。
自从我开始我的职业生涯以来,我阅读了许多技术文章,包括一些杰出的作品。
其中一些以深刻的技术见解启发了我,而另一些则以卓越的技巧解释了一项技术,让我深感印象深刻。
作为一个喜欢分享的程序员,我想充当推荐者,与大家分享我读过的一些精彩文章。
Code Related
Layered Text Headers
-webkit-text-stroke 可以设置文本的描边,但是描边一旦稍微粗一些,容易破坏文字的形状。
通过设置 paint-order: stroke fill;
可以让填充(fill)的优先级高于描边(stroke),从而避免描边带来的变形问题。
不过 paint-order 目前的兼容性一般,在我手机上还无法生效。
How to think about Baseline and polyfills
当你想用某些新特性,但是浏览器没有广泛支持的时候,可以引入对应的 polyfills,使得缺少特性的浏览器也能运行对应功能。
但是 polyfills 是有代价的,它要求用户加载更多的内容;polyfills 可能无法忠实还原特性;polyfills 是 JS,还可能影响性能。
是否使用 polyfills,可以考虑缺少对应特性对用户的影响,如果严重影响用户使用,或许还是需要 polyfills。
在考虑是否需要 polyfills 的时候也可以参考对应特性的 baseline:
- Limited availability
- 该功能并不支持所有主要浏览器。
- Newly available
- 该功能在过去 30 个月内已在所有主要浏览器中出现。
- Widely available
- 该功能在所有主要浏览器中已支持超过 30 个月。
如果特性是 Widely available,基本是可以放心使用而不用 polyfills 的。
Minimal CSS-only blurry image placeholders
文章讲的是如何生成模糊的图像占位符(low quality image placeholders,LQIPs),有点硬核。
常见的手段是:
- 非常低分辨率的 WebP 或 JPEG(甚至是去头的 JPEG)
- 优化的 SVG 形状放置(SQIP)
- 直接应用离散余弦变换(BlurHash)
- 老式的渐进式 JPEG 和交错 PNG (图片从模糊变清晰的/逐行加载,浏览器的默认效果)
- 简单填充图像平均颜色的纯色
但上面的手段或多或少存在一些问题,或者使得 HTML 标签变得臃肿,或者依赖 JS。
作者使用 CSS 和位运算实现了一种编码,解决了上面的问题,使用的时候很简单:
<img src="…" style="--lqip:-378688">
但我觉得也有一个缺点,就是当我想指定某种颜色的时候,我不知道如何快速确定 --lpip
的值。
Previewing Content Changes In Your Work With document.designMode
第一次知道 designMode,开启之后,页面所有的文本都可以被编辑,有时需要临时修改一下文本就很有用。
Whose code am I running in GitHub Actions?
有人向
tj-actions/changed-files
GitHub Action 添加了恶意代码。如果你使用了被攻击的动作,它会将秘密泄露到你的构建日志中。
这些构建日志对于公共仓库是公开的,因此任何人都可以看到你的秘密。
GitHub Action 中可以用 uses 引用别人写好的 action,例如 uses: actions/checkout@v4
,通过 @v4
可以指定对应的 tag。
但是 tag 指向的内容可能会发生变化,也许之前是安全的,但是有人故意将其指向成到恶意代码中,当你执行 action 的时候,就会拉取对应的恶意代码执行。
也可以指定 commit,例如 uses: actions/checkout@8f4b7f848
,这样通过 commit 指向的版本是固定的,一旦别人后面改了,引用的代码也不会变化。
作者认为需要去评估你的 GitHub Action 的安全性,看看它们都是谁提供的,是否可信任,尽可能使用大组织提供的 action。
作者还提供了一个脚本,可以扫描仓库下的 workflow 文件,返回所有使用到的 action,便于分析当前的 action 都是什么,以及是谁提供的。
Revisiting CSS border-image

一篇不错的,介绍 border-image 的文章。
- border-image-source 指定图片。
- border-image-slice 设置上下左右的分割线,分隔图片,使得图片分成 9 个部分。也可以理解为设置 4 个角的截取范围。
- border-image-repeat 设置四条边的图片如何重复。
- border-image-outset 设置图片距离边框的距离,有的时候希望图片在边框之外,就能通过这个属性设置。

The <select> element can now be customized with CSS
文章视频中的自定义 select 的效果相当不错。
see also: Customizable select elements
Overengineered anchor links
点击锚点 (anchor) 需要滚动到对应的位置;滚动到对应的位置时,需要高亮对应的锚点。
但是有的内容很靠近底部,即使滚动条到底了,可能也无法触发锚点高亮。
文章探讨了如何解决这个问题,也是一篇不错的交互式文章。
Cool Bit
How Sonic DNA Connects Generations of Music
一个交互式的网站,介绍音乐是如何被传承下来的,故事和交互都很有趣。
如果可以通过这样的方式知道任意一首歌的故事就好了,会对音乐有更多的理解吧。
The surreal joy of having an overprovisioned homelab
作者的自托管历程,文章蛮有趣的。
Excitable cells
关于心肌细胞的自律性,看不太明白,但交互挺好的。
Watch Global & Local Live TV Online for Free
一个可以看全球电视节目的网站。
Tool | Library
skim-rs/skim
Life is short, skim!
我们生活的一半时间都花在导航上:文件、行、命令……你需要 Skim!它是一个通用的模糊查找工具,能为你节省时间。
终端上的模糊搜索工具。
BTW,我用的是 mcfly,替代 ctrl-r
,用于搜索历史相当方便。
SparkAudio/Spark-TTS
一个不错的文本转语音 (TTS, text-to-speech) 系统,支持语音克隆。
xxnuo/MTranServer
一个超低资源消耗超快的离线翻译服务器,英译中模型仅需 860MB 内存即可运行,无需显卡。
单个请求平均响应时间 50ms。支持全世界主要语言的翻译。
翻译质量与 Google 翻译相当。
专注于速度和多种设备私有部署。
Offpunk
Offpunk 允许您在离线状态下浏览 Web、Gemini、Gopher,并订阅 RSS 源,而无需离开终端。
Offpunk 没有鼠标,没有快捷键,没有隐藏的按键可按。
每个操作都需要你输入一个命令。
内容在古老的“less”分页器中显示。
Offpunk 旨在为那些生活在终端中的人们服务,让他们不必离开终端。
你访问的每个内容都会被缓存,可以在离线时稍后访问。
如果你尝试访问缓存中没有的内容,它将被标记为稍后下载。
Offpunk 允许你每小时、每天或每周同步一次计算机,并在不被打扰的情况下离线工作。
Svggles
Svggles is a React utility package for creating interactive illustrations using SVGs.
Inspira UI
Open source components to build beautiful websites using Vue & Nuxt.
一些动效做的不错的 Vue 组件。
Mermaid Chart VS Code Plugin
VS Code Mermaid 插件。
Mermaid 画一些流程图,序列图挺方便的。
ToS;DR
“我已阅读并同意条款”是网络上最大的谎言。
Terms of Service; Didn't Read.(ToS;DR) 提供易于理解的隐私政策和服务条款摘要。
kovidgoyal/kitty
跨平台、快速、功能丰富、基于 GPU 的终端。
一个看起来不错的终端,可以不支持 Windows。
errsole/errsole.js
Errsole is an open-source logger for Node.js apps.
It comes with a built-in log viewer to view, filter, and search your app logs.
ladjs/supertest
NodeJS 的一个用于测试 HTTP 的库,让 HTTP 断言变得简单。
ReactOS
想象一下,在一个值得信赖的开源环境中运行您最喜爱的 Windows 应用程序和驱动程序。
这就是 ReactOS 的使命!
medialab/xan: The CSV magician
xan 是一个可以直接从 shell 处理 CSV 文件的命令行工具。
[…]甚至可以用于绘制基本的数据可视化。
microsoft/playwright-mcp
一个模型上下文协议(MCP)服务器,使用 Playwright 提供浏览器自动化功能。
该服务器使 LLMs 能够通过结构化的可访问性快照与网页交互,绕过了对屏幕截图或视觉调优模型的需求。
aftertheflood/sparks
用于在文本中创建微型图的字体。
不需要代码,只通过字体,可以绘制一些简单的图形。
好奇它的使用场景是什么。
Frimousse
A lightweight, unstyled, and composable emoji picker for React.
data-maki/flowtoken
这个仓库实现了很多 LLM 的文字输出效果。
juliangarnier/anime
JavaScript animation engine
Emacs
- My 10 Years with Emacs
- Why and How I use "Org Mode" for my writing and more
- jamescherti/minimal-emacs.d Starter-Kit with Better Emacs Defaults and Faster Startup.
- You have no idea how powerful isearch is!
- Emacs Solo: A Surprise System Crafters Live Demo
- casouri/vundo visual undo,让 undo 和 redo 可视化,避免执行操作时的混乱
一些话 | 摘抄
Empty Laughter
艺术从定义上来说是有限的,并且受到艺术家背景的影响。
艺术家随着年龄的增长而生活在他们艺术创作的周围,持续的适应性正是产生其魔力的原因,而不是试图创造 “下一个” 艺术作品。
你无法创造出新的乔治·卡林,因为他不仅是由他参与的精确历史和事件所创造的,还有他与其他人类的关系,以及他自己的思想和情感。
这些不是可以模拟或被模拟的东西。
你需要的数据归结为视觉、嗅觉、医疗状况、药物滥用、历史事件,以及他存在于历史时期时每一个人独特的心理状态。
Rest Easy
工作可以是繁重的,也可以是光辉的。
无论哪种方式,它都是我们大多数人生活的中心。
当工作被撤回时,即使是以最慷慨的条件退休,它也会留下一个空洞,这个空洞常常被一种孤寂的感觉填满,有时甚至接近创伤。
尽管与监禁或流亡并不在同一惩罚类别中,退休可以是一种强制休息。
我听说过(主要是)男性寻求治疗,以克服退休带来的巨大失落感。
看来,休息必须是自我选择的,绝不能被强加,才能真正起到恢复的作用。
美好生活的一个定义是有用的工作与满足的休息之间的完美平衡。
Michael Oakeshott,这位值得深思的思想家,持不同看法。
他写道:“我们花费一生试图发现如何生活,完美的生活方式,生活的意义。但我们永远无法找到它。
生活就是对它的追寻;成功的生活是那种投入到这场追寻中的生活;
而当我们认为自己找到了它时,我们离它却最远。
自欺欺人地认为我们找到了它,劝说自己至少在这里有一个可以休息的点——生活一下子变得无生气。
正如要保持爱情,我们必须不断地坠入爱河,要保持生活,我们必须不断地努力生活。”
what killed innovation?
我认为每一波技术或方法的变化都遵循一个可预测的模式:最初的炒作周期,广泛采用的时期,然后是最终的平稳期,只有最实用的元素得以持续。
刘润:朱啸虎为什么要全面撤离机器人赛道?
真正改变行业的节点,从来都很安静。
不是在发布会,不是在朋友圈,而是在某个实验室某次部署后,客户说:“这个机器人不错,我愿意再买5台。”
那一刻,商业模型成立,闭环形成,行业起飞。
Toots 2025 Mar.23 - Mar.29
「他跟我说了好几次,他特别想念摸读盲文书的感觉。
我说你每天都在听书啊,为什么还想摸书?他说,那太不一样了。
听书,好像是怀里被人塞了一堆东西。
而摸书,是自己主动走进去的,就像走进海里,感受海水一点一点地漫过脚面,那感觉太美妙了。 」
Why numbering should start at zero
[…]异端必须被赶走,不是因为他有可能是错的,而是因为他有可能是对的。
There’s no emotion we ought to think harder about than anger
亚里士多德说,愤怒是对自己所关心的事物或人遭受重大损害的一种反应,愤怒的人认为这种损害是错误造成的。
他还说,尽管愤怒是痛苦的,但它本身也包含着报复的希望。
What to Do
人应该做什么呢?
人应该帮助他人,照顾这个世界。
这两点是显而易见的。但还有其他吗?
当我问这个问题时,浮现出的答案是:创造好的新事物。
我无法证明人应该这样做,就像我无法证明人应该帮助他人或照顾这个世界一样。
我们在讨论的是基本原则。
但我可以解释为什么这个原则是有道理的。
人类能做的最令人印象深刻的事情就是思考。
这可能是可以做的最令人印象深刻的事情。
而最好的思考,或者更准确地说,证明一个人思考得好的最好方式,就是创造好的新事物。
Chubby Commutes to Hawaii: A Technical Discussion
[…]出发去航行就像决定要一个孩子。
如果你等到自己 100% 准备好,它就永远不会发生。
因此,当一个人离开码头时,总会有一些未完成的事情。
正如我所说的,我们都没有完全准备好去开始各自的冒险。
How To Achieve Big Goals So Fast It Feels Like Cheating
摘录
残酷的真相是:你还没有失败够。
你放弃得太早了,没有学会如何将失败视为通往成功的唯一途径。
大多数人不断尝试却一次次失败,因为他们试图将别人的地图与自己的领土相匹配。
课程、书籍、播客。
他们没有意识到这些东西是地图。
它们是指南。不是事实。
它们是有用的,但前提是你要明白它们不过是远处的一支蜡烛,指引你穿过黑暗的房间。
它们并不决定你脚步的方向或你是否会跌入蛇坑。
此外,你无法接触到他人的心理状态。
你无法了解他们如何看待世界。
你没有他们完全相同的身份。
这导致了一个关键且反直觉的领悟:
错误是唯一的真理来源。
不是你脑海中的想法,也不是亿万富翁的建议。
失败是唯一一个完全根据你的情况量身定制的老师。
失败的信号与噪声比为 100:1。
但你讨厌失败。
你让它主宰了你的生活。
你忽视它,把头埋进更多的课程、书籍和播客中。
你所学到的一切,如果不是来自错误,那就是来自理论。
它源于一张地图。
它只是通过对他人所犯错误的解读形成的推测。
如果你理解了在你所做的一切中存在的一般原则,那么理解负面情况就会变得容易得多。
在我看来,理解故事的结构是理解这一点的最简单方法。
首先,有一个需要解决的问题。英雄必须经历高潮和低谷。有挣扎,也有快乐。
就像海洋中的波浪一样,你脑海中的情感、你的人际关系的发展,在现实的各个层面,在你所处的每种情况下,你都是一本永无止境的书籍中的一段话的一句话。
如果你能识别出自己处于故事的哪个部分,而不是将心思固定在这个部分上,仿佛它应该永远保持不变,那么走出困境就会容易得多。
身处项目之中时,跳出现状、拓展思路往往难上加难。你容易陷入压力重重的狭隘生存模式,眼中只见问题,难觅良方。
解决这一困境的妙招是进行“预先死亡分析”。
预先死亡分析是一种战略思维工具,旨在项目启动前识别潜在的失败点。
这里的“项目”可以很宽泛,包括辞职、转行、寻找人生目标、自我教育、减肥、改善人际关系、年度规划等等。
具体步骤如下:
- 设想惨败情景:想象你的策略彻底失败,惨不忍睹。那会是怎样的景象?你的生活会走向何方?
- 罗列失败原因:集思广益,尽可能罗列出所有可能导致失败的原因。包括心理因素(如个人弱点、自我破坏、知识或技能不足)以及外部因素(如资金短缺)。
- 确定优先级:重新排列列表,把威胁最大的原因放在最前面。
- 集思广益找方案:针对每个失败原因,积极寻找潜在的解决方案。如有需要,可以咨询 AI 战略顾问寻求帮助。
Horseless intelligence
我对使用人工智能的建议很简单:把人工智能当作助手,而不是专家,并且要谨慎使用。
有些人会反对,“但人工智能可能是错的!”
是的,互联网本身也可能是错的,但现在没有人建议因为它们可能是错的而避免在线资源。
他们建议对所有信息保持一定的怀疑态度,并小心使用。
这也是你应该对人工智能的帮助采取的态度。
我们都在学习如何好好使用人工智能。
提示工程是一个新学科。
让我惊讶的是,如果在提示中包含“逐步思考”或“在回复之前检查你的答案”等短语,大型语言模型(LLMs)会给出更好的答案,但它们确实改善了结果。
LLMs 不是搜索引擎,但像搜索引擎一样,你必须将它们视为独特的工具,如果你知道如何提出正确的问题,它们会表现得更好。
我经常看到的另一个反对意见:“但是 LLMs 不能思考,他们只是预测下一个词!”
我不确定我们是否对“思考”在这个上下文中的含义有共识。
飞机的飞行方式与鸟类不同。
汽车的运行方式与马匹不同。
重要的是它们完成了许多相同的任务。
AI ambivalence
我开始在我的日常工作流程中使用 Claude 和 Claude Code。
[…]
它几乎可以替代 StackOverflow,因为“它可以给我一些我非常怀疑的答案”,也就是说,它与 StackOverflow 并没有太大区别,但速度快得多。
使用生成式 AI 时我的感觉就像是一个保姆。
它输出大量代码,我阅读并试图找出错误,然后我们重复这个过程。
当然,正如 Cory Doctorow 所指出的,诱惑在于根本不去尝试找出错误,而是让你的眼睛变得无神,让机器为你思考——这就是“氛围编码”的完整梦想。
Bored of it
我对它感到厌倦。
它的普遍性和无处不在的特性。
它不可避免的、非人性化的后果。
它确实存在的事实。
垃圾进,垃圾出。
没有人要求它,也没有人想要它。
我这一代最优秀的头脑在思考如何让人们使用它。
你应该接受它。
一千个“不”,但当股东开始要求时就会变成“是”。
政策制定者迎合它。
一个退役的核电站需要为其供电。
更不用说需要数百万加仑的水来冷却它。
每篇赞美它的文章。
每篇贬低它的文章。
每次酒吧谈话都绕到它上面。
人们不断告诉你他们是如何使用它的。
我用它时感觉很脏。
你知道我在说什么,尽管我没有提到它。
这就是我厌倦它的原因。
A litmus test for AI agents
我们对 AI 代理的试金石:
该人工智能系统是否以其自身的身份执行操作?
如果是,那么它就是一个代理,审计日志将会记录该代理的名称。
如果不是——就像大多数副驾驶或产品内的助手——那么它就不是。
代理的其他属性通过通过这个测试显现出来。
身份意味着自主,因为人工智能必须独立使用工具和执行操作。
身份要求能力和推理,因为人工智能必须能够做出良好的决策,才能承担这样的责任——否则组织不会信任它。
而且身份并不排除代理偶尔向人类寻求输入或监督——现实世界中的代理确实这样做,人类员工也会这样做,与他们的同事和经理。
多媒体
- 我们仿拍了一段时间暂停…… (03:11)
- 【鬼谷闲谈】辣椒:一种“不存在”的痛快滋味 (35:06)
- 和猫共享人生:我们的春天生活报告 (03:23)
- 陪伴我10年的员工离开了…. (15:24)
- 他拿下了华语年度最佳专辑!丨HMA 颁奖典礼丨HOPICO (52:37)
- WCT 赛道内的首次中美对抗 (16:52) 蛮有趣的运动
Music
梦游动物园 - 《Eclosion》

Youth Lagoon - 《Rarely Do I Dream》

Corn Wave - 《Some Junk Tapes From Outer Space》
