2025 01 12 HackerNews

2025-01-12 Hacker News Top Stories #

  1. Meta 正在终止其主要的多元化、公平和包容性(DEI)项目,包括招聘、培训和供应商选择等方面。
  2. Cuttle 是一款两人玩的卡牌游戏,使用一副标准的 52 张牌,目标是成为第一个累积 21 分或以上的玩家。
  3. 这篇文章讨论了一个名为“Makefile 效应”的现象,指出人们往往会复制和修改之前的配置文件,而不是从头开始编写新的配置文件。
  4. 星链(Starlink)是由埃隆·马斯克(Elon Musk)的太空探索技术公司(SpaceX)于 2019 年推出的卫星互联网服务,已经成为世界领先的卫星互联网服务提供商。
  5. Go Haystack 是一个开源项目,允许用户通过 Apple 的 “Find My” 网络来追踪个人蓝牙设备。
  6. dockview 是一个零依赖的布局管理器,支持 tabs、groups、grids 和 splitviews,支持 React、Vue 和 Vanilla TypeScript。
  7. Quake 游戏引擎的可见性系统是一种用于优化渲染性能的技术,通过将世界分割成细胞和门户来减少渲染对象的数量。
  8. Unsloth 团队最近发布了一篇文章,介绍了他们对 Microsoft 新推出的 14B 模型 Phi-4 进行的优化和 bug 修复。
  9. 这篇文章的作者是 Charles Petzold,他在自己的博客上发表了一篇题为《Very Wrong Math》的文章,批评发布这条帖子的公司。
  10. 这篇文章主要讲述了作者创建的一个名为 “Bauble” 的工具,Bauble 是一个用于生成 3D 图形的工具

Meta’s memo to employees rolling back DEI programs #

https://www.axios.com/2025/01/10/meta-dei-memo-employees-programs

Meta 正在终止其主要的多元化、公平和包容性(DEI)项目,包括招聘、培训和供应商选择等方面。据 Axios 获得的员工备忘录显示,这些变化是为了应对美国最高法院近期的判决以及特朗普政府即将上任的政策变化。

备忘录中指出,Meta 将不再使用多元化招聘方法,取消女性和少数民族的代表性目标,并终止供应商多元化项目。取而代之,公司将重点于建立公平和一致的招聘和培训实践,确保所有员工都有平等的机会。

Meta 表示,这些变化是为了确保公司的产品和服务能够为所有人服务,而不是仅仅关注特定的群体。公司还强调,其多元化和包容性努力将继续,但将以不同的方式进行。

这些变化是 Meta 在特朗普政府即将上任之际对其多元化和包容性政策进行调整的最新迹象。特朗普政府对多元化和包容性项目持批评态度,认为这些项目会导致反白人和反男性偏见。


HN 热度 1086 points | 评论 1590 comments | 作者:bsilvereagle | 1 day ago #

https://news.ycombinator.com/item?id=42657901

  • DEI 计划只是为了营造一种表面的多样性和包容性,实际上并没有带来真正的改变
  • 政治正确的言论和行为并不能真正解决问题,只是为了博取政治资本
  • 持久的改变需要花费数代人的时间和努力,不能指望在短时间内就能实现
  • 美国社会仍然在为 160 年前的种族问题付出代价,进步是缓慢而痛苦的
  • 政府和机构的种族政策和行为对个人和社区产生了长期的影响
  • 讨论和承认历史错误是解决问题的第一步
  • 经济不平等是种族问题的结果之一,但解决经济不平等需要更多的努力和资源
  • 个人的经济状况是由多种因素决定的,包括历史、政策和个人选择
  • 解决种族问题需要真正的行动和改变,而不仅仅是口头上的承诺

Cuttle – a MTG like game using a standard 52 card deck #

https://www.pagat.com/combat/cuttle.html

Cuttle 是一款两人玩的卡牌游戏,起源于 20 世纪 70 年代的北美。游戏使用一副标准的 52 张牌,目标是成为第一个累积 21 分或以上的玩家。游戏分为三种类型的牌:点数牌、一次性效果牌和永久效果牌。

