Linguista

「Wolfram」追求高效生活:我个人基础设施的一些细节

本文亦刊登于: SoundCloud »

阅读斯蒂芬·沃尔夫拉姆 (Stephen Wolfram) 关于本文的 Reddit AMA(问我任何问题)»

斯蒂芬·沃尔夫拉姆的个人基础设施

追求生产力

我只有在感觉自己富有成效时才会感到满足。我喜欢弄清楚事情。我喜欢创造事物。我希望能尽可能多地做这些事。而能够做到这一点,部分原因在于我拥有最好的个人基础设施。多年来,我一直在为自己稳步积累和实施“个人基础设施秘诀”。是的,其中一些相当极客。但它们确实帮助我提高了生产力。也许随着时间的推移,它们中会有越来越多成为主流,就像少数几个已经实现的那样。

当然,我为全世界构建的一个巨大的“生产力秘诀”,是围绕 Wolfram 语言 的整个 技术栈,这已经持续了很长时间。而对我个人而言,另一个巨大的“生产力秘诀”是我在 32 年多前创立的公司。是的,它本可以(也应该)更大,拥有更广阔的商业影响力。但作为一个拥有约 800 名员工、组织良好的私营公司,它是一个将想法转化为现实的极其高效的机器,能够充分利用我的技能,极大地放大我的个人生产力。

我可以谈谈我如何领导我的生活,以及我如何平衡领导工作、创意工作、与人互动以及让我学习的事物。我可以谈谈我如何努力设置事物,以便我已有的成就不会让我过于繁忙以至于无法开始任何新的项目。但我在这里将重点放在我更实际的个人基础设施上:那些帮助我更好地生活和工作、感觉不那么忙碌、每天更具生产力的技术和其他事物。

在思想层面上,构建这个基础设施的关键是尽可能地结构化、精简和自动化一切——同时认识到当前技术的现实性,以及什么适合我个人。从很多方面来看,这是一项很好的实践练习,是的,也是我花费如此长时间构建的一些工具和想法的绝佳应用。其中大部分可能对很多其他人也有帮助;而有些则相当针对我的个性、我的处境和我的活动模式

我的日常生活

为了解释我的个人基础设施,我首先需要介绍一下我的日常生活。有一件事经常让人惊讶,那就是我在过去 28 年中一直是一名远程首席执行官。我是一个亲力亲为的首席执行官。但我每年只“在办公室”实体出现几次。大部分时间我都在家,以极高的强度与公司互动——但完全通过现代虚拟方式:

斯蒂芬在办公桌前挥手

我是那种不仅管理他人做事,自己也做很多事情的首席执行官之一。作为一名远程首席执行官帮助我实现了这一点,并保持专注。部分受到我的影响,我们公司已经发展出一种非常分散的文化,员工分散在世界各地工作(重点是富有成效,而不是“按时打卡”):

Wolfram 员工

不过,在我的办公桌前,我对这一切的基本视图是这样的:

双显示器

它总是以相同的方式设置。右侧是我的主要“公共显示屏”监视器,我一天中的大部分时间都会与交谈的人进行屏幕共享。左侧是我的辅助“私人显示屏”监视器,上面有我的电子邮件、消息和其他与我正在进行的会议不直接相关的内容。

在过去一年左右的时间里,我一直在直播我们的许多软件设计会议——现在有 250 小时的屏幕共享存档,全部来自我的右侧显示器。

特别是因为我每天大部分时间都在办公桌前,我试图优化其人体工学。键盘处于最佳打字高度。显示器的高度——尤其是考虑到我的“电脑距离”多焦点眼镜——迫使我在看它们时头部保持在一个良好的位置,而不是驼背。我仍然使用“滚轮”鼠标(在左侧,因为我是左撇子)——因为至少根据我最新的测量,我使用它比使用任何其他指向技术都要快。

只需按一下按钮,我的办公桌就可以升高到站立高度:

站立式办公桌

但是,虽然站立可能比坐着好,但我喜欢至少以更积极的方式开始我的一天,而且十多年来,我一直确保每天早上步行一两个小时。但是,在我走路的时候如何保持生产力呢?大约 15 年前(也就是在它流行之前很久!),我在办公室旁边的房间里安装了一台带电脑的跑步机:

跑步机 GIF

生物力学并不难解决。我发现,通过在手腕下方的正确支点放置一条凝胶条(并将鼠标放在一个平台上),我可以一边走路一边舒适地打字。我通常使用 5% 的坡度,以 2 英里/小时的速度行走——而且我的体能至少足以让我在会议中说话时,没有人能听出我正在走路。(是的,我试着把那些潜在令人沮丧的会议安排在我的步行时间,这样如果我真的感到沮丧,我就可以通过让跑步机走快一点来“走掉”它。)

多年来,我一直保留着各种关于我自己的个人分析数据,过去几年这包括连续的心率数据。去年初夏,我注意到我的静息心率在两周内明显下降了。起初我以为只是因为我那时恰好系统地在做我喜欢的事情。但夏末,它又发生了。然后我意识到:那些时候我没有在室内跑步机上走路;相反(出于不同的原因),我是在户外走路

多年来,我的妻子一直在赞美在户外度过时光的好处。但这对我来说似乎从来都不太实际。是的,我可以打电话(或者在极少数情况下,真的和一起走路的人交谈)。或者我可以边走路边用平板电脑,也许看看别人的屏幕共享——就像去年夏末我在度假期间所做的那样,姿势有点不雅观:

户外使用 iPad

我实际上已经考虑走路和工作很长时间了。二十年前,我曾设想使用增强现实显示屏和单手(和弦)键盘来实现。但技术没有到来,我甚至不确定人体工学是否可行(例如,它会不会让我晕动症?)。

但后来,去年春天,我参加了一个豪华技术活动,我碰巧不在一张合影机会的画面内,这张照片涉及杰夫·贝佐斯(Jeff Bezos)牵着一只机器狗走路。我对机器狗本身并没有那么兴奋。但真正引起我兴趣的是画面另一边走出的人,他正全神贯注地控制着机器狗——他像卖爆米花一样把一台笔记本电脑绑在身前。

一个人真的能这样工作,包括打字和所有的一切吗?在我的“心率发现”之后,我决定我必须尝试一下。我以为我必须自己动手制作,但实际上可以直接购买“行走桌”,所以我买了。经过小的修改,我发现我可以很好地一边走路一边打字,甚至可以持续一两个小时。我为自己 20 年前没有想到这么简单的解决方案而感到不好意思。但从去年秋天开始——只要天气好——我都会尝试每天花一两个小时像这样在户外走路:

爆米花贩售架式装备

即使我全神贯注于我的电脑,在户外感觉也很好——而且,是的,这似乎让我的静息心率下降了。而且我似乎有足够的周边视觉——或者也许我只是在“足够简单”的环境中行走——以至于即使我没有有意识地注意,我也没有绊倒。毫无疑问,这得益于我大部分时间没有在公共场所行走,所以周围没有人。当然,这也意味着我没有机会受到那种好奇的目光,就像我 1987 年第一次拿着鞋子大小的手机走在城市街道上打电话时所受到的那样……

我的办公桌环境

我使用同一张大木桌已经有 25 年了。不用说,我在建造它时加入了一些特殊功能。我的个人组织理论之一是,任何平面都代表了一个潜在的“停滞点”,它会倾向于堆积成堆的东西——避免这种堆积的最好方法就是避免拥有永久性的平面。但不可避免地需要一些平面,哪怕只是用来签名(毕竟还没有完全数字化),或者吃点零食。所以我的解决方案是使用拉出式面板。如果需要它们,就拉出来。但不能让它们一直拉着,这样上面就不会积累任何东西:

额外的办公桌表面

现在我很少处理纸质文件。但无论何时有东西来到我的桌子上,我都喜欢把它归档。所以在我的桌子后面有一排抽屉——有一个小窍门,就是在每个抽屉的顶部有一个槽口,允许我立即将东西滑入抽屉,而无需打开它:

抽屉

我以前每隔几个月就会用归档的文件装满一个档案盒;现在似乎需要几年时间。或许作为一个我变得多么无纸化的标志,我的桌子下面有一台打印机,我使用它的频率如此之低,以至于我现在似乎每隔一年左右才用完一叠纸。

多年来,还有其他事情发生了变化。我总是希望我的主计算机尽可能强大。多年来,这意味着它必须有一个大风扇来散热。但由于我真的很喜欢我的办公室保持完全安静(它增加了一种有助于我集中注意力的平静感),我不得不将计算机的 CPU 部分放在另一个房间。为了实现这一点,我在地板上安装了一个导管,我必须穿过通常很挑剔的长距离视频线。好吧,现在,我终于有了一台不需要大风扇的强大计算机——所以我只是把它放在我的桌子后面。(实际上,我还有三台不太安静的计算机放在跑步机所在的房间里,这样当我在跑步机上时,我就可以体验所有三种主要的现代计算环境,并通过一个 KVM 切换器 在它们之间进行选择。)

