2024-02-12

29 篇热帖

1. I designed a cube that balances itself on a corner (willempennings.nl)

自平衡立方体项目概述

项目背景与目标

该项目旨在构建一个能够通过角点自我平衡并可控旋转的立方体,其创意源自苏黎世联邦理工学院(ETH Zürich)的“Cubli”。作者在现有研究(如Bobrow等人改进的控制方案)基础上进行逆向工程,致力于实现一个完全开源的设计(GitHub),以弥补此前相关项目闭源的不足。

核心工作原理

立方体通过三个反作用飞轮精密控制算法实现平衡与旋转。反作用飞轮技术也应用于卫星(如詹姆斯·韦伯望远镜)的姿态控制。

机械设计

  • 结构:主要由8个“基石”和6个面板组成,其中3个面板承载电机与飞轮组件。
  • 材料:主体结构采用不锈钢(高强度),面板使用(减轻重量)。
  • 制造:金属部件由PCBWay通过CNC加工制造,质量可靠。
  • 飞轮组件:每个组件包括电机、不锈钢支架、轮毂和反作用飞轮。设计重点在于轻量化与稳健性,并注意部件对齐以避免振动。通过垫纸等微调方式校正微小不对齐。
  • 组装:三个飞轮组件安装于特定面板,其中一个电机方向不同以简化布线。最终形成一个坚固且相对较轻的立方体结构。

电子与机械系统设计

  • 电机与控制器:选用高性能的Maxon EC系列无刷电机(60W)和4象限电机控制器(支持电流控制,最高6A)。控制器具备I²t过热保护和调谐软件。
  • 电池:采用6S1P锂聚合物电池(22.2V,1300mAh),可续航约1小时。
  • 主板:定制设计,集成电机控制器、ICM20948 IMUESP32-S3开发板及保护电路、稳压器,并预留机械制动器接口。
  • 电源板:简单电路,含XT60连接器和并联开关(应对大电流)。
  • 组装与调试:通过回流焊完成表面贴装,手工焊接通孔元件。后期发现并修正了PWM信号布线错误。

控制器设计与算法

  • 算法来源:移植自Fabio Bobrow的Arm Mbed代码至Arduino平台(使用ESP32),并重写IMU驱动。
  • 控制逻辑
    1. 平衡控制:在保持立方体稳定平衡的同时,最小化飞轮转速。
    2. 积分机制:使用飞轮位置(角度)作为积分项,直观且有效补偿恒定误差(如重量分布不均)。
  • 调谐:因硬件差异(飞轮规格不同),需手动反复调整控制器增益,以获得良好的平衡与抗干扰性能。

成本与开源性

  • 总成本:约2500欧元
  • 开源:所有设计文件、配置及代码均在GitHub公开。

未来计划

计划添加机械制动器,使飞轮能快速制动从而产生巨大扭矩,实现立方体自动从跌倒状态起立至平衡点,此功能目前仅见于原版Cubli。

项目意义

这是一个兼具学习与研究价值的项目,展示了高精度控制系统与开源硬件设计的结合。作者是已知的全球首个达到类Cubli平衡性能的完全开源立方体实现者。

2. Cloudflare defeats patent troll Sable at trial (blog.cloudflare.com)

Cloudflare在审判中击败专利流氓Sable

核心事件: 2024年2月,经过近七年的法律斗争,Cloudflare在德克萨斯州韦科的联邦法院成功击败了专利流氓Sable IP和Sable Networks。陪审团在不到两小时的审议后做出裁决,认定Cloudflare未侵犯Sable主张的专利,并且该专利本身是无效的,不应被授予。

背景与策略:

  • Sable的指控: Sable于2021年3月起诉Cloudflare,最初主张涉及四项专利的约100项权利要求。这些专利源于21世纪初的硬件路由器技术,而Sable试图将其解释为覆盖Cloudflare的现代软件定义云服务。
  • Sable的性质: Sable IP是一个不制造或销售任何产品、没有技术人员的壳公司,其成立目的是通过诉讼“货币化”其收购的专利组合。它此前曾起诉过思科、Juniper Networks等多家公司,这些公司均在庭外和解。
  • Cloudflare的应对:
    1. Project Jengo项目: 发起众包活动,征集可使Sable专利无效的“现有技术”证据,并承诺10万美元的奖励基金。该项目此前曾帮助Cloudflare击败另一专利流氓Blackbird。
    2. 行政程序挑战: 通过向美国专利商标局提出“双方复审”程序,Cloudflare成功在审判前将Sable的指控从四项专利、约100项权利要求,大幅削减至仅剩一项专利中的一项权利要求(美国专利7,012,919的第25项权利要求)。
    3. 法庭辩护: 在审判中,Cloudflare论证了其技术架构(基于数据包而非流)与Sable的旧专利描述完全不同,且Sable主张的权利要求因缺乏新颖性或显而易见而无效。

审判与结果:

  • 审判在通常被认为对专利权人友好的西德克萨斯地区法院进行。
  • Sable试图将旧专利强行映射到Cloudflare的现代技术上,但论点缺乏说服力。
  • Cloudflare通过其工程师和律师团队,清晰地展示了其创新技术与Sable专利的无关性,并强调Sable的行为是对专利制度的滥用。
  • 陪审团最终裁定Cloudflare不侵权,且Sable的专利权利要求无效。

后续与意义:

  • 此次胜利是对所有专利流氓的强烈警告,表明Cloudflare不会屈服于无理诉讼。
  • Cloudflare将继续推进专利制度改革,并将在案件正式结束后宣布Project Jengo项目的最终奖金分配。
  • 该案展示了通过结合法律手段、行政程序和公众协作(Project Jengo)来对抗专利滥用的有效性。
5. Enhancing Factorio with SAT solvers (github.com)

该文章介绍了如何利用SAT(布尔可满足性问题)求解器为游戏《异星工厂》自动生成有效的物品传送带平衡器。

核心原理与流程:

  1. 选择平衡器尺寸。
  2. 将游戏内的瓦片(传送带、分路器等)表示为一组布尔变量(如方向、状态、颜色等)。
  3. 根据游戏规则编写约束子句,确保生成的方案是有效的平衡器。约束包括:传送带不相交、颜色沿传送带一致、输入输出端颜色正确、分路器连接关系匹配抽象网络等。
  4. 将约束子句传递给SAT求解器,它会返回一个满足所有约束的解,或证明无解。若无解,则更换尺寸重试。

技术局限:

  • 当前假设平衡器的输入/输出端必须被分路器覆盖,这可能导致解非理论最优,但实践中影响有限。
  • 无法完全保证生成的方案绝对符合《异星工厂》的所有复杂规则。
  • 随着网络中分路器数量增加,生成难度呈指数增长。

项目安装与设置: 项目通过Python虚拟环境安装,使用pip install --editable .进行可编辑安装,并需要通过fetch_assets命令获取游戏资源。渲染功能依赖Graphviz。

主要工具与命令: 项目提供了一系列命令行工具,例如:

  • fetch: 加载游戏纹理。
  • blueprint / blueprint_book: 导入/导出游戏蓝图。
  • render: 渲染生成的平衡器。
  • belt_balancer: 从网络生成平衡器。
  • belt_balancer_net_free: 生成任意n到n的平衡器。
  • calculate_optimal: 寻找最优平衡器。
  • interchange: 生成用于构建复合平衡器的立交桥。
  • rotatestringifiertest_runner: 旋转、字符串化、运行测试等辅助工具。

