机器之心报道
机器之心编辑部
推特与计算机能擦出什么样的火花呢?大多数人可能就想到在计算机上发推特呗。但是,有人就不这么想。酷爱计算机演进史和推特的 Dominic Pajak 创建了 BBC Micro Bot,它能够将一条 280 字符的推特经过模拟处理进而创建 3 秒时长的视频。
开源社区总是鼓励人们分享代码。近日,BBC 举办了这样一个活动,名为 BBC Micro Bot。比赛要求参赛者在推特上 @BBC Micro Bot 这一账号,账号机器人会收集推特代码,然后在类似于 80 年代的 BBC Microcomputer 上运行,并输出一个 3 秒钟的 gif 动画,而这一微电脑是 Basic 语言运行的。
乍一听并不觉得有什么难度,但我们会发现,参赛者们在一篇推特所限制的字数(280 字)下,会尽可能的展示出他们令人吃惊的编程技巧。这些参赛者当中不乏有我们熟悉的大神,如 Raspberry Pi 的创始人 Ebon Upton 等。
该账号的发起者 Dominic Pajak 表示,@bot 进行输出的帖子在短短的几周内达到了 1000 万的访问量,大约每一周运行 1000 余个 Basic 程序。
开发者的自动程序可以按照算法绘制不同的图案。
Upton 为 BBC Micro Bot 的原始 CPU,即 6520(8 字节微处理器)编写了 150 字节的数据和机器代码。同时模拟器在处理时也非常全面。然后,他利用 Base64 Binary-to-text 编码方案将二进制数据转化为 tweetable 文本,并利用具有解码功能的 Basic 小程序将数据封装起来,进而启动机器代码。之后,人们一直想用更复杂的编码方案来封装更多数据。
BBC Micro Bot 技术详解及演化
BBC Micro Bot 的创建者 Pajak 是 Arduino 的商务拓展副总裁,他非常热爱计算机演进史和推特,因此创建了这个项目。Pajak 表示,将计算机和推特二者结合起来的点子很不错。此外,他选择创建 Micro Bot 也有技术方面的理由,BBC Basic 主要是由 Sophie Wilson 开发的,这是目前为止最好的 Basic 实现,其中的一些特性使得代码「缩小」成为可能。
BBC Micro Bot 创建者 Dominic Pajak。
从技术层面具体来说,Bot 是由 Javascript 语言编写的,并作为 JSbeed 模拟的前端。当 bot 发现一条推特,它会进行信息过滤,然后将文本添加至模拟的 BBC Micro 键盘缓冲区。经过 30 秒的模拟时间,bot 使用 ffmpeg(音视频记录、转换和流处理的完整、跨平台解决方案)创建 3 秒时长的视频。需要注意的是,bot 最初是在树莓派 4 上运行,之后迁移至了亚马逊网络服务(Amazon Web Service)上。
用户对此有什么样的反馈呢?Pajak 表示自己收到了很多正面的反馈。人们对首次通过推特使用 BBC BASIC 非常好奇,也发现了其中的很多乐趣,拉丁美洲的用户甚至创造出了很多口号和表情包。
与此同时,bot 程序的复杂程度也大幅提升,从简单的 Basic 程序到 Upton《生命游戏》的实现等等。随着程序门槛不断提升,Pajak 也在思考 280 字符的代码是否真的能够实现这些功能。因此,他转向使用 Katie Anderson Windows 3.1 logo 的搞笑编码(tongue-in-cheek encoding),以及 Paul Malin 经典弹力球 demo 的复现,后者通过特殊的编码方式将 361 个 ASCII 字符代码压缩至 280 个 Unicode 字符的推特内容。
Katie Anderson 的 Windows 3.1 logo 搞笑编码。
Paul Malin 经典弹力球 demo 复现。
如果有人想要在 Apple II 和 Commodore 计算机上创建类似的 Bot,Pajak 会给出指导建议。此外,Pajak 正考虑在实体 BBC Micro 上执行这些推文,并表示已经使用 Arduino MKR1010 将 BBC Micro 联网了。
参考链接:https://spectrum.ieee.org/tech-talk/computing/software/show-the-world-you-can-write-a-cool-program-inside-a-single-tweet
本文为机器之心报道,转载请联系本公众号获得授权。