当我向人们提到我是一名远程首席执行官时,他们经常说:“你一定做了很多视频会议。”嗯,实际上,我基本上不做视频会议。屏幕共享很棒,而且至关重要。但通常我觉得视频让人分心。我经常会开一个有很多人的会议,以防我们需要他们的意见。但在会议的大部分时间里,我不需要他们所有人都集中注意力(如果他们在做其他工作,我很高兴)。但如果视频开着,看到不集中注意力的人似乎会本能地破坏几乎任何会议的气氛。

鉴于我不使用视频,音频非常重要,而且我对会议中的音频质量非常讲究。不用扬声器电话。没有糟糕的手机连接。我本人仍然很老派。我戴着一个带有标准悬臂麦克风的头戴式耳机(增加了衬垫以弥补我头顶头发的稀疏)。而且——部分出于对我整天将无线电发射器放在头边的小心——我的耳机是有线的,尽管线很长,可以让我绕着我的办公室走动。

尽管我不在会议中使用“说话者头像”视频,但我的电脑旁边确实有一个文档摄像机。我使用它的一个时机是当我们讨论手机或平板电脑时。是的,我可以将它们的视频直接连接到我的电脑中。但如果我们在讨论手机上的用户体验,能够实际看到我的手指物理触摸手机通常会很有帮助。

当我想展示实体书中的页面或各种文物时,文档摄像机也派得上用场。当我想画一些简单的东西时,我会使用我们的屏幕共享系统的注释功能。但当我想画一些更复杂的东西时,我通常会做复古的事情,把一张纸放在文档摄像机下面,然后只用一支笔。我喜欢文档摄像机传来的图像出现在我屏幕上的一个窗口中,我可以随心所欲地调整大小。(我定期尝试使用绘图平板,但我不喜欢它们将我的整个屏幕视为画布,而不是在一个我可以移动的窗口中操作的方式。)

在路上

从某些方面来说,我的生活很简单,大部分时间都在我的办公桌前。但有很多时候我会离开我的办公桌——比如当我在房子的其他地方,或者在户外走路时。在那些情况下,我通常会带一台 13 英寸的笔记本电脑来使用。如果我去更远的地方,事情就会变得复杂一些。

如果我要做认真的工作,或者发表演讲,我会带上 13 英寸的笔记本电脑。但我从不喜欢没有电脑,而 13 英寸的笔记本电脑携带起来很重。所以我还有一台只有 2 磅重的小笔记本电脑,我把它放在一个小包里(不用说,包和电脑都装饰着我们的 Spikey 图标):

Spikey 包

而且至少在过去几年里——除非我带着更大的电脑,通常放在背包里——我都会“背着”我的小电脑去任何地方。我最初想要一个电脑可以完全放进去的包,但我能找到的最好的包是电脑会稍微露出来一点的。然而令我惊讶的是,这运行得很好。而且当我与某人交谈时,我快速地“拔出”我的电脑,他们看起来很困惑,问:“这东西是从哪里来的?”这肯定很有趣。

我的口袋里总是有我的手机,如果只有片刻时间,我就会把它拿出来。如果我只是查看邮件,删除或转发一些消息,它工作得很好。但是如果我真的想写一些严肃的东西,我的小电脑就会拿出来,带着它的全键盘。当然,如果我站着,试图用一只手平衡电脑,用另一只手打字是非常不切实际的。有时如果我知道我要站一会儿,我会带一个平板电脑。但在其他时候,我就只能用我的手机了。如果我用完了当前可以有用地做的事情(或者我没有互联网连接),我通常会开始查看我维护在所有设备上同步的“待阅读”文件夹。

早在 2007 年,我发明了 WolframTones,因为我想为我的手机拥有一个独特的铃声。但是,尽管 WolframTones 作为算法音乐创作的例子取得了成功,但在我的手机上唯一的痕迹是我用作主屏幕的 WolframTones 作品的图像:

手机主屏幕

当我在“外面”时,我如何做笔记?我尝试了各种技术解决方案,但最终没有一个被证明既实用又被社会普遍接受。所以我坚持做了 40 年同样的事情:我的口袋里有一支笔,以及一张折叠了三次的纸(大小约为信用卡大小)。它技术含量很低,但它有效。当我从外面回来时,我总是花一些时间抄录我写下的东西,发送电子邮件,或做其他事情。

我带着我的小“技术生存工具包”。这是我背包里目前的内容:

技术生存工具包

核心是一个微型充电器,它通过 USB-C 为我的电脑充电,并为我的手机充电。我带了各种连接器,特别是这样我就可以连接到像投影仪这样的设备。我还带了一个非常轻的 2 转 3 孔电源适配器,这样我的充电器就不会从过度使用的电源插座中掉出来。

当我要进行“更严肃的探险”时,我会往工具包里添加一些东西:

严肃探险工具包

有一个“充电砖”(不幸的是现在供应短缺),它可以让我的电脑运行很多小时。对于像贸易展这样的活动,我会带一个微型相机,它每 30 秒拍一张照片,这样我就可以记住我看到了什么。如果我真的要进入荒野,我还会带一部卫星电话。(当然,我总是有其他东西,比如一顶非常薄而软的帽子、一个轻便的潜水布袋中袋、眼镜湿巾、洗手液、驱蚊湿巾、名片、巧克力块等。)

为了在旅行中保持井井有条,我通常会打包几个塑料信封:

信封

在“演示”中,会有我需要连接到投影仪的适配器(VGA、HDMI 等)。有时会有一个有线以太网适配器。(对于非常低调的演示,我有时也会带一个微型投影仪。)在“汽车”中,会有一部可以作为 GPS 使用的第二部手机,背面有磁性,还有一个连接到汽车通风口的微小配件。会有一个单耳耳机、一个手机充电器,有时还有一个用于我电脑的微型逆变器。如果我带卫星电话,还会有一个车载套件,带有一个磁吸在车顶上的天线,这样它就可以“看到”卫星。在“酒店”中,会有一个双耳耳机、第二个电脑充电器,以及一个包含我的电脑加密备份的磁盘,以防我丢失电脑而不得不购买和配置一台新机器。第四个塑料信封用于存放我在旅途中得到的东西,它里面有小信封——大约每天一个——我把名片放进去。

多年前,我总是带着一个小小的白噪音风扇,以掩盖背景噪音,尤其是在晚上。但在某个时候,我意识到我不需要一个物理风扇,而是我有一个模拟它的应用程序(我以前使用粉红噪音,但现在我只使用“空调声音”)。预测一个人将要遇到的外部噪音(比如第二天早上)会有多大,以及应该将掩蔽声音设置得多大,通常是一个挑战。而且,实际上,在我写这篇文章时,我意识到我应该使用 Wolfram 语言中的现代音频处理来监听外部声音,并调整掩蔽声音以覆盖它们。

我旅行时需要的另一件东西是时钟。现在它只是在我电脑上运行的一段 Wolfram 语言代码。但因为它是软件,它可以有一些额外的功能。我总是将我的电脑保留在我家的时区,所以“时钟”有一个滑块来指定当地时间(是的,如果我再次处于半小时时区,我将不得不调整代码)。它还有一个“启动睡眠计时器”按钮。当我按下它时,它会启动一个向上计时的计时器,让我看到我已经睡了多久,无论我的生物钟怎么说。(“启动睡眠计时器”也会发送一封电子邮件,让我的助理知道我是否能赶上第二天早上很早的会议。右上方“鼠标角”是一个黑客,用于防止电脑进入睡眠状态。)

只要实际可行,我喜欢自己开车去一些地方。在手机出现之前,情况就不同了。但现在如果我开车,我就可以高效地打一个电话。我会将那些不需要我查看任何东西的会议安排在我的“开车时间”(是的,我的手机里编程了标准的电话会议号码,这样我就可以语音拨号)。我维护了一个“开车时通话”的通话列表,特别是如果我在一个对我来说不寻常的时区,我就可以在开车时进行这些通话。

我一直有一个问题,如果我试图在别人开车时在电脑上工作,我会晕车。我以为我尝试了所有方法。大车。小车。硬悬挂。软悬挂。前座。后座。都没有用。但几年前,纯属偶然,我尝试戴着大型降噪耳机听音乐——结果我没有晕车。但是如果在我被载着的时候,我想一边打电话一边使用我的电脑怎么办?好吧,在 2018 年的 消费电子展 上,尽管我的儿子告诫我“仅仅因为你不知道他们在摊位上卖什么并不意味着它有趣”,我还是在一个摊位停了下来,并得到了这些奇怪的物体,它们看起来有点奇怪,但对我来说,它们似乎确实能预防晕车,至少大部分时间是这样:

发表演讲

我发表了相当多的演讲——面向各种各样的听众。我特别喜欢谈论我以前没有谈论过的主题。我向最豪华的商业、技术和科学团体发表演讲。我向学童发表演讲。我喜欢与听众互动(问答环节永远是我最喜欢的部分),我喜欢即兴发挥。而且我基本上总是会进行实时编程(livecoding)。