渲染器交互控制: 在渲染视图中,可以使用I/K键切换上一个/下一个平衡器,S键保存动画,E键导出为蓝图。

示例用法: 文章展示了多种工具组合使用的示例,例如:

  • 查找并渲染所有能装入10x4矩形内的4到4平衡器。
  • 计算特定地下长度下的最优长度/面积平衡器。
  • 为组合平衡器生成立交桥。
  • 渲染网络图形。
  • 生成随机区块并打包成蓝图书。

未来工作: 计划解决更多类型的平衡器、扩大规模,并支持寻找最优工厂单元。

6. Kalman Filter Explained Simply (thekalmanfilter.com)

卡尔曼滤波器简单解释

核心概念

卡尔曼滤波器是一种实时估计算法,能通过有噪声或不精确的测量值,更准确地估算系统状态(包括不可直接观测的参数)。其核心能力在于估计不可观测的系统参数,而不仅仅是平滑测量值,这使其在需要高精度实时估计的领域(如机器人、导航、目标跟踪)非常有用。

工作原理概述

可将卡尔曼滤波器视为一个“黑箱”:输入是带噪声的测量值,输出是更准确的系统状态估计值。它通过权衡当前状态预测与新的测量信息来生成最优估计,这一过程依赖于一个关键机制:卡尔曼增益,用于决定对新测量信息的信任程度。

算法核心步骤(以雷达跟踪为例)

  1. 初始化:使用前几次测量值初始化系统状态(位置)和误差协方差。例如,首次测量直接设定为初始状态。
  2. 重新初始化:利用第二次测量计算速度估计,并更新状态与误差协方差。
  3. 状态预测:使用系统模型(如匀速运动模型)将上一时刻的状态向前预测,与当前测量时间对齐。预测会带来不确定性,因此误差协方差会增长。
  4. 计算卡尔曼增益:基于预测的误差协方差和测量噪声,计算一个增益值,决定在最终估计中应该更相信预测还是新测量。
  5. 状态更新:结合预测状态、新测量值和卡尔曼增益,计算出当前时刻的最优状态估计和误差协方差。

关键特性

  • 实时性:只需保留最新状态估计,适合内存受限的系统。
  • 最优性:在特定假设下(如高斯噪声),提供线性系统状态的最优估计。
  • 通用性:适用于多种应用,如物体位置与速度跟踪、数字秤重量估计、惯性导航等。
  • 模型依赖:其性能依赖于系统模型和噪声统计特性的准确性。

总结

卡尔曼滤波器是一个强大的实时状态估计算法,通过迭代地进行预测和更新,能够融合不完美的测量数据,持续产生准确的状态估计。理解其基本流程和关键概念(如卡尔曼增益)即可有效应用,无需掌握复杂的数学推导。

7. 2024: The year of the OpenStreetMap vector maps (blog.openstreetmap.org)

OpenStreetMap 将在2024年迎来重大飞跃:在官方网站引入矢量瓦片技术。该项目由OpenStreetMap基金会聘请的制图与开放数据领域专家保罗·诺曼领导。他在OpenStreetMap社区深耕多年,曾在MapQuest、维基媒体基金会等机构担任要职。

矢量瓦片与传统静态栅格图像不同,其存储的是点、线等地理数据,支持动态样式化和交互,是行业标准。然而,OpenStreetMap的特殊之处在于其地图数据持续、增量更新(编辑后一分钟即可见),这构成了制图者的关键反馈环。因此,OpenStreetMap必须投资开发自己的矢量瓦片软件栈。

短期内,用户将体验到更新、更现代的地图样式与无缝缩放功能。长远来看,该技术将为志愿者和用户解锁众多可能性,例如3D地图、高效的数据混合与集成、主题样式、多语言地图、行政边界视图、交互式兴趣点以及针对视障用户的无障碍地图等,这不仅是美学的提升,更是功能性的飞跃。

OpenStreetMap基金会此前在社区调查中注意到对矢量瓦片开发存在分歧,而当前的项目在志愿者与专业开发之间取得了平衡,这也符合其加强核心软件维护与开发的多年战略计划。该基金会的运作依赖捐赠,呼吁公众捐款支持这一开源地图的未来项目。

8. Deleting and destroying finished movies (www.rogerebert.com)

华纳兄弟探索公司(WBD)在2022年合并后,为大幅减少债务,采取了一种激进的会计策略:删除已完成的电影以申请税务减免。这一做法最臭名昭著的例子是成本约9000万美元的《蝙蝠女》电影被彻底销毁。

近期,另一部已完成的真人动画喜剧《土狼大战万力胶》也面临同样命运。该片制作成本约7000万美元,由约翰·塞纳、威尔·福特特主演,试映观众评分极高(据报达90分以上),但于2023年11月被标记为删除,旨在获得税务减免。在引发公众强烈抗议后,华纳曾表示将出售该片,但据后续报道,公司设定的要价(7000万至8000万美元)远高于其通过税务减免能获得的利益(约3000万美元),且并未认真进行谈判。分析认为,公司宁愿通过注销获得更少的钱,也不愿冒风险让竞争对手将此片成功发行而令自身难堪。

这种做法不仅抹除了成片,也销毁了与电影相关的所有材料。参与制作的创作者(如剪辑师卡斯滕·卡帕内克)指出,这意味着他们数年的劳动成果和职业生涯的证明被彻底抹去。文章将华纳合并后的其他策略也归为类似逻辑,例如:从流媒体平台下架大量剧集以避免支付剩余酬金;将旗下标志性IP(如《乐一通》)的部分内容授权给竞争对手等。这些行为被批评为短视且损害公司长期品牌价值

文章作者对此提出强烈批判,认为这种行为在道德上应受谴责,可称之为“会计谋杀”。虽然公司有权处置自己的资产,但作者呼吁政府应像监管其他损害公共利益的企业行为一样,对媒体公司的这种破坏性做法进行干预。文中提到了欧洲的艺术家精神权利概念以及美国现有的《视觉艺术家权利法》作为潜在的监管模板。

最后,文章将这一现象与梅尔·布鲁克斯的电影《制作人》情节相类比:两者都涉及故意搞砸一个项目以谋取利益。但根本区别在于,《制作人》中的项目至少公之于众了,而华纳的做法则完全剥夺了作品与观众见面的机会。

9. Finding a new software developer job (henrikwarne.com)

文章摘要:寻找新的软件开发工作

本文作者分享了其首次被裁员后寻找新软件开发工作的详细经历、所用方法及反思。整个过程耗时超预期,联系了30家公司,最终获得3个录用通知。

一、被裁员经历

  • 突发裁员:去年10月底,作者因公司业务不振被裁员,感到意外。公司立即切断其所有资源访问权限。
  • 应对心态:作者虽意外但未恐慌,因长期秉持“随时准备找新工作”的哲学,维护着一份心仪公司清单和联系人网络。
  • 即时行动:获得即时解约的好处是能立即全身心投入求职,同时仍有一段带薪期。

