2025-09-29

44 篇热帖

1. F-Droid and Google’s developer registration decree (f-droid.org)

For the past 15 years, F-Droid has provided a safe and secure haven for Android users around the world to find and install free and open source apps. When co...

5. Loadmo.re: design inspiration for unconventional web (loadmo.re)

A curated archive of distinctive mobile websites and unconventional digital experiences, by Kim Boutin (Kim Lê Boutin). Exploring alternative approaches to mobile-first interface design since 2021.

7. UK Petition: Do not introduce Digital ID cards (petition.parliament.uk)

A petition created by a British citizen or UK resident. You can share this petition if you agree with its message.

9. The history of cataract surgery (www.asimov.press)

白内障手术历史概述

眼睛的象征意义与白内障挑战

眼睛在人类文化中具有深刻的象征意义,如埃及的荷鲁斯之眼、北欧的奥丁神眼和印度教的第三只眼。然而,眼睛结构特殊,其晶状体无血管、神经且不与免疫系统互动,导致眼损伤难以修复。白内障(晶状体混浊)是全球致盲主因之一,2020年全球约有1701万人因白内障失明。白内障手术是现代医学中最常见的手术,全球每年进行超过2000万例,但手术可及性在低收入国家仍严重不足。

手术技术演变

古代“拨障法”

最早记录见于公元前600年印度《妙闻本集》,描述“拨障法”(couching):用弯曲针将混浊晶状体推入玻璃体腔,暂时恢复部分视力但遗留视物模糊。该方法在印度、波斯、欧洲和伊斯兰世界沿用数百年。

伊斯兰黄金时代的创新

10世纪埃及医生Ammar ibn Ali al-Mawsili提出吸出法,使用空心针吸除白内障,标志着从“移位”到“移除”晶状体的观念转变。

近代手术突破

  • 1747年:法国医生Jacques Daviel开创“囊外摘除术”(ECCE),切开角膜缘取出混浊晶状体物质,保留后囊膜,奠定现代手术基础。
  • 1750年:英国医生Samuel Sharp提出“囊内摘除术”(ICCE),完整取出整个晶状体囊膜。

人工晶体的诞生

二战期间,英国眼科医生Harold Ridley受战斗机座舱盖材料(聚甲基丙烯酸甲酯)启发,于1949年首次植入人工晶体(IOL)。该创新最初遭到保守学术界抵制,但经过改进后,20世纪70年代起在全球普及。

技术革新时代

  • 1960年代:美国医生Charles Kelman受牙科超声洁牙启发,发明“超声乳化术”(phacoemulsification),用超声波乳化并吸除白内障,将手术切口缩小至2-3毫米。
  • 2008年:匈牙利医生Zoltan Nagy实施首例“飞秒激光辅助白内障手术”(FLACS),提高手术精准度。

现代白内障手术与可及性挑战

现代白内障手术仅需约20分钟,成功率超95%,术后视力可在数小时内改善。手术包括超声乳化清除白内障和植入可折叠人工晶体。新型“可调节人工晶体”(LAL)还可在术后通过紫外线微调屈光度。

然而,全球手术可及性差异显著:

  • 数据对比:高收入国家每百万人年手术量(CSR)为5000-10000例,而撒哈拉以南非洲常低于500例。
  • 主要障碍:缺乏医疗设施、专业人员不足、经济成本(包括交通、食宿等隐性费用)以及性别不平等(女性手术率低于男性)。
  • 经济影响:视力障碍导致全球年生产力损失约4110亿美元。

创新模式:印度Aravind眼科医院

成立于1976年的Aravind眼科医院通过以下模式扩大可及性:

  1. 交叉补贴:付费患者补贴免费或低价服务。
  2. 自主生产:成立Aurolab将人工晶体成本从100美元降至10美元以下。
  3. 高效运营:采用“流水线”手术室,一名医生每小时可完成6-8台手术。
  4. 人员培训:培训当地护士和技术员成为认证眼科助理。
  5. 社区外展:开展筛查营地,每年服务超50万人。

全球范围内,政府项目(如印度国家盲症控制计划)和国际组织(如Sightsavers、狮子会)也在通过筛查、培训和政策支持提升手术可及性。

结语

白内障手术的历史是技术革新与人文关怀交织的历程。其未来发展不仅依赖技术进步,更取决于能否将这项“重见光明”的技术公平地惠及所有人。

10. Larry Ellison – 'citizens will be on their best behavior' amid nonstop recording (fortune.com)

“Citizens will be on their best behavior because we are constantly recording and reporting everything that’s going on,” Ellison said last year.

11. Write the damn code (antonz.org)

关于编程中使用AI的实用建议

反对过度依赖提示词迭代

当前流行的建议倡导“不断迭代提示词以获得AI完美输出”,但这是一种低效、痛苦且不精确的工作方式。避免陷入无休止的提示词优化循环,试图通过“用英语编程”让AI生成完美代码。