当我年轻时,我旅行得相当多。即使早在 1980 年代,我也有便携式电脑(我的第一台是 1981 年的 Osborne 1),尽管在那些日子里,我保持电脑生产力的唯一方法是运送 工作站电脑 到我的目的地。然后在 1990 年代初,我决定不再旅行了(尤其是我当时正全神贯注于 《一种新科学》 的写作)。所以有一段时间我基本上没有发表演讲。但后来技术进步了。通过视频会议发表演讲开始变得现实。

我经历了数代技术,但多年前,我在我的地下室建立了一个视频会议设置。“布景”可以以各种方式重新配置(讲台、桌子等)。但我基本上有一个背投屏幕,我可以在上面看到远处的听众。摄像机在屏幕前面,位置摆放好,让我可以直接看着它。如果我使用笔记或讲稿(实际上很少),我有一个自制的提词器,它由一块半镀银镜子和一台笔记本电脑组成,我可以透过它看着摄像机。

虽然在我进行实时编程时,从技术上讲,我可以直视摄像机,但这会让听众看起来我正盯着太空发呆,这很奇怪。当我明显地看着屏幕时,最好稍微向下看。事实上,在某些设置中,让听众看到屏幕底部有一台电脑的顶部是很好的,这样可以“解释”我在看什么。

视频会议演讲在许多场合都运行良好(而且,为了增加一些乐趣,我有时会使用一个远程呈现机器人)。但近年来(部分原因是我的孩子们想和我一起做),我决定旅行是可以的——而且我去过很多地方:

环游世界

我通常会发表演讲——通常每天不止一次。我逐渐制定了一份详细的清单来确保它们能顺利进行。一个高度合适的讲台,足够水平,让我可以在我的电脑上轻松打字(最好不要太大,以免我被听众看不到)。一个可连接的麦克风,让我的双手可以自由打字。一个能让我连接到我们服务器的网络连接。当然,为了让听众真正看到东西,还需要一个电脑投影仪。

我记得我使用的第一个电脑投影仪,在 1980 年。它是一个 休斯“液晶光阀”,一旦我把它连接到一个 CRT 终端,它工作得非常漂亮。从那以后的几年里,我在世界各地都使用过电脑投影仪,无论是在最豪华的视听环境中,还是在基础设施陈旧、设备古老的偏远地区。而且它令人惊讶地随机。在你无法想象投影仪能工作的地方,它会运行得很好。而在你无法想象它会失败的地方,它会糟糕地失败。

几年前,我在 TED 上发表演讲——使用了一些我见过的最豪华的视听设备。而那正是事情糟糕地失败的地方之一。幸运的是,我们提前一天进行了测试。但花了整整三个小时才让这台顶级的电脑投影仪成功地投影出我的电脑屏幕。

正是由于那次经历,我决定我最好真正了解电脑是如何与投影仪通信的。这是一个复杂的业务,涉及到让电脑和投影仪协商以找到一个对两者都有效的分辨率、宽高比、帧速率等。在底层,有一些称为 EDID 字符串 的东西被交换,而这些通常就是出问题的地方。近年来,电脑操作系统在处理这方面做得更好了,但对于高知名度、高制作价值的活动,我有一个小盒子,可以欺骗 EDID 字符串,强迫我的电脑发送特定的信号,而不管投影仪似乎在要求什么。

我发表的一些演讲是完全即兴的。但我通常会有笔记——偶尔甚至有讲稿。我总是用一个 Wolfram 笔记本 来写这些。然后我有代码可以对它们进行“分页”,基本上在每页末尾复制“段落”,这样我就可以自由地决定何时“翻页”。在过去几年里,我常常将这些笔记转移到一个 iPad 上,我将其设置为每当我触摸屏幕时就“翻页”。但近年来,我实际上只是同步文件,并使用我的小电脑来做笔记——这样做的好处是,我可以一直编辑它们直到我开始演讲的那一刻。

除了笔记之外,我有时还会准备一些我希望立即在演讲中引入的材料。现在我们有了新的 演示者工具系统,我可能会开始创建更多类似幻灯片展示的材料。但这不是我传统上的工作方式。相反,我通常会准备一段特定的 Wolfram 语言 代码,我想输入它,而无需花费时间显式地输入。或者我可能想从一个“幻灯片库”中挑选一张图片,并立即将其放在屏幕上,例如作为对某个问题的回应。(在像细胞自动机幻灯片中,投影仪分辨率有很多技巧,因为除非它们是“像素完美”的,否则它们会失真——仅仅像典型的幻灯片软件那样缩放是不够的。)

那么,我如何处理引入这些材料呢?好吧,我的电脑连接了第二个显示器——它的图像没有被投影。(是的,这可能会导致 EDID 字符串的可怕纠缠。)然后,在这个第二个显示器上,我可以放置可以点击或复制的东西。(我有一个 Wolfram 语言函数,它会接收一个包含输入和 URL 的笔记本,并为我创建一个调色板,我可以点击它来输入、打开网页等。)

过去,我们曾经有一个小型的第二台显示器连接到我的笔记本电脑——本质上是一个脱离了的笔记本电脑屏幕。但是,要将它和投影仪都连接到我的笔记本电脑上,需要各种复杂的修补(有时一个是 USB,一个是 HDMI 等)。但现在我们可以直接使用 iPad——而且这完全是纯软件(尽管与投影仪的互动仍然可能很挑剔):

讲台

有一段时间,为了时尚,我使用了一台电脑,它的外壳上刻有一个 Spikey,并且带有背光。但里面的小菱形有点脆弱,所以现在我主要在我的电脑上使用“Spikey 皮肤”:

Spikey 笔记本电脑

我的文件系统

我整天使用的三个主要应用程序是 Wolfram Desktop、网页浏览器和电子邮件。我的主要工作方式是创建(或编辑)Wolfram 笔记本。这是我今天处理的一些笔记本:

正在处理的笔记本

在一个顺利的日子里,我会在 Wolfram 笔记本中输入至少 25,000 个字符(是的,我记录了我所有的按键)。我总是将我的笔记本组织成节和子节等(这在分层单元格中非常方便地自动存在)。有时我会在笔记本中主要写文本。有时我会从其他地方截屏并粘贴进去,作为一种记笔记的方式。根据我正在做的事情,我也会在笔记本中实际进行计算,输入 Wolfram 语言输入,获取结果等。

多年来,我已经积累了超过十万个笔记本,代表着产品设计、计划、研究、写作,以及基本上我所做的一切。所有这些笔记本最终都存储在我的文件系统中(是的,我与云同步、使用云文件和文件服务器等)。而且我费心保持我的文件系统井井有条——结果是,我通常只需通过导航我的文件系统就能找到我正在寻找的任何笔记本,比我构思搜索查询更快。

我相信我第一次认真思考如何组织我的文件是在 1978 年(那也是我开始使用 Unix 操作系统的时候)。在过去的 40 年里,我基本上经历了五代文件系统组织,每一代基本上都反映了我在那个阶段如何组织我的工作。

例如,在我撰写我的巨著 《一种新科学》 的 1991 年至 2002 年期间,我的文件系统的一个重要部分是简单地按照书的章节组织的:

Finder 窗口

而且非常令人满意的是,今天我可以立即从,比如说,在线版书中的一张图片,找到创建它的笔记本(而且 Wolfram 语言的稳定性意味着我可以立即再次运行笔记本中的代码——尽管有时现在可以用更精简的方式编写)。

书的章节基本上都放在我的“第三代”文件系统的 NewScience/Book/Layout/ 文件夹中。该文件系统的另一部分是 NewScience/BookResearch/Topics。在这个文件夹中,大约有 60 个子文件夹,以我在撰写这本书时研究的广泛主题命名。在这些文件夹中的每一个中,又有更进一步的子文件夹,用于我在研究这些主题时所做的特定项目——这些项目通常随后变成了书中的特定章节或注释。

我对计算机文件系统的一些思考源于我 1970 年代和 1980 年代使用物理文件系统的经验。在我青少年时期做物理研究时,我贪婪地复印论文。起初,我认为归档这些论文的最佳方式是分成许多不同的类别,每个类别存储在一个不同的物理文件夹中。我认真思考了这些类别,常常对自己将特定论文与特定类别关联的巧妙感到非常满意。我的原则是,如果一个类别中积累了太多论文,我就应该将其分解成新的类别。

这一切起初看起来是个好主意。但很快我就意识到不是。因为当我想要找到一篇特定的论文时,我常常搞不清楚是哪种巧妙的方法导致我将它与哪个类别关联起来了。结果是我完全改变了我的方法。我不再坚持使用狭窄的类别,而是允许使用广泛、笼统的类别——结果是我可以很容易地将 50 篇或更多的论文归档在一个类别中(通常一个类别会对应多个装得鼓鼓的物理文件夹):

抽屉里的文件夹

是的,这意味着我有时不得不翻阅 50 篇或更多的论文才能找到我想要的那一篇。但实际上这不会花费超过几分钟。即使这种情况每天发生几次,这仍然是一个巨大的胜利,因为这意味着我可以真正成功地找到我想要的东西。