二、寻找职位的方法

  1. 主要平台 - LinkedIn
    • 设置状态:将“开放工作”状态改为“立即,正在积极申请”(仅对招聘人员可见)。
    • 主动申请:浏览心仪公司的职位页和职位广告,关注申请人数和广告年龄。
    • 搜索功能:使用关键词(如“Golang 斯德哥尔摩”)搜索,但发现筛选完全远程职位和最新广告的功能有缺陷。
    • 主动联系:尝试联系过往招聘人员或在简介中鼓励直接联系的经理,但收效甚微。
  2. 其他来源
    • 本地平台:在瑞典的Demando平台更新资料后获得一个录用通知。
    • 其他网站:浏览了RemoteOK、efinancialcareers及Hacker News招聘帖,但收获有限。
    • 新方法:通过搜索某公司的“竞争对手”或“替代品”来发现类似公司。

三、申请与跟踪

  • 准备材料:多数公司要求简历和求职信。作者重复使用并修改以往的求职信以提高效率。
  • 建立跟踪表:用Excel记录了30家申请公司的信息。
  • 无回复问题:6家公司从未回复,包括一些已进行过面试的公司,作者认为缺乏反馈会影响公司形象。

四、使用的付费工具

  • LinkedIn Premium:试用一个月后认为价值有限,已取消。
  • 开发工具:为备考购买了GoLand许可证,并尝试了GitHub Copilot。
  • AI工具:订阅的ChatGPT在完成家庭作业时非常有用。
  • 练习平台:购买了LeetCode会员用于刷题,并购买了一个IQ测试练习课程以应对公司的逻辑测试。

五、面试过程与准备

  • 流程概述:典型流程包括4-5轮面试(与招聘人员、招聘经理、技术面试等),技术面试包含实时编码或家庭作业。
  • 充分准备
    • 整理面试提示文档,特别准备了行为面试问题(使用STAR框架)和常见代码片段。
    • 观看技术面试建议视频,强调保持好奇心和协作态度。
  • 面试表现
    • 在非技术面试中表现自信,如实说明离职原因。
    • 对实时编码面试感到紧张,但因充分准备而整体顺利。
    • 家庭作业:完成5个,耗时至少6小时。失败案例源于未编写测试、未优化缓存或未处理边缘情况(如空输入)。ChatGPT有助于快速搭建框架。
    • 实时编码:通过3次,失败2次,原因包括时间紧迫、环境设置问题等。

六、薪资谈判

  • 策略调整:初期因报价过高导致面试取消,后改为提供过去几年的薪资历史以供参考。
  • 市场了解:对斯德哥尔摩开发者薪资有清晰认知(平均月薪5.5万-6.5万瑞典克朗,高级职位可达8万以上)。
  • 关键建议:在投入大量面试时间前,务必了解公司的薪资范围。

七、选择与最终结果

  • 曲折经历:有一家公司征询推荐信后却选择了他人,令人失望。
  • 多重机会:同时获得3个录用通知,在谈判中占据有利位置。
  • 最终选择:获得了一份在Swissblock担任高级开发者的满意工作,兼顾了兴趣和薪资。

八、经验教训总结

  1. 压力与耗时:求职过程压力大、耗时远超预期,轻松应对直到获得确定录用通知。
  2. 数量游戏:成功率低,需要申请大量公司。作者很难准确判断自己的面试表现。
  3. 寻求支持:与理解情况的同行(如前同事)交流非常有益。
  4. 招聘人员响应:快速响应的招聘人员能极大提升对该公司的好感。
  5. 人情关怀:同事被裁员时主动联系告别,意义重大。

结论:尽管市场环境更艰难,但凭借丰富经验和充分准备,作者最终找到了理想工作。希望本文能对其他求职的开发者有所帮助。

10. Built-in workaround for applications hiding under the MacBook Pro notch (flaky.build)

问题背景

新款MacBook Pro的刘海设计导致菜单栏图标容易被隐藏,尤其是在运行多个应用时。Apple未自动调整菜单栏布局,使得图标可能遮挡在刘海下方。

解决方案

无需安装第三方应用(如Bartender),可通过MacOS内置命令行调整菜单栏的间距和内边距,从而容纳更多图标。

具体操作步骤

  1. 打开终端(Terminal.app)
  2. 运行以下命令修改间距设置
    • 设置内边距:defaults -currentHost write -globalDomain NSStatusItemSelectionPadding -int 6
    • 设置间距:defaults -currentHost write -globalDomain NSStatusItemSpacing -int 6
    • 值可从0到6调整,推荐值为6以平衡显示效果。
  3. 注销并重新登录以使更改生效。

效果与注意事项

  • 效果:调整后,菜单栏可容纳更多图标。例如,在14英寸MacBook Pro上,图标数量可从默认的约13个增加到21个。
  • 局限性:此方法可推迟问题,但若持续添加更多菜单栏应用,图标仍可能被隐藏。可进一步降低设置值(如从6减小)来临时解决。

恢复默认设置

若不满意,可通过以下命令删除自定义设置并恢复原状:

  • 删除内边距:defaults -currentHost delete -globalDomain NSStatusItemSelectionPadding
  • 删除间距:defaults -currentHost delete -globalDomain NSStatusItemSpacing
  • 执行后需注销并重新登录。

来源与更新

  • 设置信息源自Stack Exchange的答案。
  • 文章更新包括:澄清对Bartender应用的中立态度、添加注意事项说明问题可能重现、以及更名以避免误解。
11. Ask HN: What are the best articles on managing people?
12. Cousins are disappearing. Is this reshaping the experience of childhood? (www.cbc.ca)
13. Why software engineers like woodworking (2021) (www.zainrizvi.io)

文章总结:软件工程师为何喜欢木工(2021)

本文作者通过自身从编程转向木工的经历,探讨了软件工程与木工之间的相似性,并解释了为何软件工程师会对木工产生共鸣。

个人经历与背景

作者原本的爱好(编程、阅读、写作)常使自己独处且面对屏幕,为照顾幼儿并重拾儿时与父亲一起动手的记忆,开始尝试木工。在学习过程中,作者发现木工带来的成就感与编程惊人地相似。

软件工程与木工的共同点

  1. 制作自己的工具
    软件工程师常构建自用工具以提高效率;木工中也有类似概念——“夹具”(jigs),用于满足特定需求或节省成本。两者都需权衡工具开发的时间价值。

  2. 工具选择与优化
    木工工具种类繁多,每种针对不同场景优化(如切割纹理、速度与精度权衡)。这类似于软件工程师选择技术栈(如AWS存储层),需理解工具特性并根据实际需求决策。

  3. 有限的非货币化预算
    木工面临物理空间限制(如车库大小),需谨慎选择工具;软件工程则受限于硬件资源、网络带宽、人力时间等。两者都需在有限资源下优化配置。

  4. 设计先行,再动手实施
    在木工和软件开发中,预先设计草图或架构能避免后续返工,明确各部分交互关系,节省时间。

  5. 等待过程
    木工需等待胶水干燥,软件工程则需等待编译、测试或部署。这种等待可同时进行多任务处理。

  6. 拥有用户
    作者的家人会提出定制木工作品的需求,类似软件开发中的用户反馈。用户需求能激发动力,并合理化工具投资。