提倡人与AI的协作编码

核心原则是开发者应主动参与编码过程,而非完全交给AI。以下是更高效的实践方法:

  1. 获取初步版本:向AI请求一个初始方案,然后自行重构以满足具体需求。
  2. 自我驱动并改进:先自己编写初始版本,再让AI审查和优化代码。
  3. 关键部分亲手编写:自行完成代码的关键逻辑部分,让AI处理剩余任务。
  4. 提供框架:编写代码的大纲或结构,让AI填充具体实现细节。

核心行动建议

  • 如果AI能在一两次尝试内完美解决问题,可以直接采用。
  • 否则,应停止反复调整提示词,转而动手编写代码,然后再借助AI工具。
  • 充分利用AI,但不要让它取代你作为软件工程师的核心工作——编写代码。

结论

软件工程师应亲自动手编写代码,这是你的专业所在。避免将自己转变为一个单纯的“提示词优化者”。

12. Go ahead, write the “stupid” code (spikepuppet.io)

总结:请放心编写“愚蠢”的代码

个人编程历程

  • 作者在2010年毕业后,出于对计算机和游戏的兴趣,进入职业学校学习编程。
  • 初期学习充满挑战,但通过坚持攻克VB.NET教材后,逐渐爱上编程并发现自己擅长于此。
  • 随后通过游戏设计和开发的专业学习(包括游戏设计与计算机科学结合的学位),编写了大量在当时看来“愚蠢”的代码。
  • 这些实践帮助作者磨练技能并积累了大量经验。

当前反思与瓶颈

  • 近期深入探索JavaScript/TypeScript及Node.js、Deno等运行时环境。
  • 最初想尝试Streams API时,因找不到“完美”应用场景而犹豫,最终编写了一个简单的股票行情程序。
  • 后来开发一个Deno命令行工具(每日励志名言生成器)时,又因想法“太小、太蠢”而自我怀疑,但仍坚持完成并获得满足感。
  • 意识到多年的经验反而让自己变得更加严苛:既批判自己的代码,也害怕尝试“无意义”的项目。

核心观点与鼓励

  • “愚蠢代码”不存在:代码只有“已编写”和“未编写”之分。
  • 保持探索心态:应允许自己为学习新技术(如新运行时或语言)而编写简单项目,享受尝试和试错的过程。
  • 持续好奇与成长:保持学习心态能推动职业生涯发展,对于以编程为兴趣的人,更能维持热情与乐趣。
  • 自我宽恕:为自己编程时不必追求完美或美观,乐趣和尝试才是关键。
13. Optimizing a 6502 image decoder, from 70 minutes to 1 minute (www.colino.net)

本文记录了在1MHz的6502处理器上(Apple II平台),将Quicktake 150相机图像解码器从耗时70分钟优化至不到1分钟的过程。核心思路是通过算法层面的深度优化,而非单纯的代码优化,以大幅提升性能。

初始挑战与目标 作者最初目标是利用Apple II串行端口连接Quicktake相机进行数字摄影。解码器基于开源项目dcraw的C代码移植而来,但其算法复杂,涉及哈夫曼编码、位操作和大量16位运算,与6502架构兼容性差。初版功能正确,但解码单张图片需70分钟。

关键优化步骤 优化围绕“减少不必要的操作”这一原则展开,主要分为以下几个阶段:

  1. 舍弃颜色数据:由于最终目标是在单色显示器上显示,作者首先增加了只解码拜耳矩阵中绿色像素的标志,跳过其他颜色处理,显著减少了计算量。
  2. 简化缓冲区使用:通过分析并理解原始算法中多个临时缓冲区的作用,作者逐步解构和简化了数据处理流程。例如,移除了仅用于中间插值的缓冲区,并直接在解码过程中构建图像数据,避免了额外的循环和数据复制。
  3. 优化除法运算:发现最终像素值需进行除法运算,且除数每两行才变化一次。作者预计算了除法结果并存储在查找表中,将约15.4万次实时除法减少为约2000次,这对没有硬件除法的6502是巨大提升。虽然引入了可忽略的精度损失,但换取了速度。
  4. 改进内存访问模式:将图像输出缓冲区的索引方式从计算量大的 buffer[y*WIDTH+x] 改为更简单的逐行索引,减少了寻址开销。
  5. 重构霍夫曼解码:原始算法为追求查找速度,使用了需要16位位缓冲区的大型查找表。作者改为逐位处理哈夫曼码,虽然在其他平台可能变慢,但在6502上减少了位移操作时间,并节省了内存。

结果与遗留问题 通过一系列算法简化与优化,解码速度提升了数十倍,最终在Apple II上实现了不到一分钟的解码时间。作者指出,优化算法本身(做更少且更必要的事)比优化汇编代码能带来更显著的性能提升。

