and you turn that special capability to a human purpose, to something you want technology to do. In the case of magnetic materials, there are plenty of ways to do that. In terms of programs, it’s the same story. There are all kinds of programs out there, even tiny programs that do complicated things. Could we entrain them for some useful human purpose? And how do you get Als to execute your goals? One answer is to just talk to them, in the natural language of human utterances. It works pretty well when you’re talking to Siri. But when you want to say something longer and more complicated, it doesn’t work well. You need a computer language that can represent sophisticated concepts in a way that can be progressively built up and isn’t possible in natural language. What my company spent a lot of time doing was building a knowledge-based language that incorporates the knowledge of the world directly into the language. The traditional approach to creating a computer language is to make a language that represents operations that computers intrinsically know how to do: allocating memory, setting values of variables, iterating things, changing program counters, and so on. Fundamentally, you’re telling computers to do things in your own terms. My approach was to make a language that panders not to the computers but to the humans, to take whatever a human thinks of and convert it into some form that the computer can understand. Could we encapsulate the knowledge we’d accumulated, both in science and in data collection, into a language we could use to communicate with computers? That’s the big achievement of my last thirty years or so—being able to do that. Back in the 1960s, people would say things like, “When we can do such-and- such, we’ll know we have AI. When we can do an integral from a calculus course, we’ll know we have AI. When we can have a conversation with a computer and make it seem human... ,” et cetera. The difficulty was, “Well, gosh, the computer just doesn’