## WHIP:用Perl自制的智能家居系统
WHIP是一个源于对现有智能家居解决方案(如FHEM)不满意的家庭基础设施项目——特别是它们依赖性问题和封闭性。目标是:一个健壮、开源、DIY系统,优先考虑寿命和控制。
核心使用STM32微控制器通过CAN总线连接(因其可靠性和速度优于RS485/WiFi),由树莓派中心管理。节点运行FreeRTOS,即使在没有中心连接的情况下也能实现自主运行,并配备了各种传感器/执行器模块。一个基于Perl的服务器协调整个系统,利用Modbus和DALI等协议。
一个关键创新是**pperl**,一种用Rust编写的新Perl解释器,旨在通过JIT编译、自动并行化和字节码缓存实现与V8相当的性能。它还具有自动FFI,用于无缝集成C库,以及守护进程模式,以实现快速响应时间。
该系统已经部署在两个离网别墅中,证明了其可扩展性和实际可行性。WHIP强调模块化、领域特定中心架构(能源、照明、音频等),以避免单点故障并提高可维护性。该项目优先考虑为几十年构建,而不仅仅是保修期,并秉承“自己动手”的理念,专注于健壮、工业级的解决方案。
## 电子表格的持久遗产:一个精简的VisiCalc克隆
近半个世纪以来,电子表格一直是计算领域的主导力量,因其卓越的用户体验而备受赞誉。受此启发,作者着手重现1979年第一款电子表格软件VisiCalc的精简版本,以理解其核心原理。
VisiCalc的成功源于其操纵数据、可视化结果,甚至在相对较小的内存占用(16K RAM)下运行简单程序的能力。该项目涉及构建一个基于单元格的数据模型,单元格可以包含值、公式或为空,以及一个公式评估器和一个基本的文本用户界面。
核心功能依赖于递归下降解析器来评估引用其他单元格的公式。重新计算的处理方式高效——模仿VisiCalc的方法——通过迭代地重新评估整个电子表格,直到不再发生变化。一个简单的基于curses的TUI提供了导航和编辑功能。
虽然功能齐全的电子表格仍然是一项复杂的任务,但这种精简的实现展示了VisiCalc原始设计的强大和优雅,突出了其基本概念如何继续影响着今天的现代电子表格软件。该项目总共不到500行C代码,进一步强调了这款基础应用程序的持久影响。
Ploum 意识到去中心化社交网络早已存在:博客和电子邮件。受此启发,他们在 Offpunk 中实现了“分享”和“回复”功能,Offpunk 是一款用于浏览小型网络(Gemini、Gopher 等)的工具。
“分享”会创建一个预填了帖子 URL 和标题的电子邮件,方便添加背景信息。“回复”会尝试查找作者的电子邮件地址,并允许用户*保存*发现的地址以供将来使用——实际上是在构建一个博主的个人地址簿。
该系统与基于终端的工具(如 Neovim 和 Neomutt)无缝集成,提供了一种私密、轻量级的替代主流社交媒体的方式。Ploum 个人在两个月内使用了“回复”功能超过 40 次,发现这是一种与在线内容互动出人意料的有效方式。
核心信息是,社交网络并非关于新的协议,而是创造性地利用现有的基础设施——电子邮件和简单的网站,抵制向中心化、依赖 Javascript 的平台的推动。
## 从恐惧到喜悦:对为人父母的观念转变
在成为父母之前,作者对孩子抱有恐惧,认为父母生活乏味且负担沉重——这种观点源于观察公共场合中与孩子相关的挑战时刻,以及回忆起自己艰难的童年。他礼貌地祝贺新父母,但内心却暗自庆幸自己没有经历。
一切随着自己孩子的出生而改变。一种深刻的、近乎化学般的转变,让他对所有孩子都产生了强烈的保护欲。他意识到自己之前的观察带有偏见,只关注困难的时刻,而忽略了为人父母的宁静喜悦。
他发现了一种意想不到的深刻联结——在日常生活中感受到的平静满足,以及与孩子之间令人惊讶的友谊。虽然承认挑战——生产力下降和优先事项的改变——但他发现工作已经适应,而野心也发生了微妙的改变,取而代之的是对家庭更深层次的关注。
最终,作者得出结论,尽管最初感到焦虑,但拥有孩子为他的生活带来了丰富和频繁的幸福,超越了他成为父母之前的期望,他怀疑许多人都有同感。
## 编织探索:从立式织机到数字界面
受到可穿戴感知实验室的启发,作者重拾编织,购买了一台8轴立式织机,以探索基于提经的编织的限制与创造力——这与之前使用的独立线控织机形成对比。织机的设置,包括放经和穿综,证明具有挑战性,但得到了专家指导的帮助。
该项目涉及试验不同的穿综模式——点提经以实现对称性,以及后来使用AdaCAD等软件设计的复杂裂纹织。一个关键发现是织机的二进制逻辑如何影响设计,通常会导致对称图案。
进一步的探索促成了与可穿戴感知实验室的合作,为计算机控制的TC/2织机创建了一个提经织机模拟器。这个多用户界面允许在编织过程中进行实时调整和“故障”,突出了将数字控制与手工技艺相结合的生成潜力。作者还倡导开放访问编织图样,目前在handweaving.net上受到限制,并计划对其进行存档。最终,这段旅程展示了传统技术、数字工具以及编织过程中固有的具身知识之间迷人的相互作用。