com 或 wolfram.com 这样的公共网站。它们可能是我们公司的内部网站。它们也可能是未来将成为公共网站或基于网络的服务(比如“测试”或“开发”版本)。我有一个个人主页,可以方便地访问所有这些东西:

主页的源代码(不用说)是一个 Wolfram 笔记本。我可以在我的文件系统中编辑这个笔记本,然后按一个按钮将其版本部署到 Wolfram Cloud。我的网页浏览器中有一个扩展,这样每当我创建一个新的浏览器窗口或标签页时,初始内容就会是我的个人主页。
当我准备开始做某事时,我只去少数几个地方。一个是这个网页主页,我每天访问数百次。另一个是我的电子邮件及其文件夹。另一个是我的桌面文件系统。基本上唯一其他重要的一个是我的日历系统。
我不时会看到其他人的电脑,他们的桌面会堆满了文件。我的桌面完全是空的,纯白色(方便全屏屏幕共享和直播)。如果我的桌面上能看到任何文件,我会感到羞愧。我会认为这是我在保持工作有条理方面的失败标志。通用文件夹如 Documents(文档)和 Downloads(下载)也可以这么说。是的,在某些情况下,应用程序等会将文件放在那里。但我认为这些目录是可丢弃的。我无意让它们成为我的长期组织结构的一部分。它们不会同步到云端,也不会同步到我的不同电脑上。
无论我的文件组织如何,它们的一个特点是我保留它们很长时间。事实上,我最古老的文件日期是 1980 年。那时,有一种有点像云的东西,只不过它被称为[分时系统](h…
com 或 wolfram.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:

这实际上“提示”我添加项目和部分。完成后,我可以按 Submit to Repository(提交到存储库),将笔记本发送到我们的中央存储库项目评审队列(而且,仅仅因为我是首席执行官并不意味着我可以免于评审流程——我也不想)。
我实际上创建了相当多的结构化内容以供进一步处理。一个大的类别是 Wolfram 语言文档。为了创作这些文档,我们有一个内部系统,我们称之为 DocuTools,它完全基于一个经过多年开发的巨大调色板,我经常说它让人想起飞机驾驶舱的复杂性:

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

这个页面上一个非常重要的部分是顶部的条纹,上面写着“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(程序坞):

它有一个文件系统浏览器;它有一个电子邮件客户端;它有三个网页浏览器(是的,我喜欢在多个浏览器上测试我们的东西)。然后我有一个日历客户端。接下来是我们的 VoIP 电话系统的客户端(现在我正在交替使用它,以及使用音频和我们的屏幕共享系统)。然后,是的,至少现在我有一个音乐应用程序。我不得不说,我的日常工作很少给我听音乐的机会。可能我最终听音乐的主要时间是我在处理电子邮件方面非常落后,需要一些东西来振作起来,以便我能处理完数千封消息。但是,一旦我真正在写任何非琐碎的东西,我就必须暂停音乐,否则我无法集中注意力。(而且我必须找到没有歌声的音乐——因为我注意到如果我听到歌声,我就不能以全速阅读。)
有时我最终会启动一个标准的文字处理器、电子表格等应用程序,因为我要打开一个与这些应用程序关联的文档。但我不得不承认,在所有这些年里,我基本上从未用这些应用程序从头开始创作文档;我最终只是使用了我们自己的技术。
偶尔我会打开一个终端窗口,直接使用操作系统命令。但这变得越来越不常见——因为我越来越多地只是将 Wolfram 语言用作我的“超级 shell”。(是的,在笔记本中存储和编辑命令,并能立即生成图形化和结构化的输出,这是极其方便的。)
在我写这篇文章时,我意识到一个我还没有做的小优化。在我的个人主页上有一些链接可以做相当复杂的事情。例如,其中一个启动我进行非预定直播的过程:它会向我们 24/7 的系统监控团队发送消息,以便他们可以接收我的流,进行广播,并监控反馈。但我意识到,我仍然有相当多的自定义操作系统命令,比如从源代码存储库更新的代码,我需要将它们输入到终端窗口中。我需要在我的私人云中设置这些,这样我就可以在我的个人主页上放置链接,运行 Wolfram 语言代码来执行这些命令。(公平地说,其中一些命令非常古老;例如,我的 fmail 命令,它在未来发送一封邮件消息,是在将近 30 年前编写的。)
但是,好吧,如果我查看我的应用程序 Dock,Spikey 图标的应用占了绝对多数。但为什么,例如,我需要三个相同的标准 Spikey?它们都是 Wolfram Desktop 应用程序。但它们是三个版本。第一个是我们最新的分发版本。第二个是我们最新的内部版本,通常每天更新。第三个(白色)是我们的“原型构建”,也每天更新,但包含许多尚未准备好进行严肃测试的“前沿”功能。
要让这些不同版本每晚安装,并正确地向它们注册文档类型,需要令人惊讶的复杂操作系统操作。但这对我个人的工作流程非常重要。通常我会使用最新的内部版本(是的,我还有一个包含许多以前版本的目录),但偶尔,例如为了某个特定的会议,我会试用原型构建,或者我会恢复到发布的构建,因为某些东西坏了。(处理多个版本是云中更容易的事情之一——我们在内部私人云中运行着一整套不同的配置,包含了内核、前端和其他版本的各种组合。)
当我发表演讲等时,我几乎总是使用最新的内部版本。我发现,在观众面前进行实时编程是发现错误的好方法——即使有时它会让我不得不解释,正如我所说的,“软件公司首席执行官的病”:总是想运行最新的版本,即使它还没有经过严肃的测试,并且是在前一晚构建的。
我的个人基础设施的关键部分是某种能有效戏剧性地扩展我的个人记忆的东西:我的“元搜索器”。我的个人主页顶部有一个搜索框。输入像“rhinoceros elephant”(犀牛大象)这样的东西,我将立即找到我在过去 30 年中发送或收到的每一封出现过这个词的电子邮件,以及我机器上的每一个文件,以及我档案中的每一份纸质文件:

对我来说,拥有按年份计算的邮件数量。这些曲线对我的生活中的各种特征都非常敏感,例如,当我全神贯注于某个项目时,我经常会看到我的电子邮件“积压”一段时间。但在努力调整自己的节奏并决定何时可以做什么时,我发现这个电子邮件仪表板非常有用。
每天我都会收到报告前一天的电子邮件,这很有帮助。我打了多少个按键,在哪些应用程序中?我创建了哪些文件?我走了多少步?等等。
我也保留了各种关于我自己的健康和医疗数据,并且已经这样做了很长时间。很棒的是很久以前就开始测量某些东西,这样就可以绘制一个几十年的时间序列,看看是否有任何变化。而且,实际上,我注意到的一件事是,通常我某个值(比如血脂水平)的数值多年来基本保持不变——但实验室引用的许多“正常范围”却波动很大。(实际上,这并没有因为实验室根据他们观察到的特定人群等推断正常范围而得到改善。)
我在 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 广播到 Twitch、Facebook Live 和 YouTube 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 夏令营等才能拿到……]
笔记本电脑包 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 EarPods;Apple USB-C Digital AV Multiport Adaptor;2 转 3 孔电源适配器;FINsix Dart-C
充电砖 BatteryBox 我很快将改用 [HyperJuice USB-C Battery Pack]
微型相机 Narrative Clip 2
卫星电话 Iridium 9555
薄而软的帽子 Etro 帽子(已停产类型)
袋中袋 [2012 年的 Wolfram 赠品]
巧克力 Côte D’Or Dark;Droste 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 Beamsplitter;Manfrotto 547B Professional Tripod
EDID 欺骗盒 ConnectPRO TMDS-KITU;ConnectPRO DVI-EDID;ConnectPRO VGA-EDID
笔记本电脑侧显示器 GeChic On-Lap 1002
屏幕镜像软件 duet
“雕刻”笔记本电脑外壳 Uncover Mac
笔记本电脑皮肤 DecalGirl
我的文件系统
所有的小便利
DocuTools [完整版本不可用,但在 Wolfram Workbench 中有一个简化版本]
屏幕录制系统 TechSmith Camtasia
网页浏览器 Google Chrome;Mozilla Firefox;Apple Safari
VoIP 电话系统 ShoreTel Shorephone IP 655
音乐应用 Apple iTunes
终端应用 Apple Terminal
存档与搜索
内部聊天系统 Rocket.Chat
请求追踪器 Best Practical RT
CRM SugarCRM
个人分析
屏幕捕获记录器 ReFog
计步器 Fitbit One;Fitbit 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.