Ingy: Hi, my name is Ingy dot Net. I’ve been attending OSCON for many years. I came for the first one in 2000 down in Monterey, and there were some in San Diego, once in Portland, even one in San Jose.
Tim: This time you are actually here against doctor’s orders in a way.
Ingy: Yeah, so I was supposed to have a surgery tomorrow on my eight broken bones. But I told the doctor I had a talk to give at OSCON, and might have to postpone it.
Tim: So are you just biting the bullet to keep back the pain?
Tim: So what are you going to talk about here at OSCON?
Ingy: I am going to talk about my favorite speaking subjects, Acmeism, it is actually a term that I coined at the 2009 OSCON which was in San Jose. And I just realized that all of my programming has been involving multiple programming languages at once, and there should be a name for that. So I decided that the name for that would be Acmeism. And I’ve been giving Acmeism talks around the world ever since.
Tim: So what are some of the programming languages that you’ve worked with before that have led you to realize that you are using different languages?
Tim: So why do you call it Acmeism, what do you mean by that?
Ingy: Well, Acmeism originally meant it originally was in 1910 to 1912 a Russian poetry movement with six members out of St Petersburg, Russia. And they had some meaning that I am not really too familiar with. But it kind of died out. And so the name was out of circulation for a hundred years, so I figured it was up for grabs again, so I bought all the domains.
Tim: Does that
Ingy: Yeah, they don’t have the domains at all. So I clearly own the name since.
Tim: The concept of programming in any language is attractive, how does it work practically, how do people take knowledge of one or another language domain which can be very different, and come out to some desired end. How do you tie different kinds of programming together?
Ingy: Well, Acmeism is really about it is really about cultures less than programming, it is about certain people in programming cultures who offer gifts to their communities, sometimes these are called modules in Perl and CPAN contains all of the modules. Or more generically, they are called packages, installable units. And I think of these things as gifts to other programmers but if you can give your gifts to several programming languages at once - it is actually very hard to do, and takes a lot of work, but that’s what I think of what Acmeism is - taking your best ideas and getting them past language barriers. Acmeism isn’t necessarily tied to programming. I like to leave that open to natural languages as well. I am taking the English gifts and giving them to the poor French – that kind of thing. But I keep all of my personal efforts in Acmeism to programming.
Tim: So what kind of code does it take for someone to enter that? Like if someone wants to contribute in a way, to write code in a way that puts in more of other people’s lives. What makes Acmeism different from simply writing a program in Perl or writing a program in Python? What is the transformative step?
Ingy: Well, if you create a gift for the Python community, you write some code, you write some documentation, you make it really nice to install and to use, a nice API, has lots of tests, and you package it all up, and it is very easy to install, but it doesn’t do, if that programmer then goes to the Perl community and says, “I really like that gift that Tim gave me, but I can’t use it here because it doesn’t exist.” Well, the work that is necessary to do that is to take the same idea and port it, port every bit of it - the tests, the code, the documentation, and the packaging, over to the different languages that you want to gift it to. What I’m trying to do is come up with more and more tools that make it, so that I can write one set of docs, one subset, one set of code, one set of packaging rules that will create the same gift in a lot of different cultures with the press of a button. But it has a long way to go; but it is coming along more and more every year.
Tim: What’s the example of a tool like that? What sort of tool can you create that helps people create across platform or across language in a piece of software- what makes that simple?
Ingy: Well, you have to think of your ideas and abstractions. And all of these programming languages that people are using are really doing the same thing. They are just ways for people to tell computers what to do. And people get religious about their languages. But they are really just different ways to do the same thing. And what I found when I port code between these similar languages, (I call them the OSCON Languages, which is nice, because we are at OSCON right now, or the O’Reilly Languages sometimes I call them),when you are in these dynamic languages, you can actually port line for line, idiom for idiom, variable for variable, construct for construct. And once you have your idioms done, the porting becomes just work, but if you can make tools that actually do that work for you, then the bootstrapping is accomplished.
Tim: Is it easier to do in some languages than others? That is to say, are there some languages that transfer more readily to translation, that lend themselves to translation more?
Tim: If someone wants to do that, is it easy to determine what that subset is? Is there a good reference someone could say ‘this command will work across all those or other languages’?
Tim: If people want to join you in the quest to bring anything they write to more and more languages at the same time, what is a good way for them to get started? Are there resources that you direct them to look at?
Ingy: If people are interested in these ideas, I think the best place at this point to start is to drop by # acmeism and irc.freenode.net - the IRC network, and you can talk about it. Or find me here at OSCON.
Tim: Are there websites, domains to look at?
Ingy: Acmeism.org might be a good starting point.