核心区别

木工允许亲手触摸和持有成品,而软件产品的体验更抽象。

结论

作者认为,木工与软件工程提供了相似的快速反馈、用户互动及创作满足感,且避免了部分软件工程的繁琐之处(如值班)。尽管作者不会放弃编程,但木工回答了他“若生于计算机时代之前会做什么”的问题——答案是“找东西建造”。文章最后推广了作者的 newsletter 和 Twitter,分享跨行业学习经验以提升软件工程能力。


关键要点:软件工程师喜欢木工,主要因为两者在工具制作、资源管理、设计流程和用户反馈等方面存在本质相似性,且木工提供了更 tangible 的创造体验。

14. It Can Be Done (2003) (multicians.org)

文章总结:《It Can Be Done (2003)》

背景与任务

文章讲述了作者与已故的André Bensoussan在霍尼韦尔公司共同参与Multics操作系统开发的经历。他们当时正在对文件系统进行一项重大修改,需要开发一个名为“VTOC管理器”的子系统。该管理器的功能相当于一个小型虚拟内存管理器,负责在磁盘与内存之间传输文件信息、管理共享内存缓冲池以及磁盘空间的分配。

André的工作方式

André承担了该管理器的设计、实现和测试的全部工作。他的工作流程独具特色:

  1. 设计阶段:他长时间坐在办公桌前绘制图表,追求图表的美观、对称,并力求准确捕捉所有状态信息。这一过程持续了相当长的时间。
  2. 编码阶段:他没有使用电脑终端,而是用铅笔在纸上手写代码。他拒绝了打字协助的提议,反复修改、誊写和擦写。
  3. 完成阶段:最终,他将一份清晰、完整的铅笔稿带到终端前,将整个程序一次性输入电脑。

最终结果

  • 首次编译:第一次编译时仅出现了三个打字错误,修正后代码便成功编译。
  • 首次运行:将模块绑定到系统后,程序第一次运行就取得了成功
  • 长期表现:该VTOC管理器此后运行得近乎完美。在它的生命周期内,仅被发现过一个错误,而这个错误是由于作者(项目协调员)在回答André关于错误处理过程调用序列的询问时,没有查阅资料而是凭猜测回答所导致的。除此之外,程序没有其他缺陷。

核心启示

文章通过这个真实案例,展示了一种近乎完美的软件开发范例:通过极其审慎和专注的前期设计,辅以脱离工具、高度集中的手工编码,可以一次性交付一个极其健壮和可靠的系统组件。标题“It Can Be Done”(能做到)正点明了这种严谨方法所能达到的卓越成效。

15. The Ultraviolet Myth (www.arxiv.org)

文章主旨

本文旨在纠正量子物理学史中广泛流传的“伪历史”,重点驳斥了“紫外灾难促使普朗克提出量子理论”这一传统神话,还原了量子力学起源的真实历史脉络。

核心谬误:时间线颠倒

传统故事认为“紫外灾难”是普朗克引入量子概念的动机。然而事实是,“紫外灾难”这一概念是在普朗克发表其辐射定律数年之后才首次被提出的,因此它并未对普朗克的研究动机产生任何影响。

真实的研究动机与过程

普朗克真正的目的是为黑体辐射定律寻找理论推导。最初学界认为该定律是维恩辐射定律,但新的实验数据与之不符。为此,普朗克提出了一个能完美拟合新数据的辐射定律。因此,普朗克辐射定律最初纯粹是作为对实验数据的复杂拟合而诞生的。

“能量包”的引入与普朗克的认知

为了从理论上推导这一经验定律,普朗克运用了统计力学方法。他将分配给原子振子的能量划分为大小为 $hf$ 的“能量包”,以此来计算能量分配的组合方式数量。普朗克在当时并未将这种能量划分视为物理意义上的“量子化”,而仅仅将其视作计算振子熵的一种数学技巧。

16. Home Assistant: Three years later (eamonnsullivan.co.uk)

Home Assistant 三年使用回顾

核心吸引力不变

  • 跨平台兼容性:Home Assistant 允许集成不同厂商的设备,避免陷入单一品牌生态(如苹果、亚马逊、谷歌)。
  • 硬件延续:核心仍在同一块 Raspberry Pi 4 上运行,仅做优化调整。
  • 自动化工具:仍主要使用 Node-RED 编写自动化流程(因更熟悉 JavaScript),尽管原生编辑器已改进。
  • 云服务支持:继续使用 Home Assistant Cloud 以安全远程访问,并支持项目发展。

自动化理念转变

  • 从炫酷到无感:早期追求灯光闪烁、语音通知等显眼效果;现追求自动化“隐形”,如灯光在黑暗时自动开启、无人时关闭,加热按作息调节。
  • 更注重实用性:部分自动化(如“晚安”模式)集中控制多个设备(关灯、关暖气、关电视),并通过传感器检测安静后彻底关灯。
  • 减少侵扰性:允许通过物理按钮方便覆盖自动化规则。

设备选择倾向本地化

  • 避免云依赖:早期使用云服务设备常不可靠,现优先选择支持 本地协议(如 Zigbee、本地 WiFi)的设备。
  • 长期可靠性考量:担忧厂商终止服务或关闭云平台,因此逐步替换为本地可控设备(如仍保留旧设备 Ring 门铃,但不再新增)。
  • 对 Matter 标准持谨慎乐观:关注 Matter 标准的发展,但认为大公司可能仍会试图通过云服务锁定用户。

系统可靠性提升

  • 硬件升级:Home Assistant 软件运行在 SSD 硬盘 上(通过 USB 连接),但操作系统仍用 SD 卡(存在损坏风险)。
  • 容器化部署:采用 Docker 容器方式安装,便于管理、回滚和迁移。
  • Zigbee 系统迁移:从 Philips Hue 集成转向通用 Zigbee 系统(使用 SkyConnect 适配器),以支持更多设备类型(如温控器)。
    • 解决方案:使用带屏蔽的长 USB 延长线远离干扰源,并调整 Zigbee 信道、添加网络扩展器。

面临的挑战与不满

  • 调试困难:日志晦涩,开源社区和厂商技术支持有限,常需自行搜索 GitHub 问题。
  • 缺乏测试环境:难以进行自动化测试,大改动后常需手动排查错误。
  • 硬件质量不稳定:设备故障频发(如灯带、传感器),维护耗时。
  • 避免过度改动:每次大调整(如 Zigbee 信道切换)都可能导致不稳定,因此对修改更谨慎。

反思与展望

  • 后悔与调整:若重来,会更多采用智能开关/插座而非灯泡/插头,并更早坚持本地化设备。
  • 总体积极评价:尽管有挫折,但 Home Assistant 的灵活性和丰富集成使其能克服问题,且持续提供新功能。
  • 未来计划:期待继续探索,并可能尝试 Matter 等新标准。
17. Systemd by Example (2021) (seb.jambor.dev)

Systemd by Example (2021) 文章摘要

背景与目标

作者希望通过创建最小化的容器示例来理解Systemd,以解决面对真实系统中300多个活跃单元和复杂文档时的困惑。他利用在容器中运行Systemd的方法,创建了一个安全的实验环境,允许快速迭代和试错,而无需影响宿主系统。

