@superformulabot – an interactive Twitter bot for exploring and sharing interesting forms
Continuing in my slight personal obsession with Johan Gielis’ superformula, I built out an autonomous Twitter bot that adds a bit of playfulness and conversational interactivity to the process of discovering new and interesting forms.
@superformulabot will automagically generate a new drawing every couple hours or so using parameters based on the current timestamp. The exact timing of this is randomized within about 15 minutes to keep the drawings interesting day to day.
Anyone can request a custom drawing from the bot at any time by mentioning it (with @) in a status along with a set of parameters as shown in this pinned tweet. The bot will use any valid parameters sent to it and randomize the rest, then reply back with the resulting drawing attached.
Full documentation of how to interact with the bot, how it works, as well as descriptions of each of the parameters can be found over on the project’s Github repository.
The bot was built using Node.js and headless Processing, then deployed to Amazon EC2 for continuous execution. The development process was heavily informed by the excellent example by Dan Shiffman in his Programming A-Z course. More details and references are available in the README on the Github repo.
How to interact with the bot
Superformulabot would love to create a custom drawing for you! Just @ mention it in a tweet along with a list of parameters, and it will reply to you with your very own drawing! You can provide as many or as few parameters as you’d like (including none), and the bot will randomize the rest.
Any tweets that do not contain at least an empty list (
) of parameters will be ignored so that the bot can be mentioned without unintentionally triggering it. In other words, the most minimal possible message that you can send to the bot in order for it to reply to you is
Anyone who stumbles upon the bot’s profile organically can learn how to use it from the following pinned tweet, or by visiting the project’s Github repository for more in-depth information.