some software talks i like

Some software talks I like

我喜欢的一些软件技术演讲

there are lots of recorded software talks! i have seen some of them. like anything with high volume & high variance in quality (tiktok, music, etc), it’s often best to go through an intermediary for prefiltering. i will be your software talks filter today. 市面上有很多录制好的软件技术演讲!我看过其中一些。就像任何高产量且质量参差不齐的内容(如 TikTok、音乐等)一样,最好通过中介进行预筛选。今天,我将担任你们的软件演讲过滤器。

the type of talks i like are mostly about the craft of creating software, rather than any software itself: it’s way more interesting to me to talk about the metaphysics of ‘good abstraction’ vs ‘bad abstraction’ than about how you can deploy three kubernetes pods to serve 200 OK Hello, world! or whatever. 我喜欢的演讲类型大多关于软件创作的工艺,而非软件本身:对我而言,探讨“好的抽象”与“坏的抽象”背后的形而上学,远比讨论如何部署三个 Kubernetes Pod 来返回一个“200 OK Hello, world!”之类的东西要有趣得多。

i am, however, sorry that i’m about to mostly show you a bunch of dudes saying shit. it’s kind of just the demography of the field for now :/ 不过,很抱歉我接下来展示的大多是男性的演讲。这在目前看来只是该领域的人口统计现状 :/

a preface: programming is language is communication. what we are doing when we program is to communicate a mechanism to a machine and to each other. the best talks give us effective shorthands (nomenclature) for novel or rediscovered mental models. essentially: i’m joining the war on jargon on the side of jargon. but you gotta use effective jargon. 前言:编程即语言,即交流。当我们编程时,我们是在向机器以及彼此传达一种机制。最好的演讲能为我们提供有效且简练的术语,用于描述新颖或被重新发现的心智模型。本质上:我加入了“术语战争”,并且站在术语这一边。但你必须使用有效的术语。

also i have a super recency-biased sample of talks here because i’m baby. sorry. 另外,由于我还是个“新手”,这里选取的演讲样本具有极强的近因偏差。抱歉。


Simple made easy - Rich Hickey,于 Strange Loop 2011(链接)

Okay, so there’s this really cool word called “complect”. I love it, it means to interleave, or entwine, or braid. It happens to be an archaic word, but you know, there’re no rules that say you can’t start using them again. […] This is where complexity comes from! Right? Complecting! “有一个很酷的词叫‘complect’。我喜欢它,它的意思是交织、缠绕或编织。这恰好是一个古语,但你知道,没有任何规则规定你不能重新开始使用它们。[……] 这就是复杂性的来源!对吧?就是‘complecting’(交织)!”

a beautiful snipe for me specifically. rich datomic appeals to etymology: “simple” -> “sim-plex” -> “one fold/weave”; as opposed to “com-plex” -> “woven together”: complexity arises when concepts are entangled, and incidental complexity arises when concepts which should be independent are entangled. 这对我来说是一次绝妙的狙击。Rich Datomic 诉诸词源学:“simple”源自“sim-plex”,意为“一折/一织”;而“com-plex”意为“编织在一起”:当概念纠缠在一起时,复杂性就产生了;而当本应独立的概念被纠缠在一起时,偶然的复杂性(incidental complexity)就产生了。


The Complexity of Simplicity - Bryan Cantrill,于 TalosCon 2025(链接)

When you have accidental complexity at one layer of the stack, it can explode: That accidental complexity can become the essential complexity of someone trying to build on top of you. […] We don’t realize how contagious complexity can be. “当你在技术栈的某一层存在偶然的复杂性(accidental complexity)时,它可能会爆炸:这种偶然的复杂性会成为在你之上构建系统的人的本质复杂性。[……] 我们没有意识到复杂性是多么具有传染性。”

bmc dtrace proposes a taxonomy of systems on two axes: from “simple” to “complex” and from “engineered” to “emergent”. this works out to a matrix of “constructed” (complex, engineered), “rebellious” (simple, emergent), “accreted” (complex, emergent), and “revolutionary” (simple, engineered). this is like, such a good framework for thinking about your dependencies, rivals, and favorite systems. BMC DTrace 在两个维度上提出了系统的分类法:从“简单”到“复杂”,以及从“工程化”到“涌现”。这形成了一个矩阵:“构建型”(复杂、工程化)、“反叛型”(简单、涌现)、“累积型”(复杂、涌现)和“革命型”(简单、工程化)。这对于思考你的依赖项、竞争对手和你最喜欢的系统来说,是一个非常好的框架。


Programming is Forgetting: Toward a new hacker ethic - Allison Parrish,于 OSHW Summit 2016(链接)