点数牌可以作为点数牌或作为“scuttle”牌使用,后者可以移除对手的点数牌。一次性效果牌可以立即使用,然后丢弃到废牌堆。永久效果牌可以放置在桌子上,持续产生效果,直到被移除。

游戏开始时,玩家各自抽取六张牌,剩下的牌放置在桌子上作为抽牌堆。玩家轮流抽牌、打出牌或使用牌的效果。游戏结束时,累积 21 分或以上的玩家获胜。

游戏中有多种牌的效果,包括:

  • 点数牌:1-10 分
  • 一次性效果牌:
    • A:清除桌子上的所有点数牌
    • 2:清除对手的永久效果牌或阻止对手的一次性效果牌
    • 3:从废牌堆中抽取一张牌
    • 4:对手丢弃两张牌
    • 5:抽取两张牌
    • 6:清除桌子上的所有永久效果牌
    • 7:抽取一张牌并立即使用
    • 9:返回对手的永久效果牌
  • 永久效果牌:
    • 8:对手必须公开手牌
    • J:转移对手的点数牌的控制权
    • Q:保护自己的点数牌和永久效果牌免受对手的效果影响
    • K:降低获胜所需的点数

游戏还有一些变体,包括使用四作为特殊牌。


HN 热度 357 points | 评论 91 comments | 作者:7thaccount | 1 day ago #

https://news.ycombinator.com/item?id=42658614

  • Cuttle 是一个使用标准 52 张牌的游戏,类似于 Magic the Gathering,需要克服初期学习曲线,打印一份快速参考指南可以帮助学习规则。
  • Mindbug 是一个类似的游戏,具有快速的游戏节奏和高重播价值,设计者曾与 Richard Garfield 合作。
  • Epic Card Game 是另一个更便宜、更快捷的 MTG 替代品,基础套装仅需 10 美元,包含 120 张独特卡片,适合 4 名玩家,构建卡组或草拟。
  • Dominion 是一个经典的卡牌游戏,拥有众多扩展包。
  • Regicide 是一个合作游戏,具有挑战性和复杂性。
  • Reinforcements 是一个小众生产的游戏,具有复杂的规则和独特的游戏机制。

Be Aware of the Makefile Effect #

https://blog.yossarian.net/2025/01/10/Be-aware-of-the-Makefile-effect

这篇文章讨论了一个名为“Makefile 效应”的现象。作者指出,在使用某些工具或系统时,人们往往会复制和修改之前的配置文件,而不是从头开始编写新的配置文件。这种现象在各种领域都存在,包括软件开发、持续集成和部署等。

作者认为,这种现象的出现是因为工具或系统的设计存在问题。这些工具或系统往往过于复杂,难以从头开始使用,导致用户不得不复制和修改之前的配置文件。这种做法虽然在短期内可以解决问题,但长期来看会导致工具或系统的使用效率降低,并且可能引入安全风险。

作者还指出,Makefile 效应与其他现象如“cargo culting”和“write-only language”有相似之处,但又有所不同。Makefile 效应主要关注的是工具或系统的设计问题,而不是用户的行为问题。

为了避免 Makefile 效应,作者建议在设计工具或系统时考虑以下几点:

  • 是否需要配置文件?
  • 是否需要自定义语法?
  • 是否可以重用熟悉的语法或惯用法?
  • 是否会导致用户复制和修改配置文件?

通过考虑这些问题,设计者可以创建更易于使用和更安全的工具或系统,减少 Makefile 效应的发生。


HN 热度 347 points | 评论 278 comments | 作者:thunderbong | 21 hours ago #

https://news.ycombinator.com/item?id=42663231

  • 复杂系统从简单系统演化而来,设计复杂系统从零开始通常不会成功
  • 新语言和框架通常在 PowerPoint 上看起来很美,但在实际应用中会有很多问题
  • 现代版本控制系统(如 Git)会破坏 Makefile 的时间戳机制,导致不必要的重建
  • Makefile 很难写对,尤其是在处理多个工具和目录时
  • Makefile 应该从简单开始,逐步演化,而不是一开始就设计得很复杂
  • Makefile 可以作为一个基本的构建工具,但在复杂项目中可能需要更强大的工具
  • Makefile 可以用来封装其他构建工具的命令,提供一个统一的接口
  • Git 可以用来管理项目的清洁状态,而不是依赖 Makefile 的 clean 目标
  • Makefile 的 clean 目标可能会删除重要的文件,应该谨慎使用

