🔖
你正在阅读 稻草人周刊,一个读者的自述,每周一更新。

🏃 这周做了什么?

  1. 我建立了一个 Telegram 群组,名为「418·亡者茶话会」,用作本博客的讨论群,点此加入。你可以在这里分享有趣的书籍、文章、链接、项目等等,或者对本博客的内容进行讨论。我很期待能在这里发生一些有意思的讨论,如果可行,之后的周刊可能会增设一个「这周群里在聊什么?」的栏目。

  2. 博客修修剪剪做了些更新。

    1. 添加了 Pagefind 搜索功能,你可以在所有文章页面分类页面使用

    2. 关于页面添加了一个 Letterbird 表单,你可以直接在关于页面发送电子邮件给我

    3. 做了些减法

      1. 移除了首页的专栏和各种链接
      2. 页脚只在首页显示
      3. 在内容页用面包屑导航替代页眉
    4. 微调一些样式

  3. 开始学习 Lua 语言和 Love2D 游戏引擎。1

🔍 有趣的话题

讨厌广告的原因又增加了

很多免费 App 为了盈利,会在应用内添加广告,最常见的应该是游戏里看广告复活或者奖励翻倍的设计。然而,在使用这样的 App 时,设备数据和很多个人信息会被发送给广告提供商和内容提供商,因为他们需要了解用户需求来推送适宜的广告。这些人有办法通过 ID 确定哪些请求产生自同一人。

在这些个人数据中,还包括比较敏感的位置信息,因为位置也是决定推送什么广告的考虑因素。这篇文章的在梳理清楚个人数据通过广告流动的方向后,通过监控网络流量查看发送给广告商的数据,成功地用广告找到了自己的位置。他发现,如果你一直使用有这些广告的 App,他们甚至能跟踪你五秒前的位置

开发者并不知情,没有参与这些隐私数据的收集和售卖,他们只是安装了广告商的 SDK。在 iOS 中设置要求 App 不跟踪,也只是隐藏了一个全局 ID 的共享,信息难以跨应用、跨开发商共享而已,你的隐私信息依然被暴露了。

如此一来,广告就不只是吵眼睛了,还是一个巨大的隐私安全隐患。个性化对用户来说没有好处,只能让广告商赚更多的钱。在选择 App 时,应该尽量用好用的开源软件或者付费 App 代替有广告的免费 App 以获取更好的体验;如果技术允许,你也可以使用能够拦截广告的 DNS 服务器,阻止与广告商的服务器建立连接。

不过,用户也要意识到,自己没法完全避免个人信息泄露,要接受事实。

所有的说服都是自我说服

🔉
相关播客:来都来了 No.222

在这期播客最后,嘉宾提出了一个我认为很有意思的观点——所有的说服都是自我说服。他指出,说服其实不是让人相信某个东西是真的,而是让人相信某个东西和他早就相信的一个东西是同一个东西。

AI 聊天界面不是好的编程工具

作者认为,用 LLM 编程、创造软件的现有问题在于,聊天界面并不适合用来描述软件。软件就像法律条文,而不是像散乱的、没有语法结构的聊天语句。

作者认为下一代的 AI 编程,应该是通过精心编写的文档生成软件,真正地将人类语言作为一种编程语言。

AI 让我变成文盲程序员

📖

自己写代码的时间变少了,编程能力下降是自然的,这很好理解。作者指出,他的情绪也受到了影响,以前,解决新问题是编程的乐趣,而现在,如果 AI 不能在五分钟内给出解决方案,他就会感到沮丧。我深有同感。

完全放弃 AI 编程有些激进,作者的打算是,每周实行一天「无 AI 日」。

科技爱好者周刊 Vol.336 下的评论中有人指出,AI 似乎带来了很多负面情绪,这可能不是 AI 的问题,而是社会问题。就算你不是程序员,但习惯了在生活中使用 AI,我想你也可以尝试在固定时间里限制自己使用 AI,看看你的生活会有什么不同。

「自动继续」时代

📖

大部分人应该都在编辑器里使用过「Tab 补全」这个功能,输入前几个字符,编辑器就会预测你要输入什么词,按下 Tab 键就可以自动补全。这篇文章的作者指出,如今 AI 已经能通过更多的输入、更准确地预测做个下一步的行动,预测结果已经不局限于补全一个词、一句话,而是能够自动书写很长一段内容,尤其是编程时自动编写代码。

作者的观点是,未来很有可能是 Tab Continuation 的时代。一些大科技公司会构建跨 App 甚至跨平台的预测补全功能。和 Tab 补全一样,Tab Continuation 会更规范化,甚至会有独立的产品供开发者使用。