对于我今天计算机文件系统的一部分,我也有几乎相同的原则。例如,当我收集关于某个主题的研究资料时,我只会把所有资料扔到一个以该主题命名的文件夹中。有时我甚至会这样做很多年。然后,当我准备好研究该主题时,我就会浏览该文件夹,挑出我想要的东西。

现在我的文件系统分为活动部分(我持续同步到我的所有计算机上),和更具存档性质的部分,我将其保存在一个中央文件服务器上(例如,它包含我旧版本的文件系统)。

我的活动文件系统中只有少数几个顶级文件夹。一个叫做 Events(事件)。它的子文件夹是年份。在每一年内,我都会为我参加的每一个外部事件设置一个文件夹。在该文件夹中,我将存储关于该事件的材料、我在那里演讲时使用的笔记本、我在活动中做的笔记等。由于在给定的一年内我不会参加超过大约 50 个活动,因此很容易浏览某一年的 Events 文件夹,找到特定事件的文件夹。

另一个顶级文件夹叫做 Designs(设计)。它包含了我关于 Wolfram 语言和我们正在构建的其他东西的设计工作的所有笔记。现在有大约 150 个关于不同活跃设计领域的文件夹。但还有一个叫做 ARCHIVES(归档)的文件夹,它包含关于早期不再活跃的领域的文件夹。

事实上,这是我的面向项目的文件系统中的一个通用原则。每个文件夹都有一个名为 ARCHIVES 的子文件夹。我努力确保主文件夹中的文件(或子文件夹)总是处于某种活跃或待处理的状态;任何已经完成的事情我都放入 ARCHIVES 中。(我将其名称大写,以便在目录列表中突出显示。)

对于大多数项目,我再也不会查看 ARCHIVES 中的任何东西。但当然,如果我想,很容易就能做到。而且容易做到这一点很重要,因为它意味着我不会有“这已经完成了;让我们把它放入 ARCHIVES”的困扰,即使我认为它有可能再次活跃起来。

碰巧的是,这种方法受到了我看到有人处理物理文件的方式的启发。1980 年代初,当我在贝尔实验室做顾问时,我看到我的一位朋友的办公室里有两个垃圾桶。当我问他为什么时,他解释说一个用于真正的垃圾,另一个是一个缓冲区,他会把那些他认为可能永远不会再需要的文档扔进去。他会让缓冲区垃圾桶装满,一旦装满,他就会扔掉里面底层的文档,因为他认为既然他没有把它们捞出来,他可能永远不会想念它们,即使它们被永久扔掉。

不用说,我没有完全遵循这种方法,事实上我保留了所有东西,无论是数字还是纸质。但关键是 ARCHIVES 机制给了我一种方法,可以轻松保留材料,同时仍然很容易看到所有活跃的东西。

我还有一堆其他的惯例。当我进行设计时,我通常会将我的笔记保存在名称如 Notes-01.nb 或 SWNotes-01.nb 的文件中。这就像我不要太多文件类别的原则:我倾向于不尝试对设计的不同部分进行分类。我只是按顺序对我的文件编号,因为通常在我继续进行特定设计时,最新或最近的几个文件是最相关的。如果文件只是按顺序编号,就很容易找到它们;一个人就不必试图记住自己碰巧给某个特定方向或想法起了什么名字。

很久以前,我就开始总是将我的顺序文件命名为 file-01、file-02 等。这样几乎任何排序方案都会按顺序对文件进行排序。而且,是的,我经常会达到 file-10 等。但在所有这些年里,我还没有接近 file-99。

知道把每样东西放在哪里

当我专门从事某个特定项目时,我通常只会使用与该项目相关的文件夹中的文件。但在顺利的一天,我会有很多关于许多不同项目的想法。而且我每天还会收到数百封电子邮件,与各种不同的项目相关。但通常需要几个月甚至几年时间,我才能最终准备好认真专注于其中一个项目。所以我想做的是以一种即使在遥远的未来我也能随时找到它的方式来存储我积累的材料。

对我来说,存储位置通常有两个维度。第一个是(不足为奇地)它所涉及的内容。但第二个是我可能使用它的项目类型。它是否与某个产品的某个功能相关?它是否会成为我撰写某篇文章的原材料?它是某个学生项目的种子吗,比如在我们年度夏令营上?等等。

对于某些类型的项目,我存储的材料通常由一个完整的文件或几个文件组成。对于其他项目,我只需要存储一个可以用几句话或几段话概括的想法。例如,学生项目的种子通常只是一个想法,我可以用一个标题和也许几行解释来描述。在任何给定的一年里,我只会将这样的项目想法添加到单个笔记本中——例如,在我们的年度夏季项目之前,我就会查看并总结它。

对于像我可能要写的这篇文章这样的作品,情况有点不同。在任何给定的时间,我都在考虑在某个时候写大约 50 篇作品。我所做的是为它们中的每一个创建一个文件夹。每个文件夹通常都会有像 Notes-01.nb 这样的文件,我会在其中积累具体的想法。但该文件夹也会包含完整的、或成组的文件,这些文件是我积累的关于该作品主题的。(有时我会将这些组织成子文件夹,名称如 Explorations 和 Materials。)

在我的文件系统中,我有用于不同项目类型的文件夹:Writings(写作)、Designs(设计)、StudentProjects(学生项目)等。我发现拥有适度的数量这样的文件夹很重要(即使以我相当复杂的生活,也不超过十几个)。当有东西进来时——比如来自一封电子邮件、或来自一次对话、或来自我在网上看到的东西、或者只是来自我自己的一个想法——我需要能够快速地确定它可能与哪种项目类型(如果有的话)相关。

在某种程度上,这就像“我应该把它放在哪个文件里”一样简单。但关键是要有一个预先存在的结构,使这个决定能够快速做出——然后让这个结构成为一个即使在遥远的未来我也可以很容易找到东西的结构。

有很多棘手的问题。特别是如果时间过去了几年,你命名或思考一个主题的方式可能会改变。有时这意味着在某个时候我会重命名一个文件夹或类似的东西。但就我而言,最重要的是,在任何给定时间,我正在积极地放入东西的文件夹总数要足够少,以至于我基本上可以记住所有它们。我可能有十几个用于不同项目类型的文件夹。然后其中一些将需要用于特定主题的特定项目的子文件夹。但我试图将“活跃积累文件夹”的总数限制在最多几百个。

其中一些“积累文件夹”我已经用了十年或更长时间。少数会在几个月内出现并消失。但大多数最多会持续几年——基本上是从我构思一个项目到该项目实际上完成之间的时间。

它并不完美,但我最终维护了两个文件夹层次结构。第一个,也是最重要的,在我的文件系统中。但第二个在我的电子邮件中。我维护电子邮件文件夹中的材料有两个基本原因。第一个是即时的便利性。一些邮件进来了,我想“这与我计划做的某个项目相关”——我想把它存储在一个合适的地方。好吧,如果那个地方是一个邮件文件夹,我所要做的就是用一个鼠标动作(或者可能按一下 Touch Bar 按钮)移动这封邮件。例如,我不必找到一个文件或文件系统文件夹来存放它。

还有一个原因让邮件保留为邮件是很好的:线程。在 Wolfram 语言中,我们现在具备了导入邮箱连接到实时邮件服务器的能力。你很快就会看到,电子邮件对话的图(实际上是超图)可以有多复杂。邮件客户端作为查看这些对话的方式肯定不完美,但使用它比方说拥有一堆单独的文件要好得多。

当项目定义得相当好,但还不是很活跃时,我倾向于使用文件系统文件夹而不是电子邮件文件夹。通常,关于这些项目进来的将是相当孤立(且非线程)的邮件片段。我发现最好的做法要么是将这些邮件片段拖到相应的项目文件夹中,要么复制出它们的内容并添加到笔记本中。

当一个项目非常活跃时,可能会有很多关于它的邮件进来,保存线程结构很重要。当一个项目还不是很明确时,我只是想把所有关于它的东西扔进一个“桶”里,而不必考虑将其组织成子文件夹、笔记本等。

如果我查看我的邮件文件夹,我看到很多与我的文件系统中的文件夹并行。但我看到一些没有并行,特别是与长期项目概念相关的。我有很多这样的文件夹已经存在了十多年(我目前的整体邮件文件夹组织大约有 15 年的历史)。有时它们的名称并不完美。但文件夹数量足够少,而且我已经看了它们足够长的时间,以至于我对自己将什么归档在其中有所了解,即使它们的名称没有完全捕捉到它。

