ANTIMONY LABS · Sb · 51
too.foo 的 DNA
一页读懂整个工作坊,以及这里每个应用存在的理由。
一切的起点
就在那段日子里,一个习惯成形了,从此再没关掉过:遇到有意思的东西,就一钻到底。too.foo 就是这个习惯再加上几十年后的样子。这里的每个应用,都始于一个我爬不出来的兔子洞——写下来,是为了让下一个好奇的人也能掉进去。
这是什么
一个工作坊,不是作品集
too.foo 是同一屋檐下的几十个小网页应用。有的教东西:机器人学、计算机视觉、电子学。有的做模拟:金属板上驻定的波、一群自己摸索出规则的鸟。有的是纯粹的工具,还有的只是我想亲眼看看的东西。
它们之间没有什么主题,除了底下共通的那一个:认真对待好奇心,然后把它做出来,做到能上手摸。这里没有任何东西是关于某个想法的幻灯片。它就是那个想法本身——跑着的、带旋钮的。
你正在读的就是这扇大门,而它刻意用了和其他一切相同的零件来搭建。如果这个站点的其余部分还算不错,这一页现在就应该有那种感觉了。
为什么读起来是这种感觉
先有直觉,再有符号
大多数技术写作逼你在两个糟糕的选项里二选一:严谨但干巴,或者亲切但肤浅。教科书正确却读不下去;博客文章读得下去却错了一半。我想要第三种东西,这些应用就是我的尝试。它们背后只有一套方法。
一本书,而不是一部工具书
目标是做出你真心想读的东西,就像读一本好的科普书,不知不觉一个小时就没了。工具书回答你已经有的问题;书则把你不知道该问的问题递到你手里。这里的每一课都是为从头读到尾而写的,不是为了搜索和略读。
先有直觉,再有符号
没有任何一节是以方程开场的。想法先来,用平实的语言,配上一张图或一个你早已熟悉的类比。只有当你能感觉到一件事为什么必然成立时,数学才登场——而到那时,每个符号都已经挣得了自己的位置。数学不是直觉的反面。它是直觉在你足够信任它、敢把它写下来之后的样子。
你应该能亲手摸到它
读关于控制回路的文字,和把增益调得太高、看着整个系统抖起来,完全是两回事。所以几乎每一课都带着一个你能亲手开的小模拟。调它、弄坏它、把它推到设计范围之外。屏幕上的数字是真的,用的是真实单位,而它们动,是因为你动了它们。理解往往先经过双手,再晚一拍才到达脑子。
兔子洞才是重点
在每一课的核心周围,坐着乐趣的另一半:历史、最早看见它的那些人、古怪的事实、走不通的死路。这些不是装饰。正是它们把一份课程表变成一本书,也是你读完想读的部分之后还停不下来的原因。
一个问题
这一切背后只有一条检验标准,套在每个段落、每个演示、每张图上:这东西我自己想读吗?答案是否,就删掉或重写,再正确也一样。这把尺子又慢又有点无情,而它就是全部的方法。
应用即自传
每个应用都有自己的起源故事
这些没有一个是从路线图上挑下来的。每一个都是我真的掉进去、然后留下来的东西。把应用列表当成一份痴迷清单来读吧,顺序大致就是它们抓住我的先后。
完整的合集就在下面。点开任何一个应用,弹窗会告诉你是什么把我拽了进去,还附上再往里瞧一眼。
它是怎么做出来的
一个机器人工程师会认真记录的系统
我用系统思维思考,所以这个工作坊也被搭成了一个系统。这些都不是这个站点的重点,却是它能存在的原因:几十个应用靠一个人维持,只有当机器足够枯燥、足够可靠时才行得通。
一套技术栈,以及它弯折的地方
几乎每个应用都是同一套刻意选得很枯燥的技术栈:Astro、TypeScript 和 Tailwind,每个应用一个 Cloudflare Pages 项目,全部共享同一套设计令牌。正是枯燥,才让一个人养得活几十个应用。
有几个拒绝就范,而那些恰恰是最好玩的。当浏览器自己必须干重活时——一个实体建模内核、一个电路模拟器、一个波动求解器——应用就会下沉到编译成 WebAssembly 的 Rust,并搬进自己的仓库:mcad、ecad、chladni 和 evolution。还有一些把重活放到线下,只把结果流式送出,比如 quantum,它的轨道在 GPU 上解好,再当作数据端上来。但 DNA 在它们身上依然成立:同样的外观、同样的返回链接、同样的手感——哪怕底下的引擎毫无相似之处。
机器舰队
所有工作都跑在同一张私有网络上的一小批机器上。一个常开的小盒子守着所有秘密。一台带 GPU 的工作站干重活。另外几台负责存储、智能体,以及偶尔租来的一阵云端算力。
从想法到上线
每个改动走的都是同一条路。一个想法变成自己分支上的一个并行 worktree,智能体在那里把它造出来,一个用完即弃的预览在真实浏览器里证明它,只有合并进 main 才会把它发布到自己的子域名上。枯燥的路才是安全的路。
一支模型团队
真正动手搭建的是一支团队。一个操作员控制台把工作分派给好几个模型,每个模型都对准它最擅长的活儿,就像你会把任务交给各有所长的人一样。
One operator console, a team of models. Each gets the work it is best at.
哪些保密,哪些不保密
代码是私有的。公开的是形态和流程:舰队、流水线、工作的分法。你可以看到它是怎么做的,而不必看到每一行——这正是我记录任何真实系统的方式。
too.foo 的 DNA
为什么这一切像同一个东西
几十个应用,一个生命体。它们之间几乎不共享任何要紧的代码。它们共享的是一套基因组:同样的颜色、同样的字体、同样的平面质感、同一个角落里同样的返回链接,以及同样的执念——你应该能亲手开这个东西,而不是只读关于它的文字。
这些规则不是积灰的样式指南。它们活在测试里,所以任何一条规则都没法悄悄烂掉而不让某个地方亮起红灯。这套共享的基因组,就是 too.foo 的 DNA。每个应用都带着它——这也是为什么一个鸟群模拟器和一门机器人课,居然让人觉得出自同一个地方。
所有应用就在下面。挑一个,拉一下。
这些应用
点开任何一个,看看它为什么存在
每一个都始于一个兔子洞。点一块磁贴,看它背后的故事和顺便往里看一眼;如果它拽住了你,就打开它。