https://restofworld.org/2025/starlink-cheaper-internet-africa/

星链(Starlink)是由埃隆·马斯克(Elon Musk)的太空探索技术公司(SpaceX)于 2019 年推出的卫星互联网服务。星链已经成为世界领先的卫星互联网服务提供商,目前已在全球 100 多个国家推出。星链不仅可以提供高速互联网连接,还可以在没有固定互联网服务提供商的地区提供互联网服务。

在非洲,星链已经成为许多国家最便宜的互联网服务提供商。在至少五个非洲国家,星链的月度订阅费用低于当地领先的固定互联网服务提供商。星链的价格在不同国家有所不同,从肯尼亚的 10 美元到斯威士兰的 50 美元不等。

星链在肯尼亚的推出已经对当地的互联网服务提供商行业产生了重大影响。星链提供高速互联网连接和广泛的覆盖范围,价格也比当地互联网服务提供商低得多。星链还推出了租赁选项。根据肯尼亚通信管理局的数据,截至 2024 年 6 月,肯尼亚已经有超过 8,000 名用户订阅了星链服务。

星链的成功已经引起了当地互联网服务提供商的关注。肯尼亚最大的互联网服务提供商 Safaricom 已经降低了价格并提高了互联网速度。其他互联网服务提供商也在开发自己的卫星网络。星链的成功也引发了人们对垄断问题的担忧。一些人担心,星链的快速增长可能会导致当地互联网服务提供商的衰落,并使得星链成为互联网服务的唯一提供商。

总的来说,星链已经成为非洲许多国家最便宜的互联网服务提供商,其高速互联网连接和广泛的覆盖范围已经对当地的互联网服务提供商行业产生了重大影响。然而,星链的快速增长也引发了人们对垄断问题的担忧。


HN 热度 248 points | 评论 215 comments | 作者:impish9208 | 1 day ago #

https://news.ycombinator.com/item?id=42657692

  • 星链在一些非洲国家的价格已经低于当地的互联网服务提供商。
  • 在一些太平洋岛国,互联网服务提供商收取高昂的费用,而星链的服务则更便宜、更快捷。
  • 星链的普及可能会对当地的互联网服务提供商产生负面影响,导致他们面临财务困难。
  • 但是,星链的服务也可能带来新的机会和便利,促进当地的数字经济发展。
  • 有人担心星链的服务会受到美国政府的影响和控制,可能会对当地的用户造成不利影响。
  • 星链的服务可能会受到当地政府的监管和限制,例如禁止进口星链设备或限制其使用。
  • 有人认为,星链的服务会让当地的互联网服务提供商无法竞争,导致他们关闭业务,钱会流向美国。
  • 但是,也有人认为,星链的服务会带来更好的互联网体验,促进当地的经济发展和创新。

Track your devices via Apple FindMy network in Go/TinyGo #

https://github.com/hybridgroup/go-haystack

Go Haystack 是一个开源项目,允许用户通过 Apple 的 “Find My” 网络来追踪个人蓝牙设备。它使用 OpenHaystack 和 Macless-Haystack 来帮助用户设置一个自定义的 FindMy 网络,使用 Go/TinyGo 编写的工具。无需 Apple 硬件。

构建自己的信标

该项目提供了使用 TinyGo 和 TinyGo 蓝牙包编写的固件。任何支持 Nordic Semi SoftDevice 的硬件设备都应该可以工作,例如:

  • Adafruit Bluefruit 板
  • BBC Microbit
  • 其他 Nordic Semi SoftDevice 板
  • 使用 NINA-FW 和 ESP32 协处理器的板
  • 使用 CYW43439 协处理器的 RP2040 Pico-W 板

您也可以在任何具有蓝牙硬件的 Linux 系统上运行信标代码,例如 Raspberry Pi 或其他嵌入式系统。信标代码位于 firmware 目录中。