当我准备好处理一个项目时,打开它的邮件文件夹,开始浏览消息,通常是很久以前的消息,总是非常令人满意。就在过去的几周里,当我们完成一个主要的 Wolfram 语言新版本时,我开始展望未来,我一直在浏览来自 2005 年等的邮件文件夹。当我保存那些消息时,我还没有一个明确的框架来规划它们所涉及的项目。但现在我有了。所以当我浏览这些消息时,我可以快速地将它们放入相应的活跃笔记本等中。然后我从邮件文件夹中删除这些消息,最终,一旦它变空,就删除整个邮件文件夹。(与文件不同,我发现拥有一个用于邮件的 ARCHIVES 文件夹没有用;邮件量太大了,而且组织性不够强,所以要找到任何特定项目,我可能最终还是不得不搜索它,当然我肯定存储了我所有的邮件。)

好的,我有我的文件系统,我有邮件。在我们的公司,我们还有一个广泛的项目管理系统,以及各种数据库、请求跟踪器、源代码控制系统等。我的当前工作性质大多不会导致我直接与它们交互,我也不会明确地将我自己的个人输出存储在它们中。在不同的时间,以及在不同的项目中,我曾这样做过。但现在我与这些系统的互动基本上只是作为一个查看者,而不是作者。

除了这些系统之外,我还有很多主要通过网页与之互动的东西。这些可能是像 wolframalpha.comwolfram.com 这样的公共网站。它们可能是我们公司的内部网站。它们也可能是未来将成为公共网站或基于网络的服务(比如“测试”或“开发”版本)。我有一个个人主页,可以方便地访问所有这些东西:

主页

主页的源代码(不用说)是一个 Wolfram 笔记本。我可以在我的文件系统中编辑这个笔记本,然后按一个按钮将其版本部署到 Wolfram Cloud。我的网页浏览器中有一个扩展,这样每当我创建一个新的浏览器窗口或标签页时,初始内容就会是我的个人主页。

当我准备开始做某事时,我只去少数几个地方。一个是这个网页主页,我每天访问数百次。另一个是我的电子邮件及其文件夹。另一个是我的桌面文件系统。基本上唯一其他重要的一个是我的日历系统。

我不时会看到其他人的电脑,他们的桌面会堆满了文件。我的桌面完全是空的,纯白色(方便全屏屏幕共享和直播)。如果我的桌面上能看到任何文件,我会感到羞愧。我会认为这是我在保持工作有条理方面的失败标志。通用文件夹如 Documents(文档)和 Downloads(下载)也可以这么说。是的,在某些情况下,应用程序等会将文件放在那里。但我认为这些目录是可丢弃的。我无意让它们成为我的长期组织结构的一部分。它们不会同步到云端,也不会同步到我的不同电脑上。

无论我的文件组织如何,它们的一个特点是我保留它们很长时间。事实上,我最古老的文件日期是 1980 年。那时,有一种有点像云的东西,只不过它被称为分时系统。我确实丢失了一些我在分时系统上的文件。但我那些在本地电脑上的文件仍然和我在一起(尽管公平地说,有些不得不从 9 轨备份磁带 中检索)。

今天,我坚持将我所有的文件(以及我所有的电子邮件)积极地存储在本地。是的,这意味着我的地下室里有这个:

服务器室

初始存储在一个标准的 RAID 磁盘阵列上。这会备份到我公司总部(大约 1000 英里远)的电脑上,在那里进行标准的磁带备份。(在所有这些年里,我只从备份磁带中检索过一次。)我也会将我更活跃的文件同步到云端,以及我的各种电脑上。

所有的小便利

我的两个主要的个人产出形式是邮件消息和 Wolfram 笔记本。在我们首次推出笔记本以来的 30 年里,我们已经优化了我们的笔记本系统,达到了我只需按一个键即可创建一个默认的新笔记本,然后我就可以立即开始撰写一篇自动成为美观结构化文档的东西。(顺便说一句,很高兴看到我们成功地保持了 30 年的兼容性:我早在 1988 年创建的笔记本仍然可以直接使用。)

然而,有时我创建的笔记本与其说是供人阅读,不如说是供某些自动化流程输入。为此,我使用了各种专门设置的笔记本。例如,如果我想在我们的新 Wolfram Function Repository创建一个条目,我只需转到菜单项(在任何 Version 12 系统中都可用)File > New > Repository Item > Function Repository Item:

MyFunction 弹出窗口

这实际上“提示”我添加项目和部分。完成后,我可以按 Submit to Repository(提交到存储库),将笔记本发送到我们的中央存储库项目评审队列(而且,仅仅因为我是首席执行官并不意味着我可以免于评审流程——我也不想)。

我实际上创建了相当多的结构化内容以供进一步处理。一个大的类别是 Wolfram 语言文档。为了创作这些文档,我们有一个内部系统,我们称之为 DocuTools,它完全基于一个经过多年开发的巨大调色板,我经常说它让人想起飞机驾驶舱的复杂性:

DocuTools 调色板

DocuTools 的目的是使文档的创作尽可能符合人体工学。它有 50 多个子调色板(上面展示了几个),总共有不少于 1016 个按钮。如果我想为 Wolfram 语言函数启动一个新页面,我只需按 New Function Page(新函数页面),然后弹出:

DocuTools 新函数

这个页面上一个非常重要的部分是顶部的条纹,上面写着“Future”(未来)。这意味着即使该页面将存储在我们的源代码控制系统中,它还没有准备好:它只是我们正在考虑的未来事项。构建我们的官方文档的系统将忽略该页面。

通常,我们(通常实际上是我)会在函数实现之前编写文档。我们会包含关于函数应该具备的特性的各种细节。但当函数实际首次实现时,其中一些特性可能尚未准备好。为了解决这个问题,我们会(正如我们所称的)将文档的某些部分“未来化”,给它一个非常明显的粉红色背景。它仍然在源代码控制系统中,我们每次查看文档页面的源代码时都会看到它。但在构建供人们查看的文档页面时,它不会被包含在内。

文档未来化

DocuTools 当然是用 Wolfram 语言实现的,它广泛使用了 Wolfram 笔记本的符号结构。多年来,它已经发展到可以处理许多不严格属于文档的事情;事实上,对我来说,它已成为几乎所有基于笔记本的内容创作的主要中心。

例如,有一个用于 Stephen Wolfram 博客的按钮。按下它,就会弹出一个标准笔记本,可以开始写作。但在 DocuTools 中,有一整套按钮允许插入建议和编辑。当我写完一篇博客后,返回的通常是这样的:

编辑后的博客

粉红色的框是“你真的需要修复这个”;棕褐色的框是“这是一个评论”。点击其中一个,就会弹出一个小表单:

博客编辑弹出窗口

当然,世界上有很多变化跟踪和红线系统。但有了 Wolfram 语言,创建一个针对我的需求进行优化的定制系统变得很容易,这就是我所做的。在我拥有这个系统之前,查看编辑建议通常需要花费很多小时(我记得一次可怕的 17 小时飞机旅程,我几乎把所有时间都花在了查看一篇帖子的建议上)。但现在——因为它都是为我优化的——我可以以大约快 10 倍的速度浏览完。

通常为我定制构建的工具最终会被改编,以便其他人也可以使用它们。一个例子是用于创作课程和制作视频的系统。我想能够像“一人乐队”一样做这件事——有点像我做直播的方式。我的想法是创建一个包含要说的词和要输入的代码的讲稿,然后在我浏览讲稿时实时屏幕录制来制作视频。但是输入如何工作呢?我不能手动输入它们,因为它会打断我说话的实时流程。但显而易见的做法是直接将它们“自动输入”到笔记本中。

但是这一切应该如何协调呢?我从一个讲稿开始:

课程讲稿

然后我按下 Generate Recording Configuration(生成录制配置)。一个标题屏幕会立即出现在我屏幕的一个区域,我设置我的屏幕录制系统以从这个区域录制。在我屏幕的其他地方是讲稿。但是控制按钮呢?好吧,它们只是另一个 Wolfram 笔记本,碰巧充当一个包含按钮的调色板:

运行中的课程讲稿

但是,我如何实际操作这个调色板呢?我不能使用我的鼠标,因为那样我就会从正在屏幕录制的笔记本上失去焦点。所以我的想法是把调色板放在一个扩展桌面上,这个桌面恰好在一个 iPad 上显示。所以,要“执行”讲稿,我只需按下调色板上的按钮。

有一个大的 Advance Script(推进讲稿)按钮。假设我已经读到讲稿中需要向笔记本输入一些内容的地方。如果我想模拟实际打字,我按下 Slow Type(慢速输入)。这会将输入逐个字符地输入到笔记本中(是的,我们测量了人类打字的键间延迟分布,并进行模拟)。过了一会儿,看到所有那些慢速打字会让人感到烦恼。所以那时我只需使用 Type(输入)按钮,它会立即将整个输入复制到笔记本中。如果我再次按下按钮,它将执行它的第二个动作:Evaluate(求值)。这相当于在笔记本中按下 Shift+Enter(带有一些适合视频的可选额外解释弹出窗口)。

我可以继续谈论我用 Wolfram 语言构建的其他工具,但这已经提供了一个大致的概念。那么我使用什么不是 Wolfram 语言的东西呢?好吧,我使用网页浏览器,以及可以通过它访问的东西。不过,我仍然经常只是去 Wolfram Cloud,例如在那里查看或使用云笔记本。

