计算机科学家 David Chisnall 最近分享了他对 Neovim 的不满,因为该软件永久删除了他长期的撤销历史记录。作为一名长期使用 Vim 的用户,Chisnall 依赖于 Vim 的“持久撤销”(persistent undo)功能——即使在重启或数月不使用后,该功能也能保存编辑历史记录,作为他数据的一项保障。 当他尝试使用 Neovim 时,软件在未经提示的情况下,以一种不兼容的格式覆盖了他现有的撤销文件。当 Chisnall 报告这一数据丢失问题时,开发人员不予理会,称用户不应依赖其自身数据的持久性。这次经历使 Chisnall 得出结论:该团队对用户缺乏基本的“注意义务”(duty of care)。 这一事件凸显了杰夫·拉斯金(Jef Raskin)在《人机界面》(*The Humane Interface*)中提出的第一法则:程序绝不能损害用户的数据,也不能因不作为而让数据受到损害。对于软件用户和设计者而言,这个故事提醒人们,可靠性和对用户劳动成果的尊重,与技术创新同样重要。当软件将用户生成的数据视为可丢弃之物时,就违背了人性化界面设计的核心原则。
出于“修理胜于更换”的愿望,一位电子产品新手成功修复了两个用了十年的自行车灯。在原装电池无法充电后,作者前往当地的一家酷儿创客空间(queer makerspace)进行了首次 DIY 维修尝试。
整个过程包括:切开硅胶外壳、拆除旧组件,并在人工智能和同伴的帮助下识别出正确的电池型号(LIR2477)。在速卖通(AliExpress)上花费约 20 加元购买替换零件后,作者焊入新电池,克服了一些外观上的小瑕疵并重新组装,最后用硅胶封好。
尽管经验不足且出现了一些小挫折(如弄丢了几颗螺丝),但该项目最终圆满成功。这些自行车灯现已完全恢复功能,证明了即使是初学者,只要在支持性的社区空间内,也能完成基础维修。作者强调了学习新技能以及延长电子产品寿命、而非将其丢弃的价值。
**RapidsMPF** 是一款高性能、外存式(out-of-core)库,旨在解决分布式数据洗牌(shuffling)中固有的内存、传输和同步难题,而洗牌操作对于连接(joins)和排序等任务至关重要,且开销巨大。
从历史上看,洗牌操作非常消耗内存,因为它通常需要跨节点实例化大型数据子集。RapidsMPF 通过流式、外存式架构解决了这一问题,从而避免了“内存溢出”(OOM)错误。它通过加速传输(如 UCXX/GPUDirect RDMA)接收数据或将其溢出到主机内存,动态管理内存压力,而不是在设备和主机之间进行冗余的数据交换。
在 DGX B200 上的基准测试表明,RapidsMPF 在理想条件下可实现约 1.8 TiB/s 的全局吞吐量。即使在人为的内存压力下,该库也能保持稳定,通过智能利用主机内存来避免不必要的驱逐,从而实现平稳扩展。虽然随着带宽达到极限,性能会自然下降,但系统避免了 OOM,并为处理超过 GPU 显存的数据集提供了一条平滑且可预测的路径。RapidsMPF 同时提供 C++ 和 Python 接口,为现代 ETL 引擎和分布式数据流水线提供了坚实的基础。