TinyScan

Go Haystack 还包括 TinyScan,一个用于扫描本地设备的硬件扫描仪。TinyScan 可以在具有蓝牙和小型显示屏的多个微控制器板上运行,例如 Adafruit 和 Pimoroni 制作的板。TinyScan 代码位于 tinyscan 目录中。

安装

  1. Apple ID

    您需要有一个启用了 2FA 的 Apple ID。目前仅支持短信/文本消息作为第二因素。

  2. anisette-v3-server

    启动 anisette-v3-server:

    • docker network create mh-network
    • docker run -d --restart always --name anisette -p 6969:6969 --volume anisette-v3_data:/home/Alcoholic/.config/anisette-v3 --network mh-network dadoum/anisette-v3-server
  3. macless-haystack

    启动并设置 Macless Haystack 端点:

    • docker run -it --restart unless-stopped --name macless-haystack -p 6176:6176 --volume mh_data:/app/endpoint/data --network mh-network christld/macless-haystack
    • 您将被要求输入 Apple ID、密码和 2FA。如果您看到“serving at port 6176 over HTTP”,则表示设置正确。
    • 使用 Ctrl+C 退出进程。
    • 重启 macless-haystack 服务器:docker restart macless-haystack
  4. go-haystack

    安装 go-haystack 命令行工具:

    • go install github.com/hybridgroup/go-haystack/cmd/haystack@latest

使用

  1. 扫描本地设备

    • haystack scan

    • 应该返回范围内的本地设备:

      
      

CE:8B:AD:5F:8A:02 -53 ce8bad5f8a0271538ff5afda87498cb067e9a020d6e4167801d55d83 - battery full FE:B0:67:9B:9A:5C -55 feb0679b9a5c55b1141c5cc6c8f65224ae9bc6bc2d998ccf5c56a02d - battery full

2.  **添加新设备**

    *   生成设备密钥:`haystack keys DEVICENAME`
    *   密钥将保存在名为 DEVICENAME.keys 的文件中,Haystack 的配置文件将保存在 DEVICENAME.json 中。将“DEVICENAME”替换为您想要的设备名称。
    *   使用 TinyGo 目标和设备名称为硬件设备烧录固件。例如:`haystack flash DEVICENAME nano-rp2040`
    *   使用 Web UI 将该设备的 JSON 文件上传到运行中的 macless-haystack 实例。

---

### HN 热度 244 points | 评论 67 comments | 作者:deadprogram | 13 hours ago

https://news.ycombinator.com/item?id=42665367

- 希望苹果公司能够开放FindMy网络,让更多的人使用。
- FindMy网络的隐私保护得很好,需要私钥才能解密位置报告。
- 自定义标签不需要苹果设备就可以使用,但会增加网络负担。
- 蓝牙信道探测技术可能会在未来提供更准确的距离估算功能。
- 有些人认为使用旧的苹果设备来使用AirTags是可行的解决方案。
- 三星的SmartTag+已经具备了超宽带精确定位功能和可接受的价格。

---

## Show HN: TypeScript/React/Vue Window Layout Manager (Tabs, Floating, Popouts)

https://github.com/mathuo/dockview

dockview 是一个零依赖的布局管理器,支持 tabs、groups、grids 和 splitviews。它支持 React、Vue 和 Vanilla TypeScript。dockview 的特点包括:

*   序列化和反序列化,支持完整的布局管理
*   支持 split-views、grid-views 和 "dockable" 视图
*   可以自定义主题和样式
*   支持 Tab 和 Group 的 docking 和 Drag n' Drop
*   支持 Popout Windows 和 Floating Groups
*   提供了大量的 API
*   支持 Shadow DOMs
*   高度测试覆盖率
*   文档网站提供了实时示例
*   透明的构建和代码分析
*   安全性得到重视,通过 GitHub Actions 进行验证的发布和构建

dockview 的主要特点是其零依赖性和对多种框架的支持,使其成为一个灵活和强大的布局管理器。

---

### HN 热度 195 points | 评论 47 comments | 作者:mathuo | 10 hours ago