核心概念:单元类型

Systemd的基本构建块是单元,文中主要探讨了三种:

  • 目标:根据系统状态激活的单元,本身无实际功能,依赖其他单元生效。例如 default.target(系统启动时激活)。
  • 服务:受Systemd管理的进程。通过作为目标的依赖,在目标激活时执行。
  • 套接字:独立于服务的第一类概念,可实现套接字与服务的解耦。

实验过程与关键步骤

  1. 创建最小化容器环境

    • 基于Ubuntu镜像安装Systemd,并删除所有原有单元文件/lib/systemd/system/*/etc/systemd/system/*),从零开始。
    • 使用Podman运行容器,因其内置对Systemd的支持。
  2. 实现系统启动

    • 容器首次运行失败,因缺少 default.target
    • 创建最简单的 default.target 文件(仅包含 [Unit] 和描述),添加到镜像后,容器成功启动。
  3. 实现系统停止

    • 停止容器时出错,因缺少 halt.target
    • 创建 halt.target,但停止过程仍缓慢。解决方案是:
      • 创建一个执行 systemctl --force halt 命令的 halt.service
      • halt.service 作为 halt.target 的依赖。
      • halt.service 中设置 DefaultDependencies=no 以避免引入未定义的默认依赖(如 sysinit.target)。
  4. 集成日志系统

    • Systemd默认将服务的输出连接到日志系统,但初始设置缺少日志套接字。
    • 为此创建了:
      • systemd-journald.socket:定义日志套接字(流套接字和数据报套接字)。
      • systemd-journald.service:运行日志服务 systemd-journald,并关联上述套接字。
      • 将日志服务设为 default.target 的依赖。
    • 完成后,服务输出可通过 journalctl 查询,且关闭容器时无警告。
  5. 为未来扩展做准备

    • 添加了 sysinit.target。尽管在最小系统中无需操作,但它通常是其他服务的默认依赖,为其预留可方便后续添加更多服务。
    • sysinit.target 设为 default.target 的依赖。

最终成果

作者创建了六个单元文件,总行数少于30行,构成了一个可基本运行的Systemd环境:

  • default.target:启动目标,依赖日志服务和 sysinit.target
  • systemd-journald.servicesystemd-journald.socket:提供日志功能。
  • sysinit.target:空目标,用于未来兼容性。
  • halt.targethalt.service:实现系统关闭功能。

结论与后续方向

通过此最小化示例,作者展示了Systemd的基本工作原理和单元间的依赖关系。虽然该设置远不适用于生产环境,但作为理解概念的起点非常有效。 未来可探索的方向包括:

  • 使用 systemctl 工具检查此最小系统中更多的内置单元及其依赖关系。
  • 在此基础架构上添加更多单元,以研究Systemd的其他方面。
18. Orbit: C/C++ Performance Profiler (github.com)

Orbit: C/C++ 性能分析器

Orbit 是一款独立的原生应用程序性能分析器,适用于 Windows 和 Linux,支持 C、C++、Rust 或 Go 等语言编写的原生应用程序。其主要目的是帮助开发者识别复杂应用程序的性能瓶颈,并可用于可视化执行流程。

核心特性与优势

  • 无需修改目标进程:无需更改任何代码、重新编译或重启应用程序,实现零集成时间和零迭代时间。
  • 混合分析技术:结合采样动态插桩,优化分析工作流。采样可快速识别目标函数,动态插桩则提供精确的函数进出信息,并以线程为单位呈现层次化调用图。
  • 丰富功能集
    • 动态插桩(无需代码变更)
    • 调用栈采样
    • Wine/Proton 混合调用栈分析
    • 线程调度与依赖追踪
    • 内存追踪
    • GPU 驱动追踪点(仅限 AMD)
    • Vulkan 调试标签与命令缓冲区追踪(仅限 AMD)
    • 手动插桩(可在源代码中添加标记并进行值追踪)
    • 源代码与反汇编视图
    • 远程分析
    • 调试符号解析(ELF、DWARF、PE、PDB)
    • 捕获数据的完整序列化

基本工作流程

  1. 在连接设置对话框中选择一个正在运行的进程,点击“开始会话”。
  2. Orbit 尝试自动检索已加载模块的调试信息。成功加载的模块符号将填充“函数”选项卡。
  3. 在“函数”选项卡中,右键点击选择要动态插桩的函数并选择“Hook”。
  4. F5 开始/停止分析。使用 W/SCtrl+滚轮 进行时间轴缩放。
  5. 可在每个线程的采样事件轨道上选择片段以获取采样报告。
  6. 分析完成后可保存“预设”,以便下次快速加载相同的插桩函数配置。

重要说明

  • 平台支持重心转移:项目重心已转向 Linux 版本Windows 本地分析仅部分支持,主要功能(如动态插桩)尚未实现。但可以通过 Windows 界面实例分析 Linux 可执行文件。用于 Windows 本地分析的旧版二进制文件已被弃用且基本无文档。
  • 构建信息:详细的构建说明、编译器、平台和工具支持,请参考其开发文档。
  • 反馈与支持:项目现已不再由 Google 工程师维护。用户反馈可通过开启 Issue 进行。

许可证

采用 BSD 2-Clause 许可证。版权所有 (c) 2020 The Orbit Authors。

19. Bitwise Liminal – A Short Film in 256 Bytes of Code (killedbyapixel.github.io)

Bitwise Liminal – 一部256字节代码制作的短片

  • 程序员:KilledByAPixel
  • 展示活动:Lovebyte Party 2024
  • 形式:通过256字节代码实现的短片

故事概要

叙述者在旧货摊发现一个旧的VHS录像带,标签为“Bitwise Liminal”。观看时仅显示静态图像。之后,叙述者开始经历生动且不安的梦境,并不断思考该录像带。通过研究,得知它是数字备份,使用特殊软件恢复数据后,惊讶地发现它是一个256字节的程序。用颤抖的手在浏览器中打开该程序,发现它唤起了梦境中的回忆,导致叙述者不再需要睡眠,只是持续观看。

21. Piezoelectrics enable displays to provide both audio and touch feedback (spectrum.ieee.org)

移动设备音频与触觉反馈的革新:压电技术使显示屏成为声源与触觉源

当前移动设备的扬声器和触觉反馈发生器面临多个问题。首先,传统扬声器和线性谐振致动器虽小,但仍限制了设备的薄型化,且机械结构脆弱,易在跌落时损坏。此外,它们需要外壳开口,可能导致湿气或灰尘侵入。其次,声音感知上存在不协调:扬声器通常位于设备侧面或背面,声音与屏幕上图像的来源不匹配,影响沉浸感。

解决方案:压电换能器驱动显示屏 压电换能器技术可一次性解决上述问题。它是一种薄型装置,能将显示屏本身转化为声源和触觉反馈源。压电材料(如石英或陶瓷)在施加电压时会弯曲(逆压电效应),通过交流电产生振动,既可生成低频触觉反馈,也可产生高频声音。这种技术并非全新——历史上曾用于将墙面或面板变为扬声器,近期高端电视也采用类似原理,但传统方案成本高、功耗大且需高压放大器,难以适配移动设备。

压电技术的优势与实现 压电换能器直接粘附在显示屏背面,无需外部开口,提升了防尘防水能力。其核心优势包括:

  1. 设备更薄:材料仅需约1毫米厚度,远薄于传统扬声器。
  2. 沉浸式音频:声音从屏幕正面发出,与图像位置匹配,无需依赖心理声学算法进行声源模拟,减少处理器功耗。
  3. 集成触觉反馈:同一换能器可同时提供声音和振动反馈,取代独立触觉发生器。
  4. 双向传感:压电效应可逆,换能器还能感知触摸压力,为交互界面提供压感输入,并可能通过环境振动收集能量,延长电池续航。

技术挑战与进展 在移动设备中实现高质量压电音频面临挑战:需高效低压高压转换的放大器、低噪声设计,以及针对显示屏特性的信号预处理。Synaptics等公司已开发出集成数字信号处理器和高压升压放大器的芯片,可驱动陶瓷压电换能器。单组换能器足以替代手机听筒功能,双组则可同时支持免提扬声器。该芯片预计于2024年底应用于智能手机、可穿戴设备和笔记本电脑。

总结 压电技术通过将显示屏转化为音频与触觉发生器,解决了传统组件的空间占用、耐用性及声画不匹配问题。它使设备更薄、更坚固、音质更沉浸,并有望实现压感交互和能量收集,代表了移动设备反馈系统的未来方向。

22. Zigbee and Z-Wave are the best part of my smart home (arstechnica.com)

作者在过去五年中,配置了数十款智能家居设备,积累了丰富的实战经验。他最初对Wi-Fi和蓝牙等信号类型较为推崇,但随着新一代智能家居标准Matter与Thread推出后,发现二者在实际部署中存在诸多混乱和问题。反观传统的Zigbee和Z-Wave技术,作者认识到其在智能家居中的重要价值,并逐渐成为这两种技术的拥趸。

以Philips Hue和Ikea为例,二者巧妙地集成了Zigbee,并提供了极其可靠的体验。只要Hue桥有电和联网、灯泡相距合理,便可持续稳定运行;相比之下,Wi-Fi和蓝牙设备常因信号掉线、网络中断等繁琐问题导致设备重置,而Zigbee却鲜有类似困扰。即使遇到需求更换协议,Hue灯泡也可以恢复为纯Zigbee运行(虽会失去部分高级功能)。

在实际操作中,作者发现Zigbee和Z-Wave设置方法与Wi-Fi等不同。它们通过网状网络实现“自愈”:设备之间可以自动调整路由,只需确保主控网关及部分主设备持续供电,整个网络便能协同工作,即使家中有其他信号干扰,也大多能自动适应。实际案例中,作者利用Z-Wave门磁和Zigbee灯泡,实现开门自动点亮灯光的无感延迟自动化,并通过经济实用的Ikea插座扩展Zigbee信号覆盖。

两者各具优势:Z-Wave工作频段较低(800-900MHz),避开了Wi-Fi、Zigbee和蓝牙的2.4GHz干扰区,未来兼容新标准如Matter潜力更大;Zigbee则更为廉价、设备丰富,但不同厂商的“profile”可能存在兼容问题。Z-Wave需支付授权费,设备相对昂贵,但标准固定,兼容性较好。

设备接入流程一般是按键或插针重置,然后由网关“采访”新设备,偶尔会遇到设备移除的难题,但比Wi-Fi复杂的配网流程(需切换频段、手机与路由器繁琐操作)更为简洁直观。

当前市面上有大量支持Zigbee和Z-Wave的主控设备,如Amazon Echo系列(内置Zigbee、Thread、Matter、蓝牙)、Samsung SmartThings Station(支持Zigbee、Z-Wave),以及Homey Pro、Hubitat、Home Assistant等,甚至有性价比较高的Sonoff Zigbee网关,用户可根据需求灵活选择。作者通过Ikea Trådfri遥控器、门窗传感器、动作检测器、水浸传感器等,搭建了远超Wi-Fi和蓝牙的稳定自动化系统,设备小巧、经济、可靠,网络状态可直观查看,维护简易。

电池消耗方面,虽然Zigbee和Z-Wave设备多为纽扣电池,有成熟的回收链,替换简单,但仍建议“少买即多环保”。网络的独立性高,升级路由器不会影响其运作,可靠性持续。

作者总结,尽管Matter和Thread等新标准还需时间成熟,实际上Zigbee和Z-Wave已经实现他期望的本地控制、互操作性、无需手机就能运行的智能家居体验,这些“传统”技术仍在现代智能家居中发挥着不可替代的作用。

23. 100% User-Supported (stephango.com)

Obsidian:100% 用户支持的原理

核心立场
Obsidian 完全由用户支持,不依赖风险投资(VC)资金,以保持小团队规模、遵循严格原则,并依靠用户自愿支持。

不选择 VC 的原因

  • 团队与原则:Obsidian 追求保持小团队,避免大规模招聘,并坚守不愿妥协的核心原则。
  • 用户支持:现有用户已提供足够支持,无需外部 VC 注资。
  • 长期可持续性:Obsidian 应用本身可能不会永存,但用户在其中创建的文件属于用户个人,可世代保存;而 VC 支持的软件(VCware)通常基于短期五年规划,缺乏长期设计。

VCware 的弊端

  • 短期行为:VC 资金常因不耐烦和硅谷惯性驱动,导致产品追求快速增长而非持久价值。
  • 用户锁定:VCware 通过低价或免费策略吸引用户,但往往以囤积用户数据、限制迁移为代价,形成用户锁定。
  • 愿景膨胀:为持续融资,VCware 必须描绘日益宏大的愿景,导致优先级混乱、产品功能冗余,最终恶化用户体验。
  • 退出压力:VC 投资需通过被收购或上市退出,约90%的初创公司会失败,剩余成功的项目需弥补损失,这迫使 VCware 面临“做大或破产”的不可逆压力。

原则性软件的兴起

  • 小团队潜力:现代技术使小团队能制造原则性软件,服务数百万用户,而不受投资者束缚。
  • 用户控制:此类软件尊重用户数据所有权、隐私和福祉,原则可嵌入应用架构中,确保不可撤销性。
  • 行业趋势:这一浪潮刚刚开始,表明有原则和耐心的开发者能通过用户支持实现可持续发展。

结论
Obsidian 认为,在拥有原则和足够耐心的情况下,100% 用户支持是构建软件最有趣的方式,能避免 VC 的妥协,专注于长期价值。

24. The Empire Strikes Back First Draft by Leigh Brackett (1978) [pdf] (starwarz.com)
25. My Visit to Deep Springs College (2009) (www.harrisonbarnes.com)

文章《我的深泉学院之行(2009年)》摘要

本文作者回忆了2009年前后决定移居拉斯维加斯的经历,并由此引出了自己更早(约1980年代末)对深泉学院的一次难忘访问。这次访问的经历与他对这所神秘学府的想象形成了巨大反差,并由此得出了一条关于信任与表象的人生教训。

深泉学院的基本特点:

  • 位于加州沙漠深处,与世隔绝,远离最近的医院和城镇。
  • 是一所两年制男子文理学院,学生约26人,学费全免。
  • 教育理念基于“学术、劳动和自我治理”三大支柱,学生需在牧场进行体力劳动并参与管理学校事务。
  • 学生转学去向极佳,多为哈佛、耶鲁、斯坦福等顶尖学府。
  • 录取门槛极高,传闻拥有全美最高的SAT分数。

作者的访问经历:

  1. 申请与启程:作者提交了长达50多页的申请文书,其中一篇关于用潜意识音乐改造罪犯的“古怪”论文备受招生委员会赞赏。他从底特律飞往拉斯维加斯,再经长途巴士和一段沙漠中的“飙车”之旅,于凌晨抵达。
  2. 学院生活与劳动测试:到达后,学生宿舍环境简陋。次日清晨,他被要求参与劳动——在路边挖沟,这被暗示为录取测试的一部分。劳动艰苦,导致手部起泡。
  3. 文化冲击与自我治理:作者观察到学生们外表不修边幅,像“感恩而死”乐队的追随者。他们就日常琐事(如是否允许同学外出探访女友)进行冗长、激烈的辩论,这种高度的集体监督和微管理让作者感到窒息。
  4. 严苛的面试:所有25名学生组成委员会,对作者进行了长达四小时的面试。他们尖锐地质疑其论文中的观点和引用(例如,质疑他未读过荣格的著作却引用其理论),让作者感到羞辱且格格不入。面试结束时,一名学生带有讽刺意味地询问他是否喜欢这里的“食物”。
  5. 惊人的真相:在离开时,负责接送的司机史蒂夫带作者去了附近唯一的“文明”标志——一家妓院“棉尾兔牧场”。妓院老板娘揭露:深泉学院校长曾致信指责该学院多名学生(据史蒂夫称有12-13人)从妓院感染了性病。史蒂夫本人也与妓院女子熟识,并试图为自己与其他男性学生光顾妓院的行为进行道德辩护。这彻底颠覆了学院宣扬的道德与自律形象。

访问的后续与核心教训:

  • 学院从未寄出录取或拒信。
  • 这次经历对作者影响深远。它让他认识到自己在学术上与那类学生的差距,但也激励他在大学和法学院中更加努力,并培养出不畏权威、敢于辩护的自信。
  • 最重要的是,这次访问给了作者一个核心教训:不要被外表或声誉所吓倒或蒙蔽。 无论是个人、机构还是社会榜样(文中以比尔·克林顿、杰西·杰克逊等为例),其光鲜的表象与内在本质之间往往存在巨大鸿沟。在信任任何人或机构之前,都应保持审慎的怀疑。生活如同拉斯维加斯,繁华表象之下,可能藏着不为人知的另一面。

结论: 作者通过这次对深泉学院的尴尬访问,得出了关于生活的重要结论:外表具有欺骗性,任何人都不应被轻易吓倒。真正的自信源于认识到无人完美,所有人都有秘密,并勇敢地去追求自己想要的生活。

26. Cross My Heart – A Frogger Demake in 256 Bytes of HTML/JS (killedbyapixel.github.io)

游戏摘要:Cross My Heart – Frogger Demake in 256 Bytes

游戏概述:Cross My Heart 是一个基于经典游戏 Frogger 的简化版(demake),使用 HTML 和 JavaScript 实现,代码仅 256 字节。由开发者 KilledByAPixel 于 2024 年创建。

核心玩法

  • 角色控制:玩家控制一个心形角色,从屏幕底部开始移动。
  • 操作方式:仅使用方向键(上、下、左、右)进行移动,不能按其他键。
  • 游戏目标:将角色移动到屏幕顶部,以进入下一关。每通过一关,游戏难度增加,车辆速度变快。
  • 失败机制:如果角色被车辆撞到,将返回屏幕底部,需要重新尝试。
  • 界面显示:当前关卡数显示在屏幕左上角。
  • 操作限制:角色不能移出屏幕的左侧或右侧边界。
  • 游戏挑战:测试玩家能通过多少关卡,尽可能走得更远。

关键特性

  • 轻量级实现,代码极简(256 字节)。
  • 基于经典 Frogger 玩法,但简化了图形和机制。
  • 难度渐进,适合快速挑战。
27. Notes on my Remarkable tablet (tomcritchlow.com)

这篇个人笔记详细描述了作者对Remarkable 2平板电脑的使用体验、核心用途、创新应用以及对未来的功能设想。

核心用途:阅读、写作与计算

作者将设备主要用于日常的“三R”工作:

  • 写作与思考:替代传统笔记本,用于记录笔记、捕捉想法、撰写待办事项,以及进行涂鸦、绘图和构建复杂构思(设备支持缩放、擦除和画直线等功能)。
  • 阅读与批注:极其适合阅读PDF文档,特别是学术论文和长达50多页的商业报告数据包。作者表示,拥有该设备后阅读的学术论文数量显著增加。
  • 趣味与教育:用于辅导女儿完成数学作业,以及和孩子们玩“绘画大战”等游戏。

创新与个性化应用

作者展示了设备的灵活性:

  • 项目管理:利用Figma创建的自定义PDF作为基础层,构建了一个用于追踪其书籍写作项目编辑进度的项目跟踪器。
  • 专业模板:尝试了如Wardley Maps和Zenko Maps等在绘图设备上表现良好的战略规划模板。
  • 未来构想:考虑在设备上加载乐谱,甚至想制作一个钢琴键盘模板来辅助学习。

功能改进建议

作者提出了几个增强设备能力的想法:

  1. 第二屏模式:希望设备能作为笔记本电脑的副屏,实时显示日历等动态数据,并支持直接在上面做笔记批注。
  2. 日记/日志系统:期待一个以日期为基础的正式日记或每日笔记系统(类似Obsidian的Daily Notes),方便按时间线回顾。
  3. 快速发送功能:在现有发送整页内容的基础上,增加一个能快速通过电子邮件发送单个图表或草图的功能。

作者的反思与总结

作者意识到建议可能脱离公司的实际战略(如可能开发新硬件、拓展企业市场、集成电子书平台或专注国际市场)。他认为Remarkable设备软件封闭(不运行原生Android)是一把双刃剑:既带来了完全的控制权,也使得集成电子书、网页浏览、日历同步等功能变得更加困难。最后,他邀请其他用户分享各自的工作流和设置,以进行交流。

28. 28-ton, 1.2-megawatt tidal kite is now exporting power to the grid (newatlas.com)

28吨、1.2兆瓦潮汐风筝现已向电网供电

设备概述

Minesto公司的Dragon 12是一种潮汐能发电设备,设计为水下风筝,利用潮汐流产生的升力飞行,通过比水流更快的速度捕获可再生能源。它重达28吨,翼展12米,可产生1.2兆瓦电力,需拆解后才能装入集装箱。

技术原理

基于Minesto的Deep Green技术,Dragon 12在潮汐流中飞行数字8图案,加速自身以比传统涡轮机更高效地提取能量。这种方法使较慢的潮汐流也能被利用,扩大了适用范围。与固定式设备如Orbital的O2潮汐涡轮机不同,Dragon 12锚定在海床上,动态飞行,将潮汐流视作风能。

安装与优势

相比海上风力涡轮机,Dragon 12体积小、重量轻,仅需一艘小型船只和海底系泊即可安装,过程简便快捷。其设计优化了能源捕获,尤其适用于潮汐流加速的狭窄水道。

经济性评估

平准化能源成本(LCoE)是关键指标。Minesto预计,在首个100兆瓦容量安装后,LCoE约为108美元/兆瓦时,随着规模扩大可能降至54美元/兆瓦时。相比之下,Orbital的O2预计LCoE低于253美元/兆瓦时,而2022年固定底座海上风电项目的平均LCoE约为89美元/兆瓦时。

部署与里程碑

首个Dragon 12部署在丹麦法罗群岛,该地区狭窄的通道加速潮汐流,提供理想发电条件。设备已成功连接当地电网,开始供电,标志着Minesto公司的重大里程碑。首席执行官Martin Edlund强调,Dragon 12强大且成本效益高,能提供可预测的电力,为公司未来发展奠定基础。

29. FOSDEM 2024: my experience, some notes and tech tips (ounapuu.ee)

FOSDEM 2024 参会体验与要点总结

会议概况

FOSDEM(自由开源软件开发者欧洲会议)是在比利时布鲁塞尔自由大学校园举办的大型非营利、志愿者组织的会议,免费参加,依靠赞助和捐赠支持。作者通过雇主的支持参加了2024年的会议。

城市与参会体验

  • 城市印象:布鲁塞尔的垃圾处理方式(街上有很多垃圾袋)和公共卫生间不足受到吐槽,自行车基础设施评价一般,驾驶环境被认为较具挑战性。
  • 啤酒提醒:比利时啤酒酒精度高(8-9%),口感不易察觉但后劲足,需谨慎。
  • 实用建议
    • 提前规划行程,阅读FOSDEM生存指南。
    • 使用有轨电车等公共交通,跟随人群即可找到会场。
    • 提前到达以确保进入主会场或热门分会场。
    • 使用官方FOSDEM Companion应用导航和规划日程,注意不同场馆间移动可能需要15分钟。
    • 建议每天只参加2-3个主题演讲,留出时间参观展台、休息和进食,因为演讲通常会录制。
    • 演讲期间保持安静,尊重讲者和其他观众。
    • 购买纪念品(如T恤、帽衫)最好在第一天上午前往。
    • 支付方式以电子支付为主,但建议携带100-200欧元现金备用。
    • 注意预防“FOSDEM流感”,生病应休息或观看线上直播。

展台(“走廊议程”)亮点

会议在校园内设有众多项目展台,涵盖从成熟项目到小型组织。以下是一些有趣的发现:

  • GNU Radio:演示了2.4GHz频谱可视化,展示了其强大的信号处理能力。
  • Minetest:一个开源游戏引擎,已发展成熟,有丰富的游戏库和教育应用案例。
  • 移动操作系统
    • Ubuntu Touch:展示了其“融合”理念和在多种设备(包括Fairphone)上的运行。
    • SailfishOS:体验流畅,是少数非Android的可日常使用的系统之一,支持付费运行Android应用。
    • Droidian/postmarketOS:旨在让旧Android设备运行Linux系统,虽未完全成熟但为旧设备注入新生命。
    • CalyxOS:一个注重隐私的Android系统,由非营利组织支持。
  • Automotive Grade Linux:展示了用于汽车信息娱乐和仪表盘的Linux系统,采用容器化设计,可运行不同UI框架。
  • Pine64:展示了其开源硬件生态,包括:
    • PineTime智能手表:基础功能齐全,硬件质感好。
    • PineTab-V(RISC-V平板)和PineNote(电子墨水平板):均运行Linux桌面系统,处于实验阶段。
  • 其他有趣的展台
    • KDE:出售手工制作的Konqi毛绒玩具。
    • PostgreSQL:提供知识竞赛游戏和可爱的毛绒大象。
    • Mozilla:通过粉色餐车分发饼干,宣传Firefox浏览器。
    • ISRG/Let’s Encrypt:分发免费证书,延续其免费精神。
    • FOSSASIA:销售可通过App编程的LED徽章。
    • Jenkins:展示了由树莓派组成的圆形“Roundernetes”Kubernetes集群。
  • 附属活动:参加了在黑客空间举办的Bytenight派对,氛围轻松,有机会体验各种设备和了解新项目(如自托管的Snapchat替代品Piqchat)。

演讲精选与笔记

作者参加了多个演讲,并给出个人评分(1-10分)。以下是部分内容摘要:

现场参加的演讲

  • curl的现代用法(10/10):快速介绍了curl的多种高级功能(如并行传输、JSON处理)及配套工具trurl
  • 改进Linux的IPv6体验(8/10):概述了IPv6现状、操作系统支持差异,并寻求社区帮助解决IPv4/IPv6共存问题。
  • Linux内核升级工程指南(9/10):用数据和图表说明及时升级内核的重要性,强调“频繁更新、频繁部署、持续测量”的原则,适用于软件开发。
  • 软重启:在更新镜像化Linux主机时保持容器运行(9/10):介绍了一种在重启主机更新系统时保持特定容器不中断的技术(使用systemd)。
  • 用Ansible进行无根容器部署(10/10):分享了处理容器与主机间UID/GID权限问题的实用技巧,与自托管场景高度相关。
  • 超越连接和索引(PostgreSQL)(9/10):深入讲解了PostgreSQL查询背后的内部操作,配有图解,虽有一定难度但内容宝贵。
  • SQL数据库中的隔离级别与MVCC(8/10):探讨了事务、读写控制机制,并对多版本并发控制(MVCC)进行了技术比较。
  • Linux负载平均值及其他愚蠢指标(7/10):指出Linux负载平均值可能具有误导性,建议关注压力停顿信息(PSI)。
  • 私有云并非遗留!(7/10):提供了构建私有云的高层建议,如避免供应商锁定、优先自建、保持简单、完全自动化基础设施等。
  • Firefox功耗分析:网络可持续性的有力可视化(10/10):介绍了如何测量网页加载的能耗,旨在推动构建更可持续的网络。
  • Postgres vs. Linux文件系统(9/10):通过基准测试比较了不同文件系统(如ext4, XFS, btrfs, ZFS)下PostgreSQL的性能表现。

事后观看的演讲(部分)

  • 你也能做出curl!(10/10):curl作者Daniel Stenberg的励志分享,讲述了curl的发展历程和成为开源项目维护者的经验。
  • 开源与可持续、长久的手机(10/10):详细介绍了Fairphone的理念、在软硬件长寿方面遇到的挑战与实践。
  • 开源在2024:边界、倦怠、商业(10/10):聚焦开源领域的人文面,讨论了设定边界、避免倦怠等重要议题。
  • 用Firefox Profiler对我的整个房子进行功耗分析(10/10):作者使用Firefox Profiler可视化全家能耗数据的有趣实践。
  • 你以为你懂Git?(10/10):介绍了许多不为人知但实用的Git高级功能和技巧。
  • 魔法与软件(10/10):一场融合魔术与软件开发的精彩演讲,推荐观看。

结语

作者对FOSDEM 2024的体验给予了高度评价,认为它超出了预期,内容优质,氛围友好,让人有归属感。期待未来能更多参与社区活动。