有时我会使用我们的公共 Wolfram Cloud。但更常见的是,我会使用私人 Wolfram Cloud。我们大多数内部会议的议程都是托管在我们内部 Wolfram Cloud 上的笔记本。我个人也有一个本地私人 Wolfram Cloud 在运行,我在上面托管了越来越多的应用程序。

这是我的电脑上目前的 Dock(程序坞):

斯蒂芬·沃尔夫拉姆的 Dock

它有一个文件系统浏览器;它有一个电子邮件客户端;它有三个网页浏览器(是的,我喜欢在多个浏览器上测试我们的东西)。然后我有一个日历客户端。接下来是我们的 VoIP 电话系统的客户端(现在我正在交替使用它,以及使用音频和我们的屏幕共享系统)。然后,是的,至少现在我有一个音乐应用程序。我不得不说,我的日常工作很少给我听音乐的机会。可能我最终听音乐的主要时间是我在处理电子邮件方面非常落后,需要一些东西来振作起来,以便我能处理完数千封消息。但是,一旦我真正在写任何非琐碎的东西,我就必须暂停音乐,否则我无法集中注意力。(而且我必须找到没有歌声的音乐——因为我注意到如果我听到歌声,我就不能以全速阅读。)

有时我最终会启动一个标准的文字处理器、电子表格等应用程序,因为我要打开一个与这些应用程序关联的文档。但我不得不承认,在所有这些年里,我基本上从未用这些应用程序从头开始创作文档;我最终只是使用了我们自己的技术。

偶尔我会打开一个终端窗口,直接使用操作系统命令。但这变得越来越不常见——因为我越来越多地只是将 Wolfram 语言用作我的“超级 shell”。(是的,在笔记本中存储和编辑命令,并能立即生成图形化和结构化的输出,这是极其方便的。)

在我写这篇文章时,我意识到一个我还没有做的小优化。在我的个人主页上有一些链接可以做相当复杂的事情。例如,其中一个启动我进行非预定直播的过程:它会向我们 24/7 的系统监控团队发送消息,以便他们可以接收我的流,进行广播,并监控反馈。但我意识到,我仍然有相当多的自定义操作系统命令,比如从源代码存储库更新的代码,我需要将它们输入到终端窗口中。我需要在我的私人云中设置这些,这样我就可以在我的个人主页上放置链接,运行 Wolfram 语言代码来执行这些命令。(公平地说,其中一些命令非常古老;例如,我的 fmail 命令,它在未来发送一封邮件消息,是在将近 30 年前编写的。)

但是,好吧,如果我查看我的应用程序 Dock,Spikey 图标的应用占了绝对多数。但为什么,例如,我需要三个相同的标准 Spikey?它们都是 Wolfram Desktop 应用程序。但它们是三个版本。第一个是我们最新的分发版本。第二个是我们最新的内部版本,通常每天更新。第三个(白色)是我们的“原型构建”,也每天更新,但包含许多尚未准备好进行严肃测试的“前沿”功能。

要让这些不同版本每晚安装,并正确地向它们注册文档类型,需要令人惊讶的复杂操作系统操作。但这对我个人的工作流程非常重要。通常我会使用最新的内部版本(是的,我还有一个包含许多以前版本的目录),但偶尔,例如为了某个特定的会议,我会试用原型构建,或者我会恢复到发布的构建,因为某些东西坏了。(处理多个版本是云中更容易的事情之一——我们在内部私人云中运行着一整套不同的配置,包含了内核、前端和其他版本的各种组合。)

当我发表演讲等时,我几乎总是使用最新的内部版本。我发现,在观众面前进行实时编程是发现错误的好方法——即使有时它会让我不得不解释,正如我所说的,“软件公司首席执行官的病”:总是想运行最新的版本,即使它还没有经过严肃的测试,并且是在前一晚构建的。

我的个人基础设施的关键部分是某种能有效戏剧性地扩展我的个人记忆的东西:我的“元搜索器”。我的个人主页顶部有一个搜索框。输入像“rhinoceros elephant”(犀牛大象)这样的东西,我将立即找到我在过去 30 年中发送或收到的每一封出现过这个词的电子邮件,以及我机器上的每一个文件,以及我档案中的每一份纸质文件:

元搜索器

对我来说,拥有按年份计算的消息数量是非常方便的;它经常帮助我记住我正在询问的任何事物背后的历史或故事。(在这个例子中,我可以看到 2008 年有一个高峰,那是我们正准备推出 Wolfram|Alpha 的时候——我正在处理各种事物的数据,包括物种。)

当然,让我的元搜索器工作的关键部分是我存储了如此多的东西。例如,我实际上拥有我在过去 30 年中编写的所有大约 815,000 封电子邮件,以及我收到的所有 230 万封(大部分非垃圾邮件)。而且,是的,我在过去 32 年里拥有一家有组织的 IT 基础设施等的公司,这极大地帮助了我。

但是电子邮件当然有一个很好的特点,那就是它是“数字化原生”的。那么那些最初是纸质的东西呢?好吧,我一生中大部分时间都是一个“信息囤积狂”。事实上,我一直持续保留文档,可以追溯到我 1968 年开始上小学的时候。从那时起,它们已经被重新装箱三次,现在主要的文档是这样存储的:

存储箱

(我还有用于存放关于人物、组织、事件、项目和主题的文件的文件夹存储。)我制作纸质文档的速度在 1984 年左右达到顶峰,然后迅速下降,因为我变得更加数字化。总共我有大约二十五万页主要非批量印刷的文档——主要来自我生命中的早期部分。

大约 15 年前,我决定我需要让这些文件可搜索,所以我启动了扫描所有这些文件的项目。大多数文档的长度只有一两页,所以不能由自动进纸器处理——因此我们设置了一个带有高分辨率摄像机(在那些日子里它需要闪光灯)的装置。这花费了几个人的工作年,但最终所有的文档都被扫描了。

我们自动裁剪和白平衡它们(使用 Wolfram 语言图像处理),然后进行 OCR 识别,并将 OCR 识别的文本作为一个透明层放入扫描图像中。如果我现在搜索“rhinoceros”(犀牛),我在我的档案中找到了 8 个文档。考虑到这个搜索词,它们有点随机,例如包括我 1971 年复活节的小学杂志。

OCR 对印刷文本有效。但是手写文本呢?信件,即使是手写的,通常至少带有印刷信头。但我有许多页手写笔记,上面基本上没有任何印刷内容。纯粹从图像(没有笔画的时间序列)识别手写仍然超出了当前的技术,但我希望我们的基于神经网络的机器学习系统很快就能解决这个问题。(方便的是,我有很多文档,我有我的手写草稿和打字版本,所以我希望至少能为我个人的笔迹建立一个训练集。)

但即使我不能搜索手写材料,我通常可以通过“在正确的箱子里查看”来找到它。我的主要扫描文档被组织成 140 个左右的箱子,每个箱子涵盖了我生活中的一个主要时期或项目。对于每个箱子,我都可以拉出页面的缩略图,按文档分组。例如,这里是我 11 岁时的学校地理笔记,以及我发表的一次演讲的文本:

地理笔记

我不得不说,每当我开始浏览我几十年前的扫描文档时,我最终都会发现一些意想不到的有趣的东西,这些东西通常会教会我一些关于我自己的,以及我是如何以某种特定的方向发展起来的。

这可能是我生活中的一些特定事物,以及我一直致力于构建长期事物的事实,以及我长期以来与大量人保持联系的事实,但我对我似乎每天都会遇到的甚至是相当古老的个人历史数量感到惊讶。某个人或某个组织会联系我,我会回顾我 35 年前与他们互动的信件。或者我正在思考某事,我会模糊地记得我 25 年前做过类似的事情,并回顾我做了什么。我碰巧有一个很好的记忆,但当我实际查看过去的材料时,我总是惊讶于我个人遗忘了多少细节。

我第一次设置我的元搜索器是在将近 30 年前。当前的版本基于 Wolfram 语言的 CreateSearchIndex / TextSearch 功能,运行在我的个人私人云上。它使用 UpdateSearchIndex 每隔几分钟更新一次。元搜索器还会“联合”搜索我们公司网站和数据库的 API 结果。

但并非我想要的一切都可以通过搜索轻松找到。我拥有的另一种查找机制是我的“个人时间轴”。我一直打算扩展它,但现在它基本上只包含关于我的外部事件的信息,每年大约 40 个。最重要的部分通常是我的“个人差旅报告”,如果可能的话,我会在 24 小时内一丝不苟地写下来。

通常,差旅报告只是文本(或者至少是结构化在笔记本中的文本)。但当我参加像贸易展这样的活动时,我通常会带一个微型相机,它每半分钟拍一张照片。如果我戴着那种挂绳名牌,我通常会把相机夹在名牌的顶部,这使得它处于一个理想的高度来捕捉我遇到的人的名牌。当我写我的个人差旅报告时,我通常会查看这些照片,有时会复制一些到我的差旅笔记本中。