https://news.ycombinator.com/item?id=42666492

- 这个项目非常棒,作者做得非常好,值得学习。
- 作者对 TypeScript 和 React 的支持非常好,代码质量也非常高。
- 这个项目是受 golden layout 启发的,但有自己的创新和改进。
- 作者计划增加对 Angular 的支持。
- 项目的文档非常好,清晰易懂,示例也很丰富。
- 项目的构建过程透明,使用了 npm 的 provenance 特性。
- 有人提到这个项目可以用来构建 AI 应用。
- 有人提到这个项目可以用来替代 golden layout。
- 有人提到这个项目的移动端支持还不完善。
- 有人提到这个项目的 Safari 浏览器支持还不完善。
- 有人提到这个项目的自动截断标签标题功能还不支持。
- 有人提到这个项目的代码质量非常高,值得学习。
- 有人提到这个项目的文档非常好,清晰易懂。
- 有人提到这个项目的构建过程透明,使用了 npm 的 provenance 特性。

---

## Portals and Quake

https://30fps.net/pages/pvs-portals-and-quake/

这个网页是一篇关于计算机图形学和编程的文章,特别是关于 Quake 游戏引擎的可见性系统(PVS)。文章的作者是 Pekka Väänänen。

文章首先介绍了 Quake 游戏引擎的可见性系统的基本概念,包括 frustum culling、occlusion culling 和 portal culling。然后,作者深入讨论了 portal culling 的原理和实现,包括如何将世界分割成细胞和门户,以及如何使用门户来减少渲染对象的数量。

文章还介绍了 Quake 游戏引擎使用的 BSP(二叉空间分割)树来分割世界,并使用叶节点(leaf node)来表示细胞。作者解释了如何使用门户来连接叶节点,并如何计算叶节点之间的可见性。

最后,文章讨论了 Quake 游戏引擎的可见性系统的实现细节,包括如何使用 vis 工具来预计算叶节点之间的可见性,以及如何使用这些可见性信息来优化渲染性能。

总的来说,这篇文章提供了一个详细的介绍 Quake 游戏引擎的可见性系统的原理和实现,包括其基本概念、算法和实现细节。

---

### HN 热度 184 points | 评论 50 comments | 作者:ibobev | 1 day ago

https://news.ycombinator.com/item?id=42661185

- Quake 级别设计师可以使用“hint”刷子来帮助 BSP 编译器确定在哪里创建单元格。
- 从 Quake II 开始,设计师可以放置“区域门户”,这些门户是程序员可以在运行时切换的门户(例如,当门关闭时禁用门户)。
- Doom 地图制作需要更高级的工具,如隧道套件,只需连接管道和管件即可,或生成迷宫。
- 当时的 Unreal Engine 是“实体默认,挖出空间”类型的东西。
- GtkRadiant(id tech 3/4 编辑器)内置了所有基本的 CSG 操作,因此您可以理论上挖出空间,但 Radiant 的 CSG 被广泛认为是“邪恶的”。
- Prey 是第一个宣传渲染门户的游戏,但它可能是用于绘制而不是剔除的。
- Dark Forces 也使用门户进行剔除。
- Marathon 2 由 Bungie 制作,具有非欧几里得地图和重叠部分。
- Portal 开发人员使用名为“世界门户”的工具来连接不同区域,允许创建不可能的空间。
- Duke3D 使用传送来模拟高度,例如在游戏开始时从屋顶掉下来时,您实际上会传送到地图的另一部分。
- Prey 2017 的“望远镜”功能使用特殊技术来实现破碎的屏幕效果。

---

## Phi-4 Bug Fixes

https://unsloth.ai/blog/phi4

Unsloth最近发布了一篇文章,介绍了他们对Microsoft新推出的14B模型Phi-4进行的优化和bug修复。文章指出,Phi-4在某些方面的性能与OpenAI的GPT-4o-mini相当,但是在某些方面存在一些bug。Unsloth团队发现并修复了四个bug,包括tokenizer bug、fine-tuning bug、chat template issues等。这些修复使得Phi-4的准确性大大提高。

