What Next?

I hope you have enjoyed this introduction to doing magic with computers. For those wishing to proceed further down the path of the Tinkerer-Sorcerer, I have assembled some suggestions for what to get into next.

Design More Interactions

The interactions I have shown with these example projects are but a minute set of what is possible. Survey what others have done with Scratch and see what you can adapt to your own sorcery. Look at what computational media artists are doing, and if you can imagine an occult application for something you see, try to do it (or something like it) with Scratch.

Here are a few ideas that did not make it into Technomancy 101 (I may add them later):

  • ForcePush — use the WeDo’s distance senor to push (or pull) a sigil (where to or from? into or out of what?) as you move your hand toward (or away from) the sensor
  • LifeBreath — trigger an event by blowing into a microphone or the PicoBoard’s sound sensor
  • LeafBoard — combine the leaves of magical plants with MaKey MaKey to trigger a different event when each leaf is touched
  • StaveStrike — use a pressure sensor to trigger an event when you strike the ground (or other object) with your wizardly staff
  • SpiritBox — conceal a wireless speaker inside a wooden box, to speak messages “from beyond” when consulted

Use Cloud Data

Scratch has the ability to store certain data on the server, called cloud data, allowing for persistent data or for multiple people running the same project (either synchronously or asynchronously) to write to or read from the same data set. I did not make use of cloud data in any of the Technomancy 101 projects because they are made to be run offline, and because the ability to create cloud-data variables is restricted from scratch.mit.edu accounts having New Scratcher status, but here are a few things you could do with cloud data if you care to experiment.

  • Modify the SIBOR project to keep track of its “energy” over time, and give a sign when it requires more. E.g., you could arbitrarily determine that it will perform seven enchantments before it will need to be “fed” again (or you could make the amount of energy expended proportional to the (im)probability of the enchantment), or if you are skilled at communication with spirits, you could ask it for a rate. Then create a cloud-data variable that increments each time you task the servitor with an enchantment (or that decrements if you want to start with a “full bar” of “energy” that becomes depleted). You can make a GUI element in the project that reflects the counter value, such as an “energy bar,” or just display some notification: “This is the seventh enchantment I have performed for you since my last feeding. Please make me a suitable offering after this.” You could even make the project refuse to work for you until it receives the payment agreed upon.
  • Make something like the SigilShooter project that involves multiple technomancers in a coordinated, online cyber-ritual. You could assign the target sigil a number of “hit points” that are decreased as participants attack the sigil; this variable would be stored on the cloud. You might make the sigil flash or give some other indication every time it is hit; or keep a “health bar” on the screen, which reduces in proportion to the falling hit points; or change the sigil’s costume to show it deteriorating as its hit points diminish.
  • You can use the cloud to receive data from or send data to a Scratch project running on a remote computer. E.g., you could have a computer running a project connected to a PicoBoard or LEGO WeDo set at home, and run the same project from a remote location where you read data from the PicoBoard’s sensors or activate the WeDo’s motor. I leave it to you to imagine the occult applications.

Upgrade Your Hardware

The “Physical Computing” appendix gives many upgrade suggestions. Additionally, there are several microncontrollers and single-board computers that can be programmed with graphical programming languages similar to Scratch. Adafruit’s Circuit Playground Express can be programmed with Microsoft’s MakeCode (as well as CircuitPython—v.i., s.v. “Python”), and the Crickit robotics board adds several interfaces for physical computing. The Parallax FliP and Activity Board, which feature the Propeller multi-core MCU, may be programmed using BlocklyProp. These systems allow you to design more complex circuits than you can make with Makey Makey or PicoBoard.

Speaking of circuits, another path to better hardware and interactions is learning electronics. The “Recommended Reading” list includes several books for various levels of experience, and both Adafruit and SparkFun have online tutorials across the spectrum of experience but that are focused on hobbyists and tinkerers.

The material artifacts featured in Technomancy 101 were made with pretty simple and common materials and techniques. Much more is possible with screen printing, chemical etching, laser cutting, 3D-printing, soldering, &c. Again, some of the titles listed in the “Recommended Reading” list can help get you started with such tech.

Learn a New Language

Have you tried any of the languages inspired by Scratch?

Scratch is a legitimate programming language that excels at doing certain things such as making interactive animations quickly. There are many things you can do with Scratch, but also many you cannot. To do those other things, you need a different language. There are hundreds of programming languages out there; some are quite general while others are more specific to certain applications, but they all have different strengths and weaknesses in various contexts. Following are the languages I use and enjoy the most.

Python

Python is a general-purpose language that is easy to learn but robust enough for a wide variety of applications. Like Scratch’s extensions and modifications, Python has modules, packages, and libraries available for various subjects and tasks, e.g., pygame for making video games, or pyro for robotics. Python is a good first move from block-based to text-based programming, and there are free, online tutorials to assist with that transition. Python comes bundled with the Raspbian operating system for the Raspberry Pi, and there are also many tutorials for programming the Pi with Python.

Processing

Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts” (processing.org). It is the language I first began doing technomancy with, and I still do much of my work with it. Overall, Processing is my favorite programming language. It works great for doing things with images, sounds, and video, and so it is in some ways a natural next step up from Scratch. The Processing IDE was the inspiration for the Arduino IDE, and Processing and Arduino work well together—like a more advanced Scratch + PicoBoard.

JavaScript

JavaScript is used mostly for web programming and especially for interactive elements in a web page, but it is so popular it has been extended to other applications including as robotics, physical computing, and the Internet of Things. There are two JavaScript implementations of Processing: processingjs and p5.js.

C

C is one of the oldest programming languages, and it is still one of the most popular overall (usually jockeying with Java for first place). C has a reputation for being “close to the metal” (though not as close as assembly), and it is widely used for programming embedded systems and robots. If you really want to understand how computers work, on their own terms, you would do well to learn some C.

  • Learn to Code with C (on the Raspberry Pi) by Simon Long
  • The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie is widely held to be the best C text book
  • The C Book by Mike Banahan, Declan Brady and Mark Doran is the other best C book (the second edition is freely available online here)
  • J. Erickson’s Hacking: The Art of Exploitation is one of my favorite introductions to C and shell scripting

MIT App Inventor

There are many mobile applications one could develop for occult activities, and several of the Technomancy 101 projects would work well as apps for phones and tablets. You can develop mobile apps with some of the languages already mentioned, but the MIT App Inventor is a visual language inspired by Scratch that includes blocks for interacting with common mobile device sensors.

Game Engines

Game engines are especially well suited to technomancy because computer games usually involve doing interactive things with images and sounds. Also, making games is a fun way to learn to code (my first programs were BASIC games in the early 1980s). When I began learning Python, I found that my experience with making Processing GUIs for Arduino translated well to PyGame and PyGame Zero (a simpler implementation of PyGame), and there is even a tutorial for going from Scratch to PGZ (if I were to make a Technomancy 201, it would likely feature PyGame Zero and a micro:bit or Circuit Playground Express).

Two of the most popular dedicated engines are Unity or Unreal. Both are used regularly to produce everything from big-budget, commercial games, to independent and experimental titles. They are also used to develop for virtual and augmented realities, which are currently undergoing a renaissance. With a mobile phone, a cardboard box, and a free game engine, you can rapidly make stuff that is in many ways superior to what pioneers were working on during VR’s first big boom in the 1990s. Both Udacity and Udemy offer courses in VR development with Unity and Unreal Engine, and some of the beginner tutorials are even free.

If Unity and Unreal are bigger than you need, try a smaller engine or framework, e.g., Godot or Phaser.