但即使有了所有我当前的各种存档材料来源(现在包括聊天消息、直播等),电子邮件仍然是最重要的。多年前,我决定让人容易找到我的电子邮件地址。我的计算是,如果有人想联系我,那么在现代,他们最终会找到一种方法来做,但如果对他们来说发送电子邮件很容易,那就是他们联系我的方式。是的,我的电子邮件地址公开意味着我收到了来自世界各地我不认识的人的大量电子邮件。其中一些无疑很奇怪,但很多都很有趣。我尽量查看所有的邮件,但它们也会发送到一个请求跟踪系统,这样我的员工就可以确保重要的事情得到处理。(有时人们看到邮件主题行中的像 SWCOR #669140 这样的请求跟踪器工单元数据会感到有点奇怪,但我认为这是确保电子邮件得到回复所付出的很小的代价。)

我可能会提到,几十年来,电子邮件一直是我们(地理上分散的)公司内部的主要通信方式。是的,我们有项目管理、源代码控制、CRM 和其他系统,以及聊天。但至少在我与之互动的公司部分,电子邮件占了绝大多数。有时是人与人之间发送的个人电子邮件。有时是电子邮件组。

长期以来,我们拥有比员工更多的电子邮件组一直是一个笑话。但我们一直很小心地组织这些组,例如通过名称前缀来识别不同类型(t- 是项目团队的邮件列表,d- 是部门的邮件列表,l- 是更开放的邮件列表,r- 是自动化报告的邮件列表,q- 是请求列表等)。对我来说,这至少让我可以 plausibly 记住我想发送的邮件的正确列表是什么。

人物与事物的数据库

我认识很多人,来自我生活的许多不同部分。早在 1980 年代,我只是在一个文本文件中保存他们的列表(在那之前是一本手写的地址簿)。但到 1990 年代,我决定我需要为自己建立一个更系统的数据库——我开始称之为 pBase。近年来,pBase 的原始技术开始显得相当史前,但我现在有一个使用 Wolfram 语言在我的个人私人云中运行的现代实现。

这一切都很好。我可以按姓名或属性搜索人物,或者——如果我例如要去某个地方访问——我可以让 pBase 向我展示一张地图,上面有我们关于谁在附近的最新信息:

pBase 地图

pBase 与社交网络有什么关系?我有一个 Facebook 帐户 已经很长时间了,但它管理不善,而且似乎总是达到可能的朋友数量的上限。LinkedIn 我对待得更认真,我坚持只添加我实际交谈过的人(我目前有 3005 个连接,所以,是的,我与相当多的人交谈过)。

每隔一段时间,我就可以通过 ServiceExecute 从我的 LinkedIn 帐户下载数据来更新 pBase 中的内容,这非常方便。但 LinkedIn 只捕获了我认识的人的一小部分。它不包括我的许多更知名的朋友和熟人,以及大多数学者、许多学生等。

最终我可能会进一步开发 pBase,也许会使这项技术普遍可用。但在我们公司内部,已经有一个系统展示了一些潜在的愿景:我们的内部公司目录——它运行在我们的内部私人云中,基本上使用 Wolfram|Alpha 式的自然语言理解来让人问自然语言问题。

我可能还会提到,除了我们的公司目录之外,我们还维护了另一个数据库,至少我发现它非常有用,特别是当我试图找出谁可能知道某个不寻常问题的答案,或者我们可以从谁那里获取一些新项目时。我们称之为我们的“谁知道什么”数据库。对于每个人,它都提供了一个经验和兴趣的概况。这是我的条目(这是包含问题细节的来源):

谁知道什么

在个人数据库方面,对我来说另一个有用的是我拥有的书籍数据库。在过去十年左右的时间里,我没有购买太多书籍,但在那之前,我积累了一个大约 6000 卷的图书馆,而且不常见——特别是当我进行更多面向历史的研究时——我会想查阅其中的相当一部分。但是它们应该如何组织呢?像杜威十进制分类法美国国会图书馆分类法这样的“大型”分类方案太过繁琐,并且不能很好地匹配我个人的主题“认知图”。

就像我的文件系统文件夹或我的实体文件夹一样,我发现最好的方案是将书籍放入相当广泛的类别中——数量足够少,以至于我可以在空间上记住它们在我图书馆中的位置。但是在一个类别内,书籍应该如何排列呢?

好吧,在这里我可以讲一个警示故事(我的妻子经常用它作为我的这种方法的反面例子),说明我的这种方法可能会出什么问题。我总是喜欢了解思想的历史进程,所以我认为能够按历史顺序(例如,按首次出版日期)浏览书架上的一类书籍会很不错。但这使得找到一本特定的书,或者,例如,将其归位变得困难。(如果书的封面上印有出版日期,会更容易。但它们没有。)

大约 20 年前,我正准备将我所有的书搬到一个新的地方,那里的书架长度不同。我面临着如何在新书架上安排书籍类别的问题(“量子场论有多少线性英尺,它可以放在哪里?”)。所以我想:“为什么不测量每本书的宽度,顺便也测量它的高度和颜色呢?”因为我的想法是,那样我就可以制作每个书架的图形,书中显示出真实的宽度和颜色,然后在图形中放一个箭头来指示特定书的位置(可以从其他书的“地标”轻松地视觉识别)。

我弄了一个色度计(那是在数字相机普及之前),并开始进行测量。但事实证明,这比预期的要耗费大量劳动力,而且,不用说,在书籍不得不搬动之前没有完成。与此同时,在书籍搬动的那天,人们注意到如果不是只从书架上拿下一整块书,而是将其他书放在边缘,包装箱可以装更多的书。

结果是 5100 本书送达时,基本上被打乱了随机顺序。花了三天时间来分类它们。在这一点上,我决定只是让事情更简单,在每个类别中按作者字母顺序排列。这在查找书籍方面肯定运行良好。但我的大图书清单项目的一个结果是,我现在至少拥有所有与撰写 《一种新科学》 相关的书籍的一个很好的、 可计算的版本,而且它实际上在 Wolfram Data Repository 中:

图书馆里的书ResourceData["Books in Stephen Wolfram's Library"]

个人分析

在 2012 年,我写了一篇关于个人分析和我收集的关于我自己的数据的文章。那时我的档案里有大约三十五万封发出的电子邮件;现在又多了五十万封,我可以扩展我的已发送电子邮件的日图:

发出的电子邮件

(大的空白区域是我睡觉的时候,而且,是的,随着我改变项目——例如 2002 年完成 《一种新科学》 ——我的睡眠习惯也发生了变化;我现在也正在尝试早点睡觉的实验。)

我有系统可以保留各种数据,包括我输入的每一个按键、我走的每一步以及我的电脑屏幕每分钟的样子(可悲的是,这个视频非常无聊)。我还有各种医疗和环境传感器,以及我与之交互的设备和系统的数据。

时不时地拿起那些 Wolfram Data Drop 数据箱,用它们对我生活进行一些数据科学分析,这很有趣。而且,是的,从广义上讲,我发现我非常一致和习惯性——但每天都会发生不同的事情,使我的“生产力”(以各种方式衡量)波动,通常看起来是随机的。

但收集所有这些数据的一件事是,我可以用它来创建仪表板,我发现这些仪表板每天都很有用。例如,在我的私人云中运行着一个用于我的电子邮件的监控系统:

收件箱追踪器

黄色曲线是我待处理电子邮件的总数;红色是那些我甚至还没有打开的邮件数量。这些曲线对我的生活中的各种特征都非常敏感,例如,当我全神贯注于某个项目时,我经常会看到我的电子邮件“积压”一段时间。但在努力调整自己的节奏并决定何时可以做什么时,我发现这个电子邮件仪表板非常有用。

每天我都会收到报告前一天的电子邮件,这很有帮助。我打了多少个按键,在哪些应用程序中?我创建了哪些文件?我走了多少步?等等。

我也保留了各种关于我自己的健康和医疗数据,并且已经这样做了很长时间。很棒的是很久以前就开始测量某些东西,这样就可以绘制一个几十年的时间序列,看看是否有任何变化。而且,实际上,我注意到的一件事是,通常我某个值(比如血脂水平)的数值多年来基本保持不变——但实验室引用的许多“正常范围”却波动很大。(实际上,这并没有因为实验室根据他们观察到的特定人群等推断正常范围而得到改善。)

我在 2010 年对我的整个基因组进行了测序。虽然我没有从中了解到任何引人注目的东西,但当我看到论文中提到的某个 SNP 变体时,我能立即去查看我是否拥有它,这无疑有助于我感觉与基因组研究有所联系。(考虑到链、方向和构建编号的各种变化,我倾向于坚持第一性原理,只用 StringPosition 查找侧翼序列。)

就像我在本文中描述的许多事情一样,在进行个人分析方面对我有用的方法是做容易做的事情。例如,我从未真正解决记录我吃了什么的问题(我们的图像识别还不够好,即使是专门为我制作的输入食物的应用程序似乎也总是有点过于繁重)。但每当我有一个自动运行的系统时,那就是我成功收集到好的个人分析数据的时候。拥有仪表板和每日电子邮件有助于提供持续的反馈,并能够检查系统是否出了问题。

前进的道路

我以可以说是相当极客的细节描述了我的一些个人技术基础设施是如何设置的。它总是在变化,我总是在努力更新它——例如,我似乎最终得到了许多我不使用的东西的箱子(是的,我得到了我发现的几乎所有“有趣的”新设备或小玩意):

用过的设备

但尽管像设备这样的东西会改变,我发现我的基础设施的组织原则仍然出奇地恒定,只是逐渐变得越来越完善。而且——至少当它们基于我们非常稳定的 Wolfram 语言系统时——我发现我为实现它们而构建的软件系统也是如此。

未来会怎样?有些事情肯定会升级。我在写这篇文章时意识到,我现在可以升级到 4k 显示器(或更高),而不会影响屏幕共享(信号会自动降采样)。不久之后,也许我会使用 AR 来实时注释我的环境。也许最终我会有一种方法可以进行基于 XR 的仿佛亲临现场的视频会议。也许——正如我 40 多年来一直假设的那样——我最终将能够使用像脑电图(EEG)这样的东西更快地打字。等等。

但更重要的变化将是拥有更完善、更自动化的工作流程。随着时间的推移,我期望可以使用我们的机器学习工具进行自动“计算历史”,例如汇编一个有用且适当聚类的我所做事情的时间轴,比如在某个特定领域。

在我的工作中,我曾有机会使用大量人物和组织的档案。通常会进行一定程度的索引和标记。(这封信是寄给谁和来自谁的?是什么时候写的?它的关键词是什么?它被归档在哪里?等等。)但事物往往非常细粒度,通常很难确定发生事情的总体脉络。

我的首要目标是让我个人拥有的所有材料对我自己有用。但我正在考虑很快开始向其他人开放一些旧的材料。我正在研究如何在现代,利用我们拥有的所有云基础设施机器学习可视化计算文档等,构建最好的系统来展示和探索档案。

当我思考我的一天时,我问自己有哪些方面没有得到很好的优化。很多方面实际上归结为像电子邮件处理这样的事情,以及花在例如实际回复问题上的时间。当然,我付出了很多努力来尝试结构化事物,以便尽可能多的问题能够自行回答,或者可以通过我们构建的技术和自动化来解决。而且,作为首席执行官,我也努力在力所能及的范围内将工作委托给其他人。

但仍然有很多事情剩下。我当然想知道,有了我们现在拥有的所有技术,是否可以自动化更多,或者委托给机器。也许我收集到的所有关于我自己的数据有一天可以让一个人基本上只构建一个“我的机器人”。看到了我的这么多电子邮件——并且能够查看我所有的文件和个人分析——也许实际上可以预测我会如何回应任何特定的问题。

我们还没有达到那个阶段。但当一台机器能够,例如,对某事提出三个回应的想法,然后向我展示草稿,我可以从中挑选并批准时,那将是一个有趣的时刻。我想走向哪个方向的总体问题几乎必然会留给我,但我希望实现目标的细节可以越来越多地实现自动化。

产品详情

在本文中,我提到了各种设备和系统。这是我目前正在使用的特定产品列表。请注意,我不是在“代言”这些产品;我只是根据我的研究以及我的特定限制和历史,解释我碰巧使用的东西。

我按照它们在本文中出现的顺序列出项目,多次提到的通常不会重复。请注意,这里的一些项目可能已不再直接可用。

我的日常生活

主台式电脑 Apple Mac Pro(12 核;D700 GPU;64 GB RAM;1 TB SSD)

主台式显示器 Apple 27″ Cinema Displays (1440p) [刚发现它适用于屏幕共享,我现在将升级到 4k 显示器]

屏幕共享 Zoom

直播 使用 Zoom 连接到中心位置,信号经过 OBS Studio,然后我们通过 Restream 广播到 TwitchFacebook LiveYouTube Live

键盘 Apple Magic Keyboard(带数字小键盘)

鼠标 Logitech 有线光学鼠标 [尽管我考虑过更现代、按钮更多的鼠标]

多焦点眼镜 Varilux 镜片 [我查看了阅读通道宽度和 Zernike 多项式 等用于定制镜片,但我的矫正度数刚过一个屈光度,所以我没有费心]

站立式办公桌 Versadesk Pro Standing Desk Converter

跑步机设置 NEC 窄边框显示器Chief 三臂 墙壁支架;加上一些定制木工

心率数据 FitBit Charge 2 + Wolfram 语言 ServiceConnect [我更愿意使用 WHOOP,但考虑到我只会在手腕上戴一个东西,我需要它也能给我文本提醒]

平板电脑 Apple iPad Pro 10.5″ [我曾用过 iPad Mini 一段时间,但我发现轻量化不足以弥补屏幕尺寸的减小]

机器狗 Boston Dynamics SpotMini [我没有这个!]

行走桌 Connect-A-Desk

我的办公桌环境

长距离视频线 Corning 10m Thunderbolt 光纤线

额外电脑 Apple Mac Pro 运行 macOS;定制台式机运行 Windows 10;定制台式机运行 Ubuntu 18 LTS

KVM 切换器 Vertiv Avocent 4K Ultra HD KVM Switch

头戴式耳机 Jabra GN2125 带有 Geekria 头带套

文档摄像机 IPEVO Document Camera

Wolfram 品牌 Pilot Precise Grip 钢笔 [你得来 Wolfram 的贸易展台才能拿到!]

在路上

较大笔记本电脑 Apple MacBook Pro 13″(带 Touch Bar;16 GB RAM;2 TB SSD)

较小笔记本电脑 Apple MacBook(1.3 GHz;16 GB RAM;512 GB SSD)

Spikey 补丁 [你必须是 Wolfram 内部人士,或者来参加 Wolfram 夏令营等才能拿到……]

背包 Osprey Packs Cyber Daypack

笔记本电脑包 Tumi T-Tech 4905DCE

手机 Apple iPhone XS Max(AT&T;512 GB)

笔记本电脑充电器 FINsix DART-C

轻量“技术生存工具包”物品 USB 闪存驱动器 + USB-C 转 USB-A 适配器;USB 转 micro 和 mini USB 适配器;Apple EarPodsApple USB-C Digital AV Multiport Adaptor2 转 3 孔电源适配器FINsix Dart-C

充电砖 BatteryBox 我很快将改用 [HyperJuice USB-C Battery Pack]

微型相机 Narrative Clip 2

卫星电话 Iridium 9555

薄而软的帽子 Etro 帽子(已停产类型)

袋中袋 [2012 年的 Wolfram 赠品]

巧克力 Côte D’Or DarkDroste Pastilles Sinaasappel (Orange Crispies)

塑料信封 Smead Poly Envelopes #89521

微型投影仪 Insignia Slim-line Pico WVGA DLP

卫星电话车载套件 Iridium 9555 天线适配器Iridium 便携式辅助天线Iridium DC 充电器

白噪音应用 TMSOFT White Noise

大耳机 Audio-Technica ATH-ANC7B QuietPoint 主动降噪封闭式耳机

防晕车眼镜 Boarding Ring 的 Boarding Glasses

发表演讲

自制提词器 Edmund Optics Plate BeamsplitterManfrotto 547B Professional Tripod

EDID 欺骗盒 ConnectPRO TMDS-KITUConnectPRO DVI-EDIDConnectPRO VGA-EDID

笔记本电脑侧显示器 GeChic On-Lap 1002

屏幕镜像软件 duet

“雕刻”笔记本电脑外壳 Uncover Mac

笔记本电脑皮肤 DecalGirl

我的文件系统

所有的小便利

DocuTools [完整版本不可用,但在 Wolfram Workbench 中有一个简化版本]

屏幕录制系统 TechSmith Camtasia

网页浏览器 Google ChromeMozilla FirefoxApple Safari

VoIP 电话系统 ShoreTel Shorephone IP 655

音乐应用 Apple iTunes

终端应用 Apple Terminal

多版本安装 dockutil + duti + 自定义代码

存档与搜索

内部聊天系统 Rocket.Chat

请求追踪器 Best Practical RT

CRM SugarCRM

个人分析

屏幕捕获记录器 ReFog

计步器 Fitbit OneFitbit Charge 2;iPhone 计步器

其他一些设备和传感器 天气:La Crosse Technology V40-PRO-INT;牙刷:Oral-B 7000;体重秤:Fibit Aria 2;办公室环境:Electric Imp April Development Board;空气质量:Xiaomi PM2.5;温度计:Kinsa Smart Stick;脉搏血氧仪:BodiMetrics O2 Vibe;等等。

Stephen Wolfram (2019), "Seeking the Productive Life: Some Details of My Personal Infrastructure," Stephen Wolfram Writings. writings.stephenwolfram.com/2019/02/seeking-the-productive-life-some-details-of-my-personal-infrastructure.