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

新闻 前端
近日,BBC 举办了这样一个活动,名为 BBC Micro Bot。比赛要求参赛者在推特上 @BBC Micro Bot 这一账号,账号机器人会收集推特代码,然后在类似于 80 年代的 BBC Microcomputer 上运行,并输出一个 3 秒钟的 gif 动画,而这一微电脑是 Basic 语言运行的。

 推特与计算机能擦出什么样的火花呢?大多数人可能就想到在计算机上发推特呗。但是,有人就不这么想。酷爱计算机演进史和推特的 Dominic Pajak 创建了 BBC Micro Bot,它能够将一条 280 字符的推特经过模拟处理进而创建 3 秒时长的视频。

[[320022]]

开源社区总是鼓励人们分享代码。近日,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字编程挑战:把一条推特长度的代码玩出花

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

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

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

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

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

BBC Micro Bot 技术详解及演化

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

 [[320026]]

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

 [[320027]]

Katie Anderson 的 Windows 3.1 logo 搞笑编码。

 [[320028]]

Paul Malin 经典弹力球 demo 复现。

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

 

 

责任编辑:张燕妮 来源: 机器之心
相关推荐

2020-08-29 19:17:19

Linux文件列表排序

2021-12-14 10:54:31

TopK面试排序法

2012-05-17 09:33:19

虚拟化BYOD桌面虚拟化

2021-08-04 12:26:00

Postman工具频率

2011-06-24 09:20:04

编程语言

2023-02-15 09:00:49

2017-01-12 14:52:51

代码

2013-12-27 09:00:27

编程语言

2010-04-13 16:57:01

2020-05-28 10:23:57

5G网络技术

2021-12-13 08:52:42

Go 泛型

2019-03-28 10:09:49

内存CPU硬盘

2009-08-05 10:43:19

CISSPBCPDRP

2011-03-21 17:19:12

LAMPUbuntu

2021-06-15 10:46:51

HTTPS网络协议TCP

2023-06-18 23:13:27

MySQL服务器客户端

2022-08-31 14:06:55

DevOpsSRE开发

2021-08-30 05:47:12

MySQL SQL 语句数据库

2019-06-24 11:07:34

数据数据库存储

2023-03-26 22:42:02

SQL关联索引
点赞
收藏

51CTO技术栈公众号