2025-05-03

29 篇热帖

1. Show HN: I built a synthesizer based on 3D physics (anukari.com)

Build instruments from masses, springs and more in 3D space and hear what happens. A physics-powered synthesizer and effects plugin for VST3, AU, and AAX.

4. Why can't HTML alone do includes? (frontendmasters.com)

HTML原生包含功能缺失之谜

本文探讨了一个基础的Web开发需求:如何在多个HTML页面中高效重用相同代码(如页眉),并质疑为何HTML语言本身缺乏内置的包含功能。

核心需求与问题

开发者常面临在多个页面(如index.html、about.html、contact.html)中重复相同头部代码的问题。理想做法是将头部代码编写一次,然后“包含”到所有需要的页面中,以避免代码重复。然而,纯HTML本身并没有提供任何原生的标签或机制来实现这一点,例如不存在类似<img src="header.html">这样的标准语法。

现有解决方案(均非HTML原生)

开发者已采用多种变通方案,但这些都需要借助其他技术或工具:

  • JavaScript:使用fetch API获取HTML片段并通过DOM操作插入。
  • 服务器端指令:如Apache的SSI(Server Side Includes)。
  • 工具链支持:静态站点生成器(如Jekyll)、任务运行器(如gulp)、模板语言(如Handlebars)。
  • 后端语言:如PHP的include函数。
  • Web Components:自定义元素用于加载HTML内容。
  • iframe:虽为纯HTML标签,但存在性能、可访问性和使用繁琐等问题,通常不推荐。
  • 编辑器功能:依赖代码编辑器的查找替换工具进行手动同步。

与其他Web技术的对比

文章指出一种不协调的现象:

  • CSS允许通过@import导入其他CSS文件。
  • JavaScript允许通过import语句导入模块。
  • 但HTML却不能以标准方式导入其他HTML片段。

提出的可能原因

作者推测HTML标准中缺失此功能可能存在以下原因,但表示尚无确切答案:

  1. 性能影响:可能破坏浏览器预加载扫描器的效率,导致性能下降。
  2. 用户体验:可能需要异步加载,造成页面内容跳动或加载体验不连贯。
  3. 语言纯粹性:可能引入破坏HTML结构简洁性的复杂性。
  4. 技术挑战:如处理嵌套包含、循环引用等复杂场景的难度。
  5. 服务器压力:可能显著增加网络请求数量,受到托管服务方的反对。
  6. 安全限制:跨域加载HTML可能面临严格的限制,不如图片、CSS或JS灵活。
  7. 需求真实性:作者自问是否高估了社区对这一功能的需求。

文章最后邀请了解标准制定讨论的读者分享见解,并附带了Web开发课程推广链接。

5. Run LLMs on Apple Neural Engine (ANE) (github.com)

Artificial Neural Engine Machine Learning Library. Contribute to Anemll/Anemll development by creating an account on GitHub.

7. Time saved by AI offset by new work created, study suggests (arstechnica.com)

Survey of 2023–2024 data finds that AI created more tasks for 8.4 percent of workers.

8. Show HN: I taught AI to commentate Pong in real time (github.com)

LLM-generated real-time commentary for Pong. Contribute to pncnmnp/xpong development by creating an account on GitHub.

9. N8n – Flexible AI workflow automation for technical teams (n8n.io)

n8n is a workflow automation platform that uniquely combines AI capabilities with business process automation, giving technical teams the flexibility of code with the speed of no-code.

10. QModem 4.51 Source Code (github.com)

Contribute to AaronFriel/qmodem-4.51 development by creating an account on GitHub.

11. Connomore64: Cycle exact emulation of the C64 using parallel microcontrollers (github.com)

Realtime cycle exact emulation of the C64 using multiple microcontrollers in parallel. - c1570/Connomore64