如何反驳

硅谷创业之父 Paul Graham 的文章,很难想象这是 2008 年的内容,其中的许多观点放在如今的互联网上也非常受用。我认为在互联网上与人交流的人都需要读一读 Paul Graham 的理论。

文章将反对(Disagreement)分为六个层级。

  • DH0. Name-calling(骂人)
  • DH1. Ad Hominem(人身攻击)
  • DH2. Responding to Tone(回应语气)
  • DH3. Contradiction(简单矛盾)
  • DH4. Counterargument(反方论述)
  • DH5. Refutation(驳斥)
  • DH6. Refuting the Central Point(驳斥中心点)

层级越低,越不理智,越不能被视作好的反对言论。Paul Graham 认为最好的反驳应该是 DH6,要尽量不带情绪地驳斥对方的中心点。常见的格式是这样的:

作者的主要论点似乎是 ……,他是这样写的:

(引用)

但这是不对的,因为 ……

中心点不一定是主要观点,也可以是对方论述的基石。

不过,反对不能是为了反对而反对,不是带有攻击性的。反对是因为评论者自己真的有不认可的观点,想要与作者交流,而不是为了把对方击垮。这篇文章里还有很多充满智慧的言词,建议大家都去读一读原文。

💡 新知复盘

自我羊群效应

这一概念由行为经济学家 Dan Ariely 及其团队首次提出。

「羊群效应」指人们跟随多数人所作出的决定而行动,而「自我羊群效应」指人们跟随自己先前已经做过的决定和最初的印象而行动。

这和本期周刊前面的「所有的说服都是自我说服」串联了起来,说服就是利用对方的已有印象,让对方想要去做一件新的事情。

CI/CD

是的,敲了这么久的代码还没学过这个概念,学校也不教啊(

CI 指 Continous Integration(持续集成),指在开发阶段不断地把新代码合并到主分支,通常包括编译、自动化测试和质量检查等步骤。

CD 分两个部分,指 Continous Delivery(持续交付)和 Continous Deployment(持续部署)。持续交付指通过 CI 检查后,将代码打包并部署到预生产环境;持续部署指,通过 CI/CD 之后,手动或自动将改动部署到生产环境。

GitHub Actions 就常常被用来做 CI/CD。如果你使用 Vercel 和 Cloudflare Pages 这类的部署平台,你的网站在上线之前也会自动运行 CI/CD。

JavaScript Temporal

JavaScript 中的 Date 对象是从旧的 Java 中复制粘贴的,API 设计有缺陷。Java 在之后解决了 Date 对象的很多问题,但 JavaScript 30 年来一直没有修复。JavaScript 开发者不得不使用一些第三方库来处理时间日期。

现在,一个新的 API 即将改变 JavaScript 中处理时间日期的方式,这个对象叫做 Temporal,可以完全取代 Date。Temporal 能够计算持续时间,处理时间点(有时区或没有时区)、时间戳,获取当前时间,处理不同历法。

Temporal 目前还在测试阶段,拭目以待吧。

🗣️ 碎碎念

  • 写的怪谈作品被做成视频了,好开心!

  • 塔罗牌里的星币九有点像各种意义上的修剪花园,比如收拾房间、修改博客主题…… 并且在修建过程中不会抓狂,能达到一种自洽的状态。

  • 周五早上一醒发现已经是上班时间,本想着已经迟到了那就不慌了吧,结果学生打了个视频电话问我,这下不得不立刻出门了。因为前一天收到一个破损的包裹要退货,于是中午骑车去驿站,结果一看学校放假期间,驿站要下午一点才开门,来早了半个小时(隔壁驿站都知道把营业时间写 App 上你怎么不改啊,可恶),带着包裹回去的时候又在路口摔了一跤,旁边还有两个阿姨盯着看…… 回去一看,今天的日运是「命运之轮」的逆位,没想到会以这么直接的倒霉显化出来。

  • 我发现抽每日运势并不一定会导致「自我实现的预言」,反而会有适当的外归因让我感到自洽。比如周五那天的破事本来足够我郁闷一下午了,看到日运是命运之轮逆位的那一刻,觉得合理,反而心态变好了。

  • 这期周刊 AI 含量似乎有点高。

  • 最烂的一局 Wordle,这一个词要猜四次也太倒霉了2

    SHAME it is

🐈

发现一个乐评博主,在翻他的视频时无意发现他有一块和我一样的桌布。


  1. 蛇年学的第一门新编程语言居然不是 Python ↩︎

  2. 虽然明明排除了 R 还要猜 Share 确实是我的问题🥹 ↩︎