tonsky

RSS: https://tonsky.me/atom.xml
Nikita Prokopov 的博客,Fira Code 字体作者,关于字体排印、UI 设计与编程的尖锐洞察。

每一帧都完美:UI细节如何决定用户信任

<p>翻译:</p><p>前段时间我在读关于 Wayland 的文章,有一句话让我印象深刻:</p><p>Wayland 的一个明确目标是“”。</p><p>我认为这也是我们每个人都应该追求的目标。Wayland 谈的是技术层面——现代 GPU 的软件栈非常复杂,而 Wayland 正在试图重新掌控它——但这一理念同样可以应用于用户界面。</p><p>一个简单的经验法则就是:</p><p>如果我在任何时候截取你的应用的屏幕截图,你都应该能清楚地解释我看到的内容。</p><p>编辑:之前这里写的是“……它必须说得通”,但这无法涵盖一些高级的动画技巧,比如拖影帧之类的情况。</p><p>为什么要关注每一帧?因为这能建立信任。用户看不到代码,所以用户界面是他们判断应用质量的唯一依据。如果界面看起来很精致,就意味着开发者花时间打磨过它,也意味着他们很可能投入了相当的时间来完善代码。<br><br>这是一种启发式方法,但也是合理的。</p><p>那么,在实践中这意味着什么?我想到了几点:</p><p>屏幕切换时没有白色闪烁。</p><p>没有部分内容加载不完整的情况。</p><p>内容加载过程中不会发生布局重排。</p><p>内部一致性。如果界面的一部分显示“有 1 个更新可用”,另一部分就不应显示“正在检查更新……”。</p><p>精确的动画效果。</p><p>动画常常被忽视。界面在起始和结束状态可能都很出色,但在过渡过程中却显得很卡顿。比如这样:</p><p>如果你觉得这里面有些奇怪的地方,那确实有!看看慢放后的版本:</p><p>现在我们套用刚才的规则,在动画中间截几张图。这样看起来就不对劲了:</p><p>这样也不行:…</p>
评论点赞收藏108 天前

计算机科学最难的问题:居中

作者指出尽管CSS居中技术简单,但各大平台UI仍存在大量对齐瑕疵。文章深入分析了字体度量、行高、图标对齐等技术难点,揭示了字体设计缺陷和Icon Font的局限性,并提供了针对设计师、字体设计师和开发者的具体修复方案与代码示例。
评论点赞收藏227 天前

Tahoe 图标设计难以自圆其说

从图标设计的第一性原理出发,批评 Apple 在 macOS Tahoe 中未能应用这些原则,引发对苹果设计哲学变化的讨论。
评论点赞收藏268 天前

贪婪的软件程序

作者反思软件角色的转变,指出过去是我们使用软件,现在变成了软件在利用我们。文章探讨了现代软件如何通过过度索取权限、数据和注意力来反客为主,引发了对技术依赖和软件伦理的思考。
评论点赞收藏321 天前

当你写宏写得足够聪明时

作者深入探讨了Clojure中hashp调试宏在线程宏中的失效问题,并通过巧妙的探针技巧设计了一个能自动识别线程方向的新宏,展示了极具工程美感的元编程解决方案。
评论点赞收藏349 天前

我们本不需要 lockfile

作者强烈反对在依赖管理中引入 lockfile,认为基于语义化版本号的确定性解析算法足以保证构建可复现。文章指出 lockfile 增加了复杂性,并以 Maven 为例证明没有 lockfile 也能在大规模项目中稳定运行,甚至通过最近版本优先策略解决冲突。
评论点赞收藏419 天前

被大模型“煤气灯”式操控的开发模式

作者通过自身产品Instant的案例,指出LLM会根据其训练数据中的常见模式,强行要求开发者修改API以符合“标准”用法(如将tx.update改为tx.create)。 文章探讨了这种“煤气灯效应”驱动的开发模式:虽然感觉怪异,但这实际上是一种独特的测试手段,能让开发者体验“新手视角”,同时也引发了关于API设计是否应迎合大众直觉还是保持独特性的思考。
评论点赞收藏440 天前

我设计的 Logo 作品集

Clojure 知名开发者 Tonsky 的个人作品集页面,展示了其多年来为 Clojure 生态系统项目(如 Clj-Kondo, DataScript, Babashka 等)及开源社区设计的 Logo。 内容主要为视觉展示与项目链接,缺乏深度技术解析或行业观点。
评论点赞收藏479 天前

软件幻灭:为何我们不再追求高效与卓越

作者回顾15年编程生涯,痛陈软件行业在效率、简洁和卓越方面的缺失。文章指出软件运行效率极低、体积臃肿、稳定性差,且构建工具和依赖管理混乱。 作者呼吁工程师重拾对工程质量的追求,拒绝“移动快于修复”的懒惰文化,追求更快、更可靠、更高效的软件。
评论点赞收藏566 天前

2023年软件开发者必须掌握的 Unicode 基础知识

本文是对 Joel Spolsky 经典文章的2023年更新。作者深入剖析了 UTF-8 编码、Unicode 码点与扩展字素簇(Extended Grapheme Clusters)的区别,指出开发者常因混淆字节长度与字符长度导致 Bug。 文章强调必须使用 ICU 等库处理字符串操作,并解释了 Unicode 规范化(Normalization)和区域设置(Locale)依赖带来的复杂性,是后端和全栈开发者必读的基础知识。
评论点赞收藏567 天前

SwiftUI 的默认值设计是有害的

作者深入批评了 SwiftUI 框架中过度‘智能’的默认行为,如隐式逗号处理、魔法间距和不透明的默认样式。文章认为这些特性导致代码不可预测、调试困难且维护成本高,主张框架设计应遵循‘显式优于隐式’的原则,保持简单和可预测性,以牺牲部分新手便利性为代价换取专业开发者的可控性。
评论点赞收藏575 天前

可视化编程的终局:是代码的附属,还是独立的可执行实体?

作者结合个人经验,将可视化编程分为四个层级:独立图表、代码旁图表、代码生成图表、以及作为独立可执行实体的图表。作者反对用可视化完全替代文本代码,主张将可视化视为类似游戏引擎场景编辑器的独立工具,专门处理状态机等适合可视化的逻辑,而非试图可视化所有业务逻辑。
评论点赞收藏795 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。