Bias in computer systems exists because every computer program is, by necessity, written from a particular point of view. […] The process of computer programming is taking the world, which is infinitely variable, mysterious, and unknowable, and turning it into procedures and data. We have a number of different names for this process: scanning, sampling, digitizing, transcribing, schematizing, programming; but the result is the same: the world […] is reduced to the repeatable and the discrete. “计算机系统中的偏见之所以存在,是因为每个计算机程序必然都是从特定的视角编写的。[……] 计算机编程的过程就是将无限多变、神秘且不可知的世界,转化为程序和数据。我们对这个过程有许多不同的称呼:扫描、采样、数字化、转录、图式化、编程;但结果是一样的:世界[……]被简化为可重复和离散的事物。”

aparrish kills it. i think this reframing of abstraction as quantization (deliberate forgetting) is super interesting - who are you excluding when you codify your point of view into your software? Aparrish 讲得太棒了。我认为将抽象重新定义为量化(刻意的遗忘)非常有趣——当你将自己的观点编码进软件时,你排除了谁?


Steel, Rust, and truth - Steve Klabnik,于 Bug Bash 2026(链接)

for like, people who are supposed to be very rationally- & scientific-minded literally everyone has so many feelings right now. steve oomf basically frenetically calms you. he confronts the anxiety of labor displacement and alienation in software engineering apropos of AI, and parallels it with Pittsburgh’s reinvention wrt the waxing and waning of the steel industry. 对于那些本应非常理性且具有科学头脑的人来说,现在每个人确实都有很多情绪。Steve 基本上是在疯狂地安抚你。他面对 AI 带来的软件工程中的劳动力流失和异化焦虑,并将其与匹兹堡在钢铁工业兴衰中的重塑进行了类比。

the talk is also about how we can ever know machine-authored software is correct. and like, what even is correctness?? also he (duly!) says “weird” a bunch of times. shit is weird right now i get it. 这场演讲还探讨了我们如何才能知道机器编写的软件是正确的。而且,到底什么是正确性??另外,他(理所当然地!)说了好几次“怪异”。现在的情况确实很怪异,我懂。


Don’t take the black pill! - Andrew Kelley,于 Software Should Work 2026(链接)

As technologists, our role is to accelerate humanity along its current trajectory. The same technology can be a force for good or for evil, depending on who wields it. […] Thus, if humanity is good, then technology is good. And if humanity is evil, then technology is evil. This is why we must believe that humanity is generally good. Otherwise, what are we even doing? “作为技术人员,我们的角色是加速人类沿着当前的轨迹前进。同样的技术既可以是向善的力量,也可以是作恶的力量,取决于谁在使用它。[……] 因此,如果人类是善良的,那么技术就是善良的。如果人类是邪恶的,那么技术就是邪恶的。这就是为什么我们必须相信人类总体上是善良的。否则,我们到底在做什么?”

andrewrk ziglang closes this talk out by saying “we will defeat those who use computers for coercion”. i don’t have much to add, it’s really good. if you need hope you can get it here. i think i cried? when i was thinking about Stanislav Petrov again… it must have been the day i did my estrogen shot lol. Andrewrk (Zig 语言作者) 在演讲结尾说:“我们将击败那些利用计算机进行胁迫的人。”我没什么可补充的,这真的很棒。如果你需要希望,可以在这里找到。我想我哭了?当我再次想到斯坦尼斯拉夫·彼得罗夫时……那一定是我打雌激素针的那天,哈哈。


Solving the right problems - Mike Acton,于 Tehran Game Convention 2017(链接)

I’m not engineering in an imaginary fairy tale land, right? I’m not engineering for an abstract model that’s running on an abstract piece of hardware, telling an abstract story. I’m specifically building a game that needs to run on a specific, finite set of hardware, and it needs to be done in this specific amount of time in this specific amount of money, right? There’s a reality that we need to actually build for. […] The more context we have, the better we can solve the problem, so we need to be working in more context, not in less context. I think this is a trap for programmers in general, is they try to remove context. “我不是在虚构的童话世界里做工程,对吧?我不是在为一个运行在抽象硬件上、讲述抽象故事的抽象模型做工程。我是在专门构建一个游戏,它需要在特定的、有限的硬件集上运行,并且需要在特定的时间内、用特定的资金完成,对吧?我们需要为现实而构建。[……] 我们拥有的背景信息越多,解决问题的能力就越强,所以我们需要在更多的背景下工作,而不是更少。我认为这对程序员来说是一个普遍的陷阱,他们总是试图去除背景。”

Mike Insomniacgames starts by crucifying a bunch of common advice, and then focuses on outlining general, practical problem-solving skills for game engine programmers. it’s really good to hold this one in tension with every other talk you may watch. Mike (来自 Insomniac Games) 首先批判了一堆常见的建议,然后专注于为游戏引擎程序员概述通用的、实用的解决问题技巧。将这个演讲与你可能观看的其他任何演讲放在一起对比思考,是非常有益的。