文章还指出,Unsloth对Phi-4进行了Llama-fication,即将Phi-4的架构转换为Llama的架构,这使得fine-tuning更加准确。同时,Unsloth还上传了修复后的Phi-4模型和dynamic 4-bit quants,这使得模型的下载速度更快,准确性也更高。

文章最后提到,Unsloth提供了一个免费的Google Colab Notebook,用于fine-tuning Phi-4模型。同时,Unsloth也提供了性能benchmark,比较了Unsloth优化后的Phi-4模型与Hugging Face+FA2的性能。benchmark结果显示,Unsloth优化后的Phi-4模型在VRAM使用、速度和准确性方面都有显著的提高。

总的来说,这篇文章介绍了Unsloth对Phi-4模型的优化和bug修复,包括tokenizer bug、fine-tuning bug、chat template issues等。同时,文章还介绍了Unsloth对Phi-4的Llama-fication和dynamic 4-bit quants,并提供了性能benchmark和免费的Google Colab Notebook。

---

### HN 热度 183 points | 评论 59 comments | 作者:danielhanchen | 1 day ago

https://news.ycombinator.com/item?id=42660335

- Phi-4 模型存在一些bug,例如结束符应该是 <|im_end|> 而不是 <|endoftext|>,聊天模板不应该自动添加助手提示,填充符号不应该是 EOS 而应该是 <|dummy_87|>。
- Phi-4 模型的架构与 Llama 模型相似,但有一些不同之处,例如合并了注意力矩阵,使用了滑动窗口注意力等。
- 将 Phi-4 模型转换为 Llama 架构可以提高准确率和易用性。
- Phi-4 模型的动态量化技术可以提高模型的性能和效率。
- 有网友表示 Phi-4 模型在某些任务上表现不佳,例如 MATH 和 GPQA 任务。
- 有网友表示 Phi-4 模型的 bug 修复可以提高模型的性能和准确率。
- 有网友表示 Phi-4 模型的开放 leaderboard 上的结果显示,修复后的模型在某些任务上表现更好。
- 有网友表示 Phi-4 模型的开发团队应该对模型的 bug 和性能问题负责。
- 有网友表示 Phi-4 模型的 bug 修复是一个复杂的过程,需要仔细测试和验证。

---

## Very Wrong Math

https://www.charlespetzold.com/blog/2025/01/Very-Wrong-Math.html

这篇文章的作者是 Charles Petzold,他在自己的博客上发表了一篇题为《Very Wrong Math》的文章。文章的内容是关于一个设计和施工公司在Facebook上发布的一条帖子,这条帖子包含了一道数学题目,题目是关于地球的半径和飞行时间的计算。

作者首先指出,这道题目是错误的,甚至是荒谬的。他通过计算圆弧的长度来说明这一点,圆弧的长度与其所对应的角度和半径成正比。作者还指出,地球的半径应该是约18万英尺,而不是题目中给出的4333英尺。

作者还计算了两个圆弧的长度比,结果表明外圆弧的长度仅比内圆弧的长度长0.15%。这意味着飞行时间在高空中可能会更短,因为空气阻力更小。

总的来说,这篇文章是一篇批评和讽刺的文章,作者通过数学计算来揭露错误的信息,并批评发布这条帖子的公司。

---

### HN 热度 180 points | 评论 100 comments | 作者:breadbox | 1 day ago

https://news.ycombinator.com/item?id=42661432

- 地球是圆形的,.builder 在youtube 上的论证是错误的,地球的曲率太小,导致测量误差。
- 即使在人类的尺度上,地球的曲率也是可以测量的。
- 可以通过观察船舶离开岸边的视线下降来证明地球是圆形的。
- 即使站在海边,观察日落,也可以通过测量时间和自己的高度来估算地球的半径。
- 如果地球是圆形的,重力会使得物体向中心方向倾斜,导致地面看起来像一个无尽的山坡。
- Flat Earthers 认为地球是圆形的,但他们的论证是错误的,因为他们没有考虑到重力和地球的曲率。
- Flat Earthers 的论证是基于他们的信仰,而不是科学事实。
- 他们认为上帝控制着一切,自然规律和因果关系都是上帝的意志。
- 即使实验结果与他们的信仰相矛盾,他们也会认为是上帝的意志。
- 他们的信仰是不可证伪的,因为他们认为上帝可以改变自然规律。
- Flat Earthers 的论证是基于他们的信仰,而不是科学事实。

