280字編程挑戰(zhàn):把一條推特長度的代碼玩出花
推特與計算機能擦出什么樣的火花呢?大多數(shù)人可能就想到在計算機上發(fā)推特唄。但是,有人就不這么想。酷愛計算機演進史和推特的 Dominic Pajak 創(chuàng)建了 BBC Micro Bot,它能夠?qū)⒁粭l 280 字符的推特經(jīng)過模擬處理進而創(chuàng)建 3 秒時長的視頻。
開源社區(qū)總是鼓勵人們分享代碼。近日,BBC 舉辦了這樣一個活動,名為 BBC Micro Bot。比賽要求參賽者在推特上 @BBC Micro Bot 這一賬號,賬號機器人會收集推特代碼,然后在類似于 80 年代的 BBC Microcomputer 上運行,并輸出一個 3 秒鐘的 gif 動畫,而這一微電腦是 Basic 語言運行的。
乍一聽并不覺得有什么難度,但我們會發(fā)現(xiàn),參賽者們在一篇推特所限制的字?jǐn)?shù)(280 字)下,會盡可能的展示出他們令人吃驚的編程技巧。這些參賽者當(dāng)中不乏有我們熟悉的大神,如 Raspberry Pi 的創(chuàng)始人 Ebon Upton 等。
該賬號的發(fā)起者 Dominic Pajak 表示,@bot 進行輸出的帖子在短短的幾周內(nèi)達(dá)到了 1000 萬的訪問量,大約每一周運行 1000 余個 Basic 程序。
開發(fā)者的自動程序可以按照算法繪制不同的圖案。
Upton 為 BBC Micro Bot 的原始 CPU,即 6520(8 字節(jié)微處理器)編寫了 150 字節(jié)的數(shù)據(jù)和機器代碼。同時模擬器在處理時也非常全面。然后,他利用 Base64 Binary-to-text 編碼方案將二進制數(shù)據(jù)轉(zhuǎn)化為 tweetable 文本,并利用具有解碼功能的 Basic 小程序?qū)?shù)據(jù)封裝起來,進而啟動機器代碼。之后,人們一直想用更復(fù)雜的編碼方案來封裝更多數(shù)據(jù)。
BBC Micro Bot 技術(shù)詳解及演化
BBC Micro Bot 的創(chuàng)建者 Pajak 是 Arduino 的商務(wù)拓展副總裁,他非常熱愛計算機演進史和推特,因此創(chuàng)建了這個項目。Pajak 表示,將計算機和推特二者結(jié)合起來的點子很不錯。此外,他選擇創(chuàng)建 Micro Bot 也有技術(shù)方面的理由,BBC Basic 主要是由 Sophie Wilson 開發(fā)的,這是目前為止最好的 Basic 實現(xiàn),其中的一些特性使得代碼「縮小」成為可能。
BBC Micro Bot 創(chuàng)建者 Dominic Pajak。
從技術(shù)層面具體來說,Bot 是由 Javascript 語言編寫的,并作為 JSbeed 模擬的前端。當(dāng) bot 發(fā)現(xiàn)一條推特,它會進行信息過濾,然后將文本添加至模擬的 BBC Micro 鍵盤緩沖區(qū)。經(jīng)過 30 秒的模擬時間,bot 使用 ffmpeg(音視頻記錄、轉(zhuǎn)換和流處理的完整、跨平臺解決方案)創(chuàng)建 3 秒時長的視頻。需要注意的是,bot 最初是在樹莓派 4 上運行,之后遷移至了亞馬遜網(wǎng)絡(luò)服務(wù)(Amazon Web Service)上。
用戶對此有什么樣的反饋呢?Pajak 表示自己收到了很多正面的反饋。人們對首次通過推特使用 BBC BASIC 非常好奇,也發(fā)現(xiàn)了其中的很多樂趣,拉丁美洲的用戶甚至創(chuàng)造出了很多口號和表情包。
與此同時,bot 程序的復(fù)雜程度也大幅提升,從簡單的 Basic 程序到 Upton《生命游戲》的實現(xiàn)等等。隨著程序門檻不斷提升,Pajak 也在思考 280 字符的代碼是否真的能夠?qū)崿F(xiàn)這些功能。因此,他轉(zhuǎn)向使用 Katie Anderson Windows 3.1 logo 的搞笑編碼(tongue-in-cheek encoding),以及 Paul Malin 經(jīng)典彈力球 demo 的復(fù)現(xiàn),后者通過特殊的編碼方式將 361 個 ASCII 字符代碼壓縮至 280 個 Unicode 字符的推特內(nèi)容。
Katie Anderson 的 Windows 3.1 logo 搞笑編碼。
Paul Malin 經(jīng)典彈力球 demo 復(fù)現(xiàn)。
如果有人想要在 Apple II 和 Commodore 計算機上創(chuàng)建類似的 Bot,Pajak 會給出指導(dǎo)建議。此外,Pajak 正考慮在實體 BBC Micro 上執(zhí)行這些推文,并表示已經(jīng)使用 Arduino MKR1010 將 BBC Micro 聯(lián)網(wǎng)了。