Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming

Video Ingy döt Net Tells How Acmeism Bridges Gaps in the Software World (Video) 164

Video no longer available.
Ingy döt Net (yes, that's his name) likes to bridge gaps in the software world. People get religious about their favorite programming languages, he says, but in the end, no matter the language, the methodology or the underlying OS, all programming is about telling computers what to do -- from "add these numbers" to complex text manipulation. Ingy compares a new app or module in the world of Free and Open Source as a gift that the creator has given to others; if that gift can be simultaneously bestowed on users of Perl, Python, and Ruby at the same time, its worth is amplified. So he proposes (and provides a growing set of tools) to make programming language irrelevant, by the sly means of encouraging people to write software using whatever their favorite tools are, but with a leaning toward using only language features which are broadly available to *other* programming languages as well. He's adopted the term Acmeism to describe this approach; Acmeists who follow his lead strive to create software that is broadly re-useable and adaptable, rather than tied only to a single platform.

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.

This discussion has been archived. No new comments can be posted.

Ingy döt Net Tells How Acmeism Bridges Gaps in the Software World (Video)

Comments Filter:

What is research but a blind date with knowledge? -- Will Harvey

Working...