
Sign up to save your podcasts
Or


Agili 的 Hacker Podcast 今天带来 7 个技术热点:更顺手的网络连接查看器 Snitch、为何低延迟系统总要关掉 Nagle(TCP_NODELAY)、Photoshop 1.0 源码考古、PostgreSQL 18 的“瞬时克隆”、FPGA 工具链困境与出路、Meta 的 SAM Audio 音频分割,以及 Bellard 的 MicroQuickJS 极简 JS 引擎。
Snitch 把“看连接”这件事从枯燥的纯文本输出,升级成更直观的终端交互体验:既适合临时排障,也能进入持续观察模式。它本质上是把网络连接、端口、进程这些信息,用更符合人类阅读习惯的方式组织起来。
除了按 TCP/UDP、监听状态等常规筛选外,Snitch 还强调按 proc=...、PID、端口等维度的细粒度过滤;并把“看到异常连接之后怎么办”也纳入交互流程(例如在界面里直接对相关进程做操作)。很多人认可它的定位:日常调试与巡检的效率工具,而不是用来对抗高水平攻击的安全产品——观测点不同,能力边界也不同。
这篇文章把一个老问题讲得很“当代”:在低延迟分布式系统里,性能抖动的首要怀疑对象往往不是代码逻辑,而是 TCP 层的“好心办坏事”——Nagle 算法与 Delayed ACK 的组合拳。
Nagle 为解决 Tinygrams(小包带来巨额报头开销)而生:当还有未确认数据时,先把小块数据攒一攒再发。问题在于它可能与 Delayed ACK 形成等待链:发送方等 ACK 才继续发,接收方又等更多数据才发 ACK,最终出现肉眼可见的延迟尖峰。
工程实践里形成了更细的共识:
软件考古最迷人的地方在于:你能看到“现代软件范式的幼年形态”。Photoshop 1.0 的 Pascal + 68000 汇编源码不仅是怀旧材料,更像一份关于架构、抽象与性能边界的公开课。
这套代码展示了早期工程师如何在内存与 CPU 都紧张的年代,通过清晰的模块边界与命名纪律,把复杂度压进结构里。许多今天仍熟悉的概念(例如处理大图的分块思路、滤镜管线、围绕性能的精细化实现)在当年就已成型。
围绕这次公开,讨论很自然地延伸到开源图像软件生态:源码公开并不自动带来体验的持续打磨,尤其当问题是“长期、琐碎、难以获得成就感”的 UX 细节时。换句话说,能读到优雅老代码是一回事,让现代工具在日常使用中同样顺手又是另一回事。
Postgres 18 的 file_copy_method = clone 把“克隆数据库”从 I/O 密集型体力活,变成文件系统层的元数据操作:靠 reflink + Copy-on-Write,让克隆接近瞬时完成。
核心机制是写时复制:克隆出来的库最初几乎不占额外物理空间,只有发生写入时才分配新块。基准里出现了夸张的量级差(秒级到毫秒级),意味着本地实验、回滚、集成测试环境可以更像“分支切换”而不是“搬家”。
实践经验也更务实:
FPGA 的矛盾很尖锐:硬件能力越来越强,但开发体验常常像穿越回上个世纪。动辄几十到数百 GB 的专有工具链、复杂许可、漫长综合与布局布线,让“点亮一个 LED”都像一场耐心挑战。
很多观点指向同一个结论:FPGA 的门槛更多来自生态和流程,而不是概念本身。尤其在教学与入门场景里,时间往往耗在环境报错与工具崩溃上,而不是逻辑设计思维。
SAM Audio 试图把“交互式分割”的范式带入音频:你可以用文本提示、视觉提示(点击画面里正在发声的对象)或时间跨度提示,来抽取目标声音。这类多模态交互更像一种“新 UI”,不只是换了个模型。
不少人对它在音乐分轨上的“宣传与实际差距”保持谨慎,但对视觉引导的潜力更感兴趣:在嘈杂环境下锁定画面中的说话人,可能直接提升会议转写、视频字幕、甚至助听器类产品的体验上限。
SAM 系列一贯的价值在于“人机协作标注”:用交互式工具把标注成本打下来,反过来又能喂出更大的训练数据与更强的模型闭环。对开发者来说,关注点不必只放在“好不好听”,也可以放在“如何把多模态提示做成可组合的 API”。
MicroQuickJS(MQuickJS)把 JS 引擎推向极限嵌入式:资源占用极低,同时通过更严格的语言子集和更“硬”的约束,换来可预测性与可靠性。
它接近 ES5 子集,并主动砍掉容易出错的特性:禁用 with、禁止隐式全局变量、数组不允许 holes、超界赋值直接报错等。配合追踪式压缩 GC 与尽量少依赖 libc 的设计,它更像一个“可控的脚本运行时”,而不是浏览器兼容性包袱下的 JavaScript。
围绕脚本语言选择,有人感慨如果早几年有这种级别的嵌入式 JS,引擎选择可能会改写;也有人强调 Lua 在某些语言特性与工程传统上仍有优势。更重要的是,这类项目把“脚本化能力”带到更小的设备上:当 MCU/边缘设备需要可更新逻辑、可配置规则、甚至小型插件体系时,超轻量运行时的价值会被放大。
相关链接:
By Agili 的 Hacker PodcastAgili 的 Hacker Podcast 今天带来 7 个技术热点:更顺手的网络连接查看器 Snitch、为何低延迟系统总要关掉 Nagle(TCP_NODELAY)、Photoshop 1.0 源码考古、PostgreSQL 18 的“瞬时克隆”、FPGA 工具链困境与出路、Meta 的 SAM Audio 音频分割,以及 Bellard 的 MicroQuickJS 极简 JS 引擎。
Snitch 把“看连接”这件事从枯燥的纯文本输出,升级成更直观的终端交互体验:既适合临时排障,也能进入持续观察模式。它本质上是把网络连接、端口、进程这些信息,用更符合人类阅读习惯的方式组织起来。
除了按 TCP/UDP、监听状态等常规筛选外,Snitch 还强调按 proc=...、PID、端口等维度的细粒度过滤;并把“看到异常连接之后怎么办”也纳入交互流程(例如在界面里直接对相关进程做操作)。很多人认可它的定位:日常调试与巡检的效率工具,而不是用来对抗高水平攻击的安全产品——观测点不同,能力边界也不同。
这篇文章把一个老问题讲得很“当代”:在低延迟分布式系统里,性能抖动的首要怀疑对象往往不是代码逻辑,而是 TCP 层的“好心办坏事”——Nagle 算法与 Delayed ACK 的组合拳。
Nagle 为解决 Tinygrams(小包带来巨额报头开销)而生:当还有未确认数据时,先把小块数据攒一攒再发。问题在于它可能与 Delayed ACK 形成等待链:发送方等 ACK 才继续发,接收方又等更多数据才发 ACK,最终出现肉眼可见的延迟尖峰。
工程实践里形成了更细的共识:
软件考古最迷人的地方在于:你能看到“现代软件范式的幼年形态”。Photoshop 1.0 的 Pascal + 68000 汇编源码不仅是怀旧材料,更像一份关于架构、抽象与性能边界的公开课。
这套代码展示了早期工程师如何在内存与 CPU 都紧张的年代,通过清晰的模块边界与命名纪律,把复杂度压进结构里。许多今天仍熟悉的概念(例如处理大图的分块思路、滤镜管线、围绕性能的精细化实现)在当年就已成型。
围绕这次公开,讨论很自然地延伸到开源图像软件生态:源码公开并不自动带来体验的持续打磨,尤其当问题是“长期、琐碎、难以获得成就感”的 UX 细节时。换句话说,能读到优雅老代码是一回事,让现代工具在日常使用中同样顺手又是另一回事。
Postgres 18 的 file_copy_method = clone 把“克隆数据库”从 I/O 密集型体力活,变成文件系统层的元数据操作:靠 reflink + Copy-on-Write,让克隆接近瞬时完成。
核心机制是写时复制:克隆出来的库最初几乎不占额外物理空间,只有发生写入时才分配新块。基准里出现了夸张的量级差(秒级到毫秒级),意味着本地实验、回滚、集成测试环境可以更像“分支切换”而不是“搬家”。
实践经验也更务实:
FPGA 的矛盾很尖锐:硬件能力越来越强,但开发体验常常像穿越回上个世纪。动辄几十到数百 GB 的专有工具链、复杂许可、漫长综合与布局布线,让“点亮一个 LED”都像一场耐心挑战。
很多观点指向同一个结论:FPGA 的门槛更多来自生态和流程,而不是概念本身。尤其在教学与入门场景里,时间往往耗在环境报错与工具崩溃上,而不是逻辑设计思维。
SAM Audio 试图把“交互式分割”的范式带入音频:你可以用文本提示、视觉提示(点击画面里正在发声的对象)或时间跨度提示,来抽取目标声音。这类多模态交互更像一种“新 UI”,不只是换了个模型。
不少人对它在音乐分轨上的“宣传与实际差距”保持谨慎,但对视觉引导的潜力更感兴趣:在嘈杂环境下锁定画面中的说话人,可能直接提升会议转写、视频字幕、甚至助听器类产品的体验上限。
SAM 系列一贯的价值在于“人机协作标注”:用交互式工具把标注成本打下来,反过来又能喂出更大的训练数据与更强的模型闭环。对开发者来说,关注点不必只放在“好不好听”,也可以放在“如何把多模态提示做成可组合的 API”。
MicroQuickJS(MQuickJS)把 JS 引擎推向极限嵌入式:资源占用极低,同时通过更严格的语言子集和更“硬”的约束,换来可预测性与可靠性。
它接近 ES5 子集,并主动砍掉容易出错的特性:禁用 with、禁止隐式全局变量、数组不允许 holes、超界赋值直接报错等。配合追踪式压缩 GC 与尽量少依赖 libc 的设计,它更像一个“可控的脚本运行时”,而不是浏览器兼容性包袱下的 JavaScript。
围绕脚本语言选择,有人感慨如果早几年有这种级别的嵌入式 JS,引擎选择可能会改写;也有人强调 Lua 在某些语言特性与工程传统上仍有优势。更重要的是,这类项目把“脚本化能力”带到更小的设备上:当 MCU/边缘设备需要可更新逻辑、可配置规则、甚至小型插件体系时,超轻量运行时的价值会被放大。
相关链接: