在 NixOS 上管理点文件的标准方案是 home-manager,但作者从未使用过它,原因是两个美学上的和一个实际上的反对意见。
matklad-github-io
17 条来自 matklad-github-io 的内容
始终追责
1.0本文分享了一些提升代码理解能力的技巧,核心思想是通过持续追问“谁该负责”(blaming)来深入理解代码逻辑。作者认为,培养这种“始终追责”的思维方式,有助于开发者更快定位问题根源、理解系统设计背后的权衡,从而在四维空间(4D)层面掌握代码的来龙去脉。
在主分支捕获不稳定的测试
0.5本文介绍了一个简单但有效的工程习惯:如何在代码合并到主分支后尽早发现并处理不稳定的测试(flaky tests),以保持持续集成的健康度和开发效率。
学习软件架构
2.5本文是作者回复一位研究物理学家关于如何学习软件设计技能的邮件。作者以自身经验为例,探讨了非计算机背景人士如何系统性地掌握软件架构知识,并给出了实用的学习路径建议。
驾驭 Zig 格式化工具
2.5本文分享了高效使用 zig fmt 的两个技巧,适合 Zig 开发者或正在实现代码格式化工具的读者阅读。
Zig 默认提供了最小且足够的错误处理机制——强类型错误码,错误报告则交给用户自行处理。惯用的解决方案是通过传递 Diagnostics 输出参数(sink),在需要时生成可读的错误信息字符串。
本文介绍了一种简洁的基于属性的测试库实现,仅需数百行代码即可完成测试用例最小化功能,将复杂的PBT和模糊测试技术简化为实用的轻量级工具。
关于严格单调时间的思考
2.0单调时间是常用且重要的抽象概念,通常通过特定代码来确保其单调性。本文探讨了严格单调时间的概念及其在系统设计中的实际应用。
make.ts
1.0本文介绍了make.ts工具,这是一个用于TypeScript项目的构建系统,类似于Unix的make工具,但专为TypeScript生态系统设计,提供声明式任务定义和增量构建功能。
CI In a Box
2.0作者开发了box工具,这是一个围绕ssh的轻量级包装器,用于在远程机器上运行命令。他希望能为持续集成(CI)创建一个类似box的接口。
编程箴言
1.0这是一篇关于编程的元思考文章,作者审视自己的编码思维过程,试图厘清什么是编程知识。他发现其中很大一部分是将新问题简化为已知技巧的词汇表。这是一篇个人描述性文章,而非给读者的规范性建议。
2025年,Safari浏览器推出了text-wrap: pretty的合理实现,让我们更接近15世纪的尖端排版技术,实现了优美的段落排版。
诊断工厂
2.0本文介绍了作者在Zig语言中处理错误报告问题的个人默认方法,即如何向用户展示有用的错误信息,弥补了强类型错误码在错误处理方面留下的报告空白。
包装代码注释
1.0作者分享了一个关于代码注释格式的发现:当注释内容过长时,应该让编辑器自动换行,而不是手动插入换行符。这样可以保持注释的可读性和可维护性。
反对基于查询的编译器
3.0本文探讨了当前流行的基于查询的编译器方法,指出了其潜在的风险和挑战,提醒开发者在采用这种技术时需要注意的问题。
JJ LSP 后续跟进
2.0本文介绍了在即将发布的LSP 3.18版本中,通过"Text Document Content Request"功能可以大幅简化JJ版本控制工具的Magit风格用户界面实现,使其不再需要复杂的变通方案。
共识棋盘游戏
2.0本文通过一系列图解帮助理解分布式共识算法,可作为《Paxos笔记》的补充插图,或将该笔记视为本文更正式的理论对应物。