12. Why I stopped angel investing after 15 years (and what I'm doing instead) (halletecco.substack.com)

作者暂停天使投资的核心原因:

作者在持续15年、投资54家公司后,于2024年暂停了天使投资。主要原因如下:

  1. 投资组合过于分散,导致支持深度不足:为遵循“分散风险”的投资原则而投资过多公司,反而使其无法为任何一家公司提供足够深入、有意义的支持,这与最初希望通过近距离帮助创始人获得乐趣和学习的初衷背道而驰。
  2. 时间精力消耗巨大:管理大量投资组合成为了一项无偿的全职工作,日常事务(如帮助招聘、提供融资建议、解决内部冲突等)使其精力被过度分散,导致与各公司的互动日益肤浅。
  3. 学习效果并非最优:作者发现,通过行业新闻、播客、教学、写作、加入顾问委员会等途径,能获得同等甚至更深入的行业洞察。被动持有股权通常只能获得表面化的季度更新。
  4. 经济回报未能抵消风险:与风险投资机构(VC)不同,天使投资者承担100%的财务风险且无管理费收入。他们还面临极长的流动性周期(通常超过10年)和宏观周期风险。在后零利率时代(2023-2024年),其投资组合遭遇重创:多个公司以“甩卖”价格被收购(早期投资者回报为零)、关停,或通过痛苦的重组实质上清除了早期股东的权益。综合考虑资本的机会成本、时间成本及风险,天使投资的整体数学期望未能达到合理水平。
  5. 个人成就感转移:作者通过创建公司所获得的收益超过了投资收益,因为创建公司能更直接地影响结果。

暂停天使投资后的新方向:

作者转而采取更聚焦、更能满足其初始目标(乐趣、学习、资本运作)的方式:

  1. 追求深度而非广度:通过加入成长期公司(如Collective Health)的董事会,或共同创立并担任董事会主席(如Cofertility),与创始人建立更深入的关系。
  2. “大声学习”:通过运营播客、撰写通讯/博客、在哥伦比亚商学院和哈佛医学院授课等途径持续学习和分享知识。
  3. 委托专业资本运作:成为若干风险投资(VC)基金的有限合伙人(LP),将投资工作交由专业人士处理,并观察其回报是否优于直接投资。

作者并未永久关闭天使投资的大门,但任何回归都将以与以往不同的、更集中的方式进行。文章最后提及了其播客内容及对一家女性健康公司获得融资的祝贺。

13. Evidence of controversial Planet 9 uncovered in sky surveys taken 23 years apart (www.space.com)

An object seen to have moved in the time between when it was imaged by the IRAS and AKARI surveys in 1983 and 2006 respectively could be Planet Nine.

14. Show HN: Blast – Fast, multi-threaded serving engine for web browsing AI agents (github.com)

Browser-LLM Auto-Scaling Technology. Contribute to stanford-mast/blast development by creating an account on GitHub.

15. Sea snail teeth top Kevlar, titanium as strongest material (2015) (www.cbc.ca)

When you think of a sea snail, you might think slow, but do you think strong? It turns out sea snails contain the strongest material in the world -- in their teeth.

16. Why Archers Didn't Volley Fire (acoup.blog)

This week we're looking at a specific visual motif common in TV and film: the arrow volley. You know the scene: the general readies his archers, he orders them to 'draw!' and then holds up his hand with that 'wait for it' gesture and then shouts 'loose!' (or worse yet, 'fire!') and all of the…

17. I turned a 40 year old Apple Mouse into a speech to text button (workshop.cjpais.com)

A place to play around with technology and make it easy and fun

19. Building Burstables: CPU slicing with cgroups (www.ubicloud.com)

核心摘要

本文介绍了Ubicloud如何利用Linux cgroups v2技术构建“可突发虚拟机”,以提供比专用虚拟机更经济的云计算方案,并详细阐述了其技术原理、实现方法及性能表现。

背景与动机

客户寻求比专用虚拟机更低成本的方案。Ubicloud设计了可突发虚拟机,这类虚拟机运行在共享CPU资源上,但在使用高峰时可以“突发”获得更高的CPU使用率,适用于有间歇性负载峰值的应用。

技术实现核心

实现依赖于Linux cgroups v2,通过cpusetcpu两个控制器协同工作:

  1. cpuset控制器:为虚拟机组分配专用的物理CPU核心,创建一个隔离的资源“盒子”,防止组内工作负载干扰其他组。
  2. cpu控制器:用于管理组内单个虚拟机的CPU资源。
    • cpu.max:设置虚拟机的常规CPU使用上限。
    • cpu.max.burst:设置虚拟机可以突发超越常规上限的额度。系统通过累积和分配CPU“信用”(credits)来管理突发能力,信用在子秒级的CPU调度间隔内累积和消耗。例如,一个常规限额为100% CPU的虚拟机,若其突发限额设为额外100%,且长期平均使用仅为70%,则可累积30%的信用,从而在需要时突发使用高达130%的CPU。

配置与管理

  • 可通过cgroup虚拟文件系统(/sys/fs/cgroup)直接查看和修改配置。
  • 也可通过systemd的slice(切片)单元来创建和管理cgroup。服务可以被分配到特定的slice中,从而继承该slice的资源限制。
  • Ubicloud的控制平面负责编排整个过程:跟踪资源分配、计算限额、在虚拟机配置期间并行设置cgroup,并确保在宿主机重启后重新应用设置,同时不增加虚拟机配置时间。

性能测试结果

使用stress-ng工具进行CPU密集型负载测试,结论如下:

  • 低密度场景(单个可突发虚拟机运行在共享CPU集上,无邻居负载):利用突发能力,性能可比基准提升约30%
  • 高密度场景(多个可突发虚拟机共享CPU集且均满负载):无突发空间,性能无法提升。
  • 尺寸不匹配场景(工作负载大于虚拟机规格):无法积累突发信用,突发能力无效。
  • 尺寸匹配场景(工作负载适配虚拟机规格且无邻居负载):性能可提升约30%

主要结论

  1. 成本效益:可突发虚拟机为可容忍在部分vCPU上运行的工作负载(如小型网站、测试环境)提供了高性价比方案,案例显示成本可降低75%。
  2. 突发能力:正确配置下,可为工作负载峰值提供约30%的额外突发容量。
  3. 技术限制:cgroups v2将突发信用限制在微小时段内累积和使用,无法跨分钟或小时累积。更长的突发管理需在cgroups之外实现,当前方案未包含此功能。
  4. 技术可靠性:cgroups v2提供了稳健的资源管理,能在需要时允许虚拟机超越基线分配,同时保持了工作负载组间的强隔离。
20. Technical analysis of TM SGNL, the unofficial Signal app Trump officials used (micahflee.com)

💡Update May 3, 2025: I have posted a follow-up, Here's the source code for the unofficial Signal app used by Trump officials.

Update May 4, 2025: Another followup, and a big one: The Signal Clone the Trump Admin Uses Was Hacked

Update May 6, 2025: I've written a new detailed

21. ePub-utils: A Python library and CLI tool for inspecting ePub from the terminal (github.com)

A Python library and CLI tool for inspecting ePub from the terminal - ernestofgonzalez/epub-utils

22. The US has approved CRISPR pigs for food (www.technologyreview.com)

Pigs whose DNA makes them resistant to a virus could be the first big consumer product using gene-editing.

23. GitDroid: A third party Android app manager for apps uploaded to GitHub releases (github.com)

GitDroid是一个第三方Android应用管理器,专门用于管理通过GitHub releases上传的应用程序,本质上是一个面向GitHub上发布的应用的“应用商店”。

该项目目前处于非活跃开发状态(尽管技术上仍标记为“开发中”)。开发者指出,这是其首个Flutter应用,因此可能存在不足。开发者建议用户考虑使用Obtainium作为替代方案。

项目演示展示了一个动态GIF,演示了如何使用GitDroid安装名为“Sky Map”的应用程序。

24. Driverless semis have started running regular longhaul routes (www.cnn.com)

Driverless trucks are officially running their first regular long-haul routes, making roundtrips between Dallas and Houston.

25. The History of Album Art (matthewstrom.com)

Matt Ström-Awn · Designer, leader, and coach focused on building exceptional products and teams.

26. VR Design Unpacked: The secret to Beat Saber's fun (www.roadtovr.com)

Our series Inside XR Design highlights and unpacks examples of great XR design. Today we’re looking at Beat Saber (2019) and why its most essential design element can be used to make great VR games that have nothing to do with music or rhythm. Editor’s Note: Today marks the eight year anniversary of Beat Saber’s Early Access release. […]

27. We know a little more about Amazon's satellites (arstechnica.com)

Amazon's Kuiper satellites look nothing like SpaceX's Starlink.

28. Bethesda Thinks Fan Remaster of Oblivion Is 'Very Special' and Supports It (kotaku.com)

Ambitious total conversion mod Skyblivion is unlikely to get shut down anytime soon

29. Show HN: Use Third Party LLM API in JetBrains AI Assistant (github.com)

ProxyAsLocalModel 项目总结

核心功能

该项目是一个本地代理服务器,旨在将第三方远程大语言模型 API 伪装成 LM StudioOllama 的 API 格式。其主要目的是解决 JetBrains AI Assistant 免费版配额有限的问题,允许用户将自己已购买的第三方 API(如 Gemini、Qwen 等)在 JetBrains IDE 中作为本地模型使用。

开发动机与技术实现

作者在 JetBrains AI Assistant 配额用尽后,希望利用已有的第三方 API 令牌,但 JetBrains AI Assistant 原生仅支持 LM Studio 和 Ollama 等本地模型。因此,作者开发了这个代理应用。

项目采用 Ktorkotlinx.serialization 构建,主要看重其 无反射 的特性。最初尝试使用官方 SDK 作为客户端,但发现其大量使用动态特性,难以编译为 GraalVM 原生镜像。因此,作者转而使用 Ktor 和 kotlinx.serialization 自行实现了流式聊天完成 API 的简单客户端。

得益于所选技术栈,应用可被分发为跨平台的胖可运行 JAR 包启动快速的 GraalVM 原生镜像

支持的模型提供商与模式

  • 代理来源 (Proxy from): OpenAI, Claude, DashScope (阿里巴巴 Qwen), Gemini, Deepseek, Mistral, SiliconFlow, xAI。
  • 代理模式 (Proxy as): LM Studio, Ollama。
  • API 类型: 目前仅支持流式聊天完成 API。

使用方式与配置

该应用作为代理服务器,有多种启动方式:

  1. 源码运行: 使用 ./gradlew rungradle run 命令。
  2. 胖 JAR 运行: 通过 java -jar ProxyAsLocalModel-0.0.7-all.jar 启动。
  3. 原生镜像运行: 直接执行编译好的可执行文件(如 ./proxy.exe)。
  4. Docker Compose 运行: 使用 docker compose up 命令,支持前后台模式,并可挂载本地配置文件。

应用首次启动时会生成带模式注解的默认配置文件 config.yml支持热重载。配置文件内容包括:

  • 服务器设置: 分别配置 LM Studio 和 Ollama 服务器的端口、主机地址、路径前缀及启用状态。
  • 客户端设置: 配置连接、请求和套接字超时时间,以及重试次数和重试延迟。
  • API 提供商配置: 可定义多个提供商(如 OpenAI、Claude 等),为每个提供商设置类型、基础 URL、API 密钥及要使用的模型列表。

项目意义

该项目通过巧妙的本地代理方案,扩展了 JetBrains AI Assistant 的实用性,使其能灵活接入多种第三方大模型 API。同时,项目也验证了使用 Kotlin 无反射技术栈开发 GraalVM 原生镜像应用的可行性,能够实现快速启动和较低内存占用。