---

## Building Bauble

https://ianthehenry.com/posts/bauble/building-bauble/

这篇文章主要讲述了作者创建的一个名为 “Bauble” 的工具。Bauble 是一个用于生成 3D 图形的工具,特别是基于数学的图形,而不仅仅是使用传统的 3D 建模技术。以下是文章的详细总结:



1. ** 制作的小热气球 **:作者首先展示了一个用黄铜和青铜交替层叠制成的小热气球,解释了其制作过程是通过 “失蜡铸造”(lost wax casting)来完成的。虽然这个热气球很有趣,但这并不是作者想要重点介绍的内容。



1. **3D 模型的创建 **:作者提到热气球的 3D 模型并不是简单的三角网格,而是通过数学公式定义的,完全是一个函数的形式。接着,他介绍了自己在 2022 年创建的 Bauble 工具,这是一个能够用数学在电脑上制作图像的工具。



1. ** 签名距离函数(SDFs)**:作者对签名距离函数(SDFs)充满热情,认为它们可以通过简单的数学表达式来雕塑空间。作者推荐了一段 Inigo Quilez 的视频,讲解如何使用 SDFs 创建动画。他希望能够以更直观的方式使用 SDFs,而不是通过繁琐的 GLSL 代码。



1. ** 创建 Bauble 的动机 **:作者感到在使用 SDFs 时,GLSL 编程的过程非常繁琐,尤其是在进行高阶操作时。Bauble 的创建旨在简化这个过程,让用户能够以更函数化、表达式导向的方式进行操作。Bauble 允许用户像编写函数一样编写代码,可以轻松地进行旋转、平移等操作。



1. ** 界面与功能 **:Bauble 不仅是一个高层次的编程语言,它还支持动态编辑、实时查看效果,并能够在 3D 空间中自由移动视角。作者提到,固定相机模型的 3D 建模非常困难,因此他设计了一个简单的摄像机系统来简化这一过程。



1. ** 开发过程 **:作者分享了开发 Bauble 的经历,包括使用 Janet 作为高级语言、WebAssembly、GLSL 字符串拼接等。他提到自己在开发过程中遇到的挑战和学习的内容,比如 TypeScript、现代 JavaScript 生态系统的复杂性等。



1. ** 持续改进与乐趣 **:在最初的版本中,尽管效果比较粗糙,但作者已经感受到了制作过程的乐趣。随着功能的不断增强,作者继续改进 Bauble,使其更加强大和易用。



总结而言,Bauble 是作者在追求使用数学生成 3D 图形过程中的一个创新工具,它简化了传统编程的繁琐,使得创作过程更加直观和有趣。作者在开发中不仅提升了自己的编程技能,也享受到了创造的乐趣。

---

### HN 热度 180 points | 评论 100 comments | 作者: ianthehenry | 1 day ago

https://news.ycombinator.com/item?id=42660942

- 这篇文章让人感受到编程的魔力和乐趣,尽管现代开发中常常会遇到复杂的问题。

- 看到如此高质量的工作令人感到安心,尤其是在如今众多简单产品和 AI 工具泛滥的背景下。

- 作者的项目 Bauble 很有趣,评论者对作者的测试环节感到好笑并且受到了启发。

- 有人表示受到了激励,希望能完成自己的项目,尽管过程可能漫长。

- 对 Bauble 的艺术风格和互动性表示赞赏,并对 Janet 编程语言产生了兴趣。

- 强调持之以恒的力量,鼓励更多人尝试学习图形编程。

- 提到在 Safari 上遇到技术问题,指出是由于无法创建 WebGL2 上下文导致的错误。

- 有人询问如何从 3D 模型制作铸铜雕塑,并分享了使用 sculpteo 服务的经历。

- 对 Inigo Quilez 的视频表示印象深刻,并认为这篇文章提供了更多的实用见解。