中国有一句老话叫 Carpe diem 。2021 就这样没了,趁现在还有回忆,记点流水账吧。
年度书籍
如果只能有一本的话那就是《不朽》。如果可以有两本的话,那就加上《沙丘》吧。
书籍
下面是一个非详尽清单。我是通过比较多的方式阅读完这些书的。还没有整理出一个完整列表。我以为前面我看的用 goodreads 记下了阅读完成的时间。事实上我没有。
- Site Reliability Engineering: How Google Runs Production Systems
- Elixir in Action
- Graph Algorithms: Practical Examples in Apache Spark & Neo4j
- Linux System Programming: Talking Directly to the Kernel and C Library
- Computer Systems: A Programer’s Perspective
- Upward Spiral: Using Neuroscience to Reverse the Course of Depression, One Small Change at a Time
- 欧游杂记
- 华为数据之道
- 中国古代神话研究
- Linux Observability with BPF
- 二手时间
- The Art of Racing in the Rain
- 师从天才
- Tide Players: The Movers and Shakers of a Rising China
- Becoming a Technical Leader
- 孽海花
- 西西弗神话
- 克拉拉与太阳
- 到灯塔去
- 沙丘
- 孤独的价值
- 寻找光的旅程
- 少年维特的烦恼
- 我的人生几何
- 瞧,这个人
- 梅里美小说选
- 没有人给他写信的上校
- 与小泽征尔共度的午后音乐时光
- Depression: A Very Short Introduction
- “假如生活欺骗了你”–普希金诗选
- 高堡奇人
- 星尘
- 余英时访谈录
- 与Y教授谈心
- 病毒星球
- 不朽
- 给一个青年诗人的信
- 安珀志·上卷
- 海伯利安
- 海伯利安的陨落
- 安迪密恩
- 安迪密恩的崛起
- Peopleware: Productive Projects and Teams
- Missing Microbes: How the Overuse of Antibiotics Is Fueling Our Modern Plagues
- 儒林外史
- 醒世恒言
- 21 Lessons for the 21st Century
- 西方伪科学种种
- 恶之花
- 银河英雄传说
- 时空摆渡人
- In Search of Memory: The Emergence of a New Science of Mind
- Predictably Irrational
- Homo Deus: A Brief History of Tomorrow
- 我的脖子让我很不爽
- Folding Beijing
去过的地方
- 北京西山(包括阳台山、妙峰山、凤凰岭、白虎涧、香山、鹫峰,去过多次,见此)
- 平谷金海湖
- 延庆龙庆峡
- 北京园博园
- 五台山
- 殷墟和文峰塔
- 颐和园
- 泰山
- 孔庙、孔林、孔墓
- 嵩山
- 少林寺
- 云台山
- 林虑山
- 云冈石窟
- 龙门石窟
- 白马寺
- 天柱山
- 石林
- 昆明西山
- 鼓浪屿
- 镜泊湖、镜泊大峡谷
- 雁栖湖
- 慕田峪长城
- 红螺山
- 周口店北京人遗址
- 大足石刻
- 八奇洞
- 潭柘寺
险些去过的地方
- 火山口地下森林(说是下雪不让上山,投诉12345之后欢迎我去,不过我已经走了,欢迎我明年五一去)
- 澄江化石地(没顺风车,也没的士)
- 抚仙湖(同上)
- 天山天池(航班取消)
- 桂林(没核酸检测报告,不给登机牌,机场半日游)
- 门头沟天门山(太晚,不让上山)
- 房山世界地质公园(野三坡在河北,做核酸检测的地方中午没上班)
运动
- 爬山
- 羽毛球(较少)
- 滑翔伞(五天,飞了十次)
- 跑步
- 蹦极(如果非要说这也是运动)
证件
驾照
我终于有驾照了。这是我人生路上的一小步,也是我房车路上的一大步。
电影
今年看的下面这几部电影还行。
- Woman in the Dunes (1964)
- Dune (2020)
- The Father (2020)
- Drive my Car (2021)
代码贡献
今年几乎没有开源代码贡献。都是碰到问题时,如果可能的话,就帮助修复一下。碰到了一些 kubernetes 和 promeheus 的问题,后来发现是我自己的问题。碰到了需要给 rust 重复运行测试样例的问题,给 cargo 提了 pull request,不过维护者说要放到 libtest 里面,暂时没有跟进。给 Pomerium 修复了三个小问题。还给一些粗浅地研究过源代码的项目修复了一些小问题。有些项目在自己使用过程中发现的问题也直接帮忙修复了。比较开心的是因为 nix 在2.3停留了很久,在今年 nix 2.4发布的时候看到了我也算做了一点微小的工作(事实上都是去年改的)。另外给 fuchsia 提了12个 change requests,大部分是语法更正或者评论更新,已经有8个被接收了。
一些尝试
项目
今年最耗时的项目是我的 home lab. 这个项目花费了我不少时间,是一个典型的 over-engineered 项目。尽管如此,我感到非常高兴与自豪。
编辑器
试了 kakoune、helix。最终还是发现现阶段 neovim 更接地气。把配置改成使用 lua 了。
操作系统
plan 9
试了好多个衍生物,开发环境配置太麻烦了,从入门到放弃。
fuchsia
我已经又是谷粉了。真希望我能早一点了解 fuchsia。fuchsia 是一个非常值得学习的项目。原因如下:
- 文档齐全、工具完整。这对新手有非常大的好处。
- 实用的操作系统,fuchsia 并不是一个玩具,它是一个严肃的 endeavor。因此它会有很多工程上面的考量,有时候,这些是琐碎的细节,但有时候这些东西让我着迷。一个简单的例子是,移植一个“又不是不能用”的虚拟机不难,但是写一个性能强大的 wine for Linux on fuchsia 却需要考虑很多 tradeoff。怎么样去选择这些 tradeoff 是一件有意思的事情。
- 完整的探索环境。fuchsia 的开发者工具箱提供了编译、部署、运行、调试一条龙服务。我可以很方便地去探索是事物是怎么样工作的。我可以探索怎么样给 llvm、clang、rust 添加一个新的 target,我也可以探索 librt0 做了些什么事情,我可以探索网络协议栈都在干些什么。所有的这些东西,都可以在其他平台上面探索,但是它们不会是一个 fuchsia 一样紧密集成的环境。
- Designed from ground up. 没有历史包袱。一个例子是安全,见A few thoughts on Fuchsia security,另外一个是软件分发机制。这两个例子我们可以对照 Chromium OS 和 Android。Chromium OS 在最小化运行程序的权限上面做了很多工作(比如浏览器沙箱,Linux 虚拟机以及 minijail),而Android 在防止碎片化上面做了很多事情(比如核心服务模块化,很多接口放到 play services 里面)。Chromium OS 和 Android 这些努力都不能治本。这个幻灯片有一个很好的比喻——当总体设计出现问题的时候,用再多的技巧去弥补,也只会造成最终的灾难。
- 包管理系统。跟 nixos 一样,fuchsia 的包是 hermitic 的。与 nixos 不同的是,fuchsia 的 hermiticity 是天生的。nixos 为了保证 hermiticity 费了好大的劲(各种 hooks 如 patchelf,build with sandbox),而 fuchsia 的包天生就是 hermitic 的。这主要得益于 fuchsia 没有历史包袱。另一方面 fuchsia 的 blobfs 明显要比 nixos 的 binary cache 先进,它类似于 flox 的 fuse 文件系统。用户可以按需下载软件包。软件包就像一个网页一样,本地缓存只不过是能够提升用户体验。
- 权限系统。基于 capabilities 的权限管理,fuchsia 并不是首创(起码 L4 就已经有了,seL4 还把这个当作了一个卖点)。但是 fuchsia 很有可能是第一个被广泛使用的。
- inclusiveness。因为 zircon 用的是 c++,我之前不太想碰 fuchsia。了解了一些之后才发现 fuchsia 目前的大部分 user space 组件都是用 rust 来写的。fuchsia 有各种各样的 runner,比如说给 flutter 提供的 dart runner,给普通二进制的 elf runner,给 web 应用的 web runner。近来,本人开始向实用主义转型。希望多研究些问题,少谈些主义。不管什么语言,能够解决实际问题就是好语言。我比较比较认可 fuchsia 的理念。值得一提的是,客观来说 rust 就是比 cpp 强一万倍,go 就是个垃圾语言,谁写谁傻逼。
编程语言
在经历过 haskell、idris 的洗礼之后,我回过头来看了看动态类型语言。我本来以为了解过强大的类型系统会让我无法忍耐任何动态类型语言。但是我从 elixir 里面发现了很多有意思的点。让我感受感受最深的是 elixir 的实用性。elixir 没有太多的说教性的 ideological progonda。下面是看 Elixir in Actions 一书时随手记下的,没啥价值,不过先放到这里。Better imperfect than never!
elixir
Elixir in action. AKA The pragmatic programmer.
Pattern Matching
Factor through
Algebraic Data Type
Syntax sugars
pipeline
Lens, putin!
How I learned to stop worrying about underterminism and stop share anything
Actors aka Concurrent Objects
Parallalize Stateless workers
A poor man’s service discovery
Everything is a symbol
A poor man’s state monad
Dependency Injection
Serivce Discovery
Supervisor tree
Containerize
Systemd socket activation
Consensus
clojure
看了一点 The Joy of Clojure ,从入门到放弃。
TODO 音乐会
TODO 论文
走马观花看了一些论文。
TODO 文档
看代码太累了。以下是对我影响比较大多的项目的文档。
- kernel (大多数是先看 lwn )
- Chromium OS
其他
值得一提的是,今年The Marginalian给了我很大的帮助。
新年愿望
- 世界和平
- 新冠病毒消失
- 家人身体健康