Video Ingy döt Net Tells How Acmeism Bridges Gaps in the Software World (Video) 164
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?
Ingy: Yeah.
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?
Ingy: Well, I would say, I started out in Perl, and made over a hundred contributions to CPAN, which is the place where all the Perl code goes. And then I started playing with Python and Ruby and JavaScript. And back in 2001, I helped develop a serialization protocol called YAML that tied all of these languages together at the data level, and that was really interesting to me. Since then, I’ve been trying out every new language I can find. My favorite language of the last couple of months is Bash. Bash can really be used at almost every level as a modern dynamic programming language, surprisingly.
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?
Ingy: I would say of the OSCON Languages which I consider to be Perl, Python, Ruby, JavaScript, PHP. I would say they are all almost equivalent in their capabilities. And so I actually write my ideas in the known subset, I don’t use stuff that only PHP can do or something that only Ruby can do. If I was going to write code specifically for Ruby, I would use the whole Ruby toolset but if I am going to use something to be shared across communities, then I would restrict myself to a subset. But it is not really that boring or anything. And I know that my audience is going to be much bigger.
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’?
Ingy: Let’s say, right now I am off in the weeds. You know, it is a lot of work for me and for anybody else that is going to do it, but I try to take those findings and quantify those into tools, so that As I said before, Bash is my new programming language, and I know that if I were to write so, maybe the audience has sort of CoffeeScript which is a very syntax for writing JavaScript but there is no reason why you can’t have something similar to that, that can generate all these languages at once. And Bash is very finicky and particular about whitespacing, about coding, but all the idioms are there, so if you could have a CoffeeScript that could generate Bash, I think there would be a lot more Bash backended programs to go just write them in a CoffeeScript syntax but they would be runnable in Bash. And Bash exists everywhere, much like JavaScript exists in every browser. Bash is in almost every OS.
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.
Been doing that since ages... (Score:4, Insightful)
That's called "using C"...
Yay, another hipster programming messiah!!! (Score:4, Insightful)
He's going to overturn decades of experience, hard work, research, and language development because HE'S A REBEL!!!
Wow, what a new idea (Score:2, Insightful)
...or, you know, not.
Christ, what a douchebag.
"Everyone, wait! It's all just 1s and 0s! I'VE SOLVED ALL OF OUR PROBLEMS!"
Re:Been doing that since ages... (Score:4, Insightful)
That's called "using C"...
Kind of. What you actually end up with is "the lowest common denominator"... a language that does everything, but with none of the advantages other languages are known for.
That's why you never see survivalists and electricians both using Swiss Army Knives as their primary tools.
Re:Yay, another hipster programming messiah!!! (Score:3, Insightful)
I'm approaching that too and thinking about becoming a hipster.
The thing is, why not?
I mean, who really cares?
Do I care what younger people think? No
Do I care what older stodgy people or people my age think? No
Am I going to die and no one will care anyway? Yes
Do I care that some AC thinks it is a ridiculous way to be? No
Is there a non-zero chance that some hot chick will find me interesting enough? Yes
decision made.
I haven't done it but I think that people have the right to be as ridiculous as we want to be. It is our life after all and we only get one and why should we be repressed during its short span?