文章最后指出,原始Quicktake 150格式仍有未解之谜,其编码方式中的“魔法”数字和算术操作来源不明,并期待能有更详尽的格式文档。后续文章将介绍具体的6502汇编层面优化技巧。

15. I built ChatGPT with Minecraft redstone [video] (www.youtube.com)

YouTube 上盡享你喜愛的影片和音樂、上載原創內容,並與親友和世界各地的人分享。

16. Tactility: An ESP32 OS (tactility.one)

Tactility 是一个为 ESP32 微控制器设计的操作系统。要获取更多详细信息,请访问官方网站:Tactility Project

17. What if I don't want videos of my hobby time available to the world? (neilzone.co.uk)

I am very much enjoying my newly-resurrected hobby of Airsoft.

18. Why friction is necessary for growth (jameelur.com)

Why I think comfort leads to stagnation and overcoming friction leads to growth.

19. China is run by engineers. America is run by lawyers (freakonomics.com)

China Is Run by Engineers. America Is Run by Lawyers. - Freakonomics

20. Bad Apple but it's played inside Super Mario Bros (tasvideos.org)

Submission #8991 from 2024-04-01

22. Farewell friends (humbledollar.com)

If this post is appearing, it means I’ve succumbed to cancer or one of its side effects. Please don’t feel sad for me. I’ve had a life filled with love, great experiences and wonderful career opportunities. Despite my demise at a relatively young age, I consider myself beyond fortunate. I’m hoping that, under the tree in front of our little Philadelphia rowhome, my wife Elaine will place a stone tablet inscribed with my name, and the year I was born and died.

23. Zero ASIC releases Wildebeest, the highest performance FPGA synthesis tool (www.zeroasic.com)

Democratizing silicon

24. Google just erased 7 years of our political history (www.thebriefing.ie)

Google appears to have deleted its political ad archive for the EU; so the last 7 years of ads, of political spending, of messaging, of targeting - on YouTube, on Search and for display ads - for countless elections across 27 countries - is all gone.

We had been told

27. DeepSeek-v3.2-Exp (github.com)

Contribute to deepseek-ai/DeepSeek-V3.2-Exp development by creating an account on GitHub.

28. A simple habit that saves my evenings (alikhil.dev)

As a software engineer, I often work on big tasks that require hours of continuous and focused work. However, we have plenty of meetings, colleagues asking us something in Slack, and lunch breaks. Add a colleague who comes to you and calls you for a cup of coffee if you work from the office. And usually, we don’t really have such a luxury as hours of uninterrupted time. Nevertheless, sometimes we catch the flow of productive and focused work at the end of the workday. Imagine you come up with an elegant solution to a problem you’ve been tackling all day, or maybe even the whole past week. You can’t wait to implement and test your solution. And of course, you are so driven by your idea that you decide to continue working despite your working day being over. “20 minutes more and I will finish it,” you think. Obviously, this is not the case; some edge cases and new issues will inevitably arise. You come to your senses only 2–3 hours later—tired, hungry, demotivated, and still struggling with your problem. You just wasted your evening, with nothing to show for it. Worse, you overworked and didn’t recover that night. Thus, you were already exhausted when you started working.

29. Vertical Solar Panels Are Out Standing (hackaday.com)

If you’re mounting solar panels, everybody knows the drill, right? Point them south, angled according to latitude. It’s easy. In a video which demonstrates that [Everyday Dave] is truly…

30. Subtleties of SQLite Indexes (emschwartz.me)

Understanding query planner quirks yielded a ~35% speedup.

32. A 3K-year-old copper smelting site could be key to understanding origins of iron (phys.org)

Research from Cranfield University sheds new light onto the transition from the Bronze Age to the Iron Age, showing how experimentation with iron-rich rocks by copper smelters may have sparked the invention of iron.

33. VMScape and why Xen dodged it (virtualize.sh)

ETH Zürich’s new VMScape attack hit KVM and VMware, but Xen’s microkernel-like design kept it out of reach.

34. Not all OCuLink eGPU docks are created equal (www.jeffgeerling.com)
  • 核心问题:在树莓派500+上使用OCuLink eGPU扩展坞时,不同扩展坞和线缆的兼容性存在显著差异,导致部分显卡无法被识别。
  • 关键发现
    1. OCuLink线缆并非相同:Minisforum DEG1扩展坞原装线缆内部有额外彩色电线,而其他品牌(如chenyang)的线缆缺失这些电线,可能导致兼容性问题。更换为原装线缆后,部分显卡(如RX 6500 XT)可正常工作。
    2. 显卡兼容性差异:即使在相同扩展坞(DEG1)下,RX 6500 XT和Intel B580显卡可被识别,但RX 7900 XT始终无法工作,表明兼容性问题与显卡型号相关。
    3. 扩展坞兼容性差异:更便宜的JMT扩展坞兼容性更好,可支持更多显卡,而DEG1则存在特定限制。
    4. 解决方案:使用带有PCIe ReDriver的M.2转OCuLink适配器(如Micro SATA型号)可解决DEG1扩展坞的兼容性问题,使RX 7900 XT等显卡正常工作。此类适配器通过增强信号质量改善连接。
  • 经验总结
    • OCuLink系统的兼容性受线缆、扩展坞设计和M.2适配器质量共同影响。
    • 直接引脚对引脚的简单M.2适配器可能因信号质量不足导致问题,带ReDriver的主动适配器更可靠。
    • 对于关键应用,作者倾向于使用更稳定的JMT扩展坞;但对于便利性和物理稳定性,DEG1搭配ReDriver适配器仍是可行选择。
36. John Jumper: AI is revolutionizing scientific discovery [video] (www.youtube.com)

John Jumper on June 16, 2025 at AI Startup School in San Francisco.John Jumper is a physicist-turned-computational biologist who led DeepMind’s AlphaFold tea...

38. Linus Learns Analog Circuits (github.com)

Linus 学习模拟电路:吉他效果器项目

这是一个升级版的吉他效果器项目,用屏幕和旋转编码器取代了传统电位器,支持多种效果和图形用户界面。

项目结构

项目包含三个主要目录:

  • Hardware:包含 KiCad 硬件设计文件、3D 打印部件和外壳钻孔规则。
  • Software:包含固件源代码。
  • Documentation:项目文档(目前内容有限)。

固件开发

  • 构建环境:需在 Linux、macOS 或 Windows 上配置开发环境。
  • 依赖工具:git、make、python3、cmake、32 位 ARM 交叉编译工具链。
  • 关键库:自动集成 pico-sdktinyusb 子模块。
  • 构建步骤
    git clone https://github.com/torvalds/GuitarPedal.git
    cd GuitarPedal/Software
    make prep
    make
    
  • 输出文件:构建后在 build/ 目录生成 blink.uf2 固件文件。
  • 烧录方式:可通过 USB 传输至设备(进入编程模式)或使用 make flash(需安装支持 USB 的 picotool)。

硬件设计

  • 模块化设计:采用分离式电路板,包括:
    • rp2354 微控制器板
    • codec 音频编解码板(TI TAC5112)
    • audio-jacks 音频接口板
    • pedal-board 主板(集成 I2C 屏幕接口、USB-C 端口、旋转编码器、脚踏开关)
  • 连接方式:使用 HiRose BM28 系列连接器(0.35mm 间距),通过 12 针 0.5mm FFC 排线传输电源和 I2C/I2S 信号。
  • 设计优势:便于实验不同布局,但增加了电路复杂度(核心板双面布局)。

用户界面

  • 屏幕:128×128 单色 OLED 显示屏。
  • 控制元件
    • 上方旋转编码器:调整当前效果参数值(按下切换参数,长按+旋转可双向浏览效果列表)。
    • 下方旋转编码器:切换效果(按下启用/禁用当前效果)。
    • 左脚踏开关:切换当前效果启用状态。
    • 右脚踏开关:全局启用/禁用效果器。
  • 状态指示
    • LED1:显示当前效果状态(如噪声门门限触发、压缩器工作时亮度增强)。
    • LED2:全局状态指示(信号硬削波时亮度增强)。
  • 特殊操作:同时按住两个旋转编码器可重置效果器(连接 USB 时进入编程模式,未连接时重置所有效果至默认)。

音频效果

当前支持的效果包括:

  1. 噪声门:门限范围 -100dBV 至 0dBV,默认 -70dBV,可调攻击/释放时间。
  2. 压缩器:可调压缩电平、比率、攻击/释放时间和增益。
  3. 增益/失真:支持纯净增益或通过电平折叠产生谐波失真。
  4. 相位器/镶边器:基础调制效果。
  5. 回声:基于 Maestro Echoplex 磁带延迟模型的 DSP 实现(改编自 Cleveland Music Co 的 Echo King 效果)。
  6. 音高偏移:基于延迟循环的实时音高偏移,支持反馈和分数八度调整,但会引入延迟。
  7. 10 段均衡器:每段 ±20dB 调节范围,使用 32 位浮点运算。
  8. USB 音频接口:可选立体声输出模式(干声/湿声/左右分离),功能仍处于开发阶段。
41. Dbos: Durable Workflow Orchestration with Go and PostgreSQL (github.com)

Database-Backed Durable Golang Workflows. Contribute to dbos-inc/dbos-transact-golang development by creating an account on GitHub.

44. To AI or not to AI (antropia.studio)

A two-week experiment building an app with full AI assistance, exploring both the promise and frustrations of LLM-based development workflows.