280字编程挑战:把一条推特长度的代码玩出花

2020/3/28 10:29:30 资讯频道 346

推特与计算机能擦出什么样的火花呢?大多数人可能就想到在计算机上发推特呗。但是,有人就不这么想。酷爱计算机演进史和推特的 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 程序。

280?-—??–?¨???‘???????????€?????¨?‰1é???o|?????£? ???©??oè?±

280?-—??–?¨???‘???????????€?????¨?‰1é???o|?????£? ???©??oè?±

280?-—??–?¨???‘???????????€?????¨?‰1é???o|?????£? ???©??oè?±

 开发者的自动程序可以按照算法绘制不同的图案。

Upton 为 BBC Micro Bot 的原始 CPU,即 6520(8 字节微处理器)编写了 150 字节的数据和机器代码。同时模拟器在处理时也非常全面。然后,他利用 Base64 Binary-to-text 编码方案将二进制数据转化为 tweetable 文本,并利用具有解码功能的 Basic 小程序将数据封装起来,进而启动机器代码。之后,人们一直想用更复杂的编码方案来封装更多数据。

280?-—??–?¨???‘???????????€?????¨?‰1é???o|?????£? ???©??oè?±

BBC Micro Bot 技术详解及演化

BBC Micro Bot 的创建者 Pajak 是 Arduino 的商务拓展副总裁,他非常热爱计算机演进史和推特,因此创建了这个项目。Pajak 表示,将计算机和推特二者结合起来的点子很不错。此外,他选择创建 Micro Bot 也有技术方面的理由,BBC Basic 主要是由 Sophie Wilson 开发的,这是目前为止最好的 Basic 实现,其中的一些特性使得代码「缩小」成为可能。

280?-—??–?¨???‘???????????€?????¨?‰1é???o|?????£? ???©??oè?±

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 字符的推特内容。

280?-—??–?¨???‘???????????€?????¨?‰1é???o|?????£? ???©??oè?±

Katie Anderson 的 Windows 3.1 logo 搞笑编码。

280?-—??–?¨???‘???????????€?????¨?‰1é???o|?????£? ???©??oè?±

Paul Malin 经典弹力球 demo 复现。

如果有人想要在 Apple II 和 Commodore 计算机上创建类似的 Bot,Pajak 会给出指导建议。此外,Pajak 正考虑在实体 BBC Micro 上执行这些推文,并表示已经使用 Arduino MKR1010 将 BBC Micro 联网了。