Tim: At this year’s YAPC::NA that is Yet Another Perl Conference: North America, I met with Andrew Dougherty. Andrew has been working for the last 14 years on a wide ranging artificial intelligence system called FRDCSA. Unlike systems like Apple Siri or IBM’s Watson his is based entirely on free software and has an interesting philosophical motivation. Let’s hear what he has to say. You are wearing a pair of headphones you got them on your neck, what are they for, what do they have to do with your project?
Andrew: Well, so I have a system which allows voice control of your computer, your free software AI, and it is not a terribly advanced system, but it is something that gives you a voice interface to your computer, and it is the start of something especially when you can do processing of the verbal commands, right now it is just using regular expressions that parse out the commands.
Tim: The headphones you are wearing, is that a two-way, do you have a mike that goes back, or is that right now just offering audio prompt?
Andrew: This is a Bluetooth that goes to my cell phone. And so the media button, when the software is installed and the web service is on my server at home, which runs the FRDCSA, are running, then the media button activates the voice prompt which says yes, and then you just say what you need it do, it helps you out, you can ask it a question, an actual question, it uses ____1:28 to render the answer.
Tim: Can you just explain the software that this project encompasses a little bit?You have collected a lot of data and you’ve also collected pieces of AI software to deal with the data that you’ve collected. Can we talk about the data first? What sort of datasets? What kind of
Andrew: Well researchers are fabulous at releasing all kinds of data sets, and I have a system which is spidering the web looking for these datasets, and using text classification to recognize that it is a researcher’s page. There are other people who have done this, I am just repeating what they have done, and fetching as many datasets and metadata, trying to use ____2:12 to register the semantic data about the files.
Tim: What are some examples of datasets that you’ve collected?
Andrew: I can’t think of anything offhand. The problem is some of the data was lost with a hard drive failure, so a lot of the data portion was lost but the code thankfully is all intact, and it will just be a matter of rebooting.
Tim: Let’s talk about the code itself a little bit? What are some examples of what the code can do if you have structured data that it has access to? You have a collection of, sort of collected knowledge, what are some things that the software itself is capable of?
Andrew: Well, I will just use a couple of examples. One of my favorite systems is the Kinect system. And what that does is extract from text subintentional information about the text, so if you say, “Wendy got in the car,” it will say, “A female can get in a car”. And it abstracts to tell you what is possible and so forth. And this is really useful for building ontologies. So that’s one example. I didn’t really explain it well, but just look up Kinect. It is one of my favorite systems. I am using that to bootstrap the rules of the Free Life Planner.
Tim: Now the Free Life Planner, can you talk about that a little bit? What is it?
Andrew: Well, I think everyone, myself especially, can use a little assistance in trying to figure out how to plan in their daily lives, long term goals, what it is to lead a good life, and the life planner uses crowdsourcing to apply rules. Right now, all the rules are in books, and you can’t really you’d have to read all the books first to access the rules. And most people have read only a smattering of all the books that are out there, if you can compile all the rules into an executable format and run that on your computer, then you are a lot of the way there; obviously, the rules will conflict so you use trust mechanisms to determine which set of rules you believe in and so on. And there is also a systemic reasoning to try to arrive at beliefs. So all this is based on philosophy that I have read off of Wikipedia and so on.
Tim: That is a very ambitious goal.
Andrew: Thanks yeah.
Tim: Most software does things like you type a shopping list, this is something that is much more abstract and philosophical.
Andrew: It seems that it is easier to solve everything rather than to break it down and try to solve individual problems.
Tim: Interesting. There has been a lot of interest lately in AI and things like IBM’s Watson and the question answering software on Android and Siri on iOS. So yours is different in a few ways from that, and I want to ask you about some of the ways it is different. What is your motivation? You just touched on it somewhat with the Life Planner. Is that the same goal of improving life? Is that basically what you would describe the entire project is about?
Andrew: When I was a kid my sister died. And it was a very hard experience for everyone. It kind of broke our family. And I was just left with the impression that if something could have been done to delay that, that the world might be a better place. You know, it is counterfactual reasoning what would’ve happened had she lived, but I’d like to think that she would have touched a lot of lives, and so I just wanted to prevent bad things from happening to people, and I am not sure that I have an answer to that, but I am using the best techniques that I can find.
Tim: Can you give an example of ways that let’s say a danger could be prevented?
Andrew: Okay, I will give you an example that I use. I saw a video on the internet of a kid who walked in front of a train by accident, and with smart phones and communication systems, it should be possible to prevent that. There is also a system called Poseidon (I think that’s what it is called)a French company built it, and it watches underneath pools for drowning people. And if you are drowning, that is a very important system for someone to have built.
Tim: Sure. So there have to be a lot of hooks between things like sensor data, or crowdsourced observations that can help actually activate a warning or a response.
Andrew: And inference is generally the mechanism that I choose to use. I think the military has done great work in this area. I am a pacifist myself but if we can apply that technology to civilian life, and they are, because Siri uses, I think it uses Spark which is developed at SRI, so I am just trying to facilitate the conglomeration of free software so that these services can get into the hands of people. You do run into some issues when you empower people, because they might misuse that power. So I don’t pretend to have any political answers. And that is something that I want to study.
Tim: You mentioned that it is free software. That sounds like an important aspect to you of the entire project. Can you talk about the life?
Andrew: Yeah, I am a fan of Richard Stallman. He expresses things in simple terms, and I might just be caught in the glister of it all, you know, is it really free software? But I think that because the software is mutable for people and because it is a non rivalrous good so you can copy it endlessly. It seems like it is a closed system whatever you put in terms of functionality on the development end winds up immediately in the hands of users, and that can assist them and hopefully prevent bad things from happening.
Andrew: Yeah, I haven’t put too much thought into it. I am going with GPL version 3. Like I say, everything that Stallman has said rings true with me, but more sophisticated analysis of licenses would be welcome.
Tim: Now how long have you been working on this project?
Andrew: I have been working on this project for 14 years. That is right after I met the lady who I had mentioned. And I was very motivated to work on it, and I just developed the software as a result of that motivation.
Tim: Is it written in a modular style, where you got lots of small programs, or is the entire thing a sort of a monolith?
Andrew: Well it is in a way a monolith, it is modular there are a lot of dependencies between modules, and I am writing software to refactor some of that out, but right now it is kind of a monolithic project.
Tim: Is Perl your primary development language?
Tim: Or are there other languages involved as well?
Andrew: I wrap other languages but my development is in Perl.
Tim: So when you are wrapping other languages, is that mostly taking existing AI tools?
Andrew: Well, Perl has nifty things like the Expect library which allow you to wrap a screen like a terminal. And you can just execute terminal code and scrape it and parse it out. And so I wrap a couple of systems that way. And then there is also just running command line parsing parameters to the command line. And I am sure other languages do that as well, of course, but I just prefer to do things in Perl. Perl has the great application of CPAN.
Tim: In fact, I saw you talk here at the conference about Packaging CPAN. Talk about that a little bit. What do you need to have done to put the software that you’ve written into the CPAN repository?
Andrew: Oh okay, there are two directions. There is getting my software into CPAN and there’s packaging CPAN and Debian RedHat and RPM and Deb based formats and also for Microsoft formats. So packaging the software I have written for CPAN is there is a guy by the name Duke Leto, or Lito I am not exactly sure, but he is showing me how to do it. And it is something that has proven very hard for me over the years, to actually do this and he is walking me through it. And that little bit of help is much appreciated. That lot bit of help.
Tim: In the end ideally then with the sort of packaging you are talking about, so people will be able to simply say, apt get install Life Helper.
Andrew: Yeah. And it should be standard.
Tim: And when that’s true, when that’s easy for the ordinary person to have on their like you say, even if you are using Windows or other OSes what one thing is the idea? What do you want to see happen with this?
Andrew: Well, so there are different philosophical theories, and the one that I am familiar with eudaimonia and that is just a description of everyone living well. And I think that there are ways to improve, I don’t know that you can create a Utopia but it would be nice to have some kind of future where everyone’s hopes and dreams are realized.
Tim: Let me ask you one more question.
Andrew: My friend Justin Coslor says there are positive possibilities at every point in time for everyone. So he has got a book Possibilities and I recommend it. Sorry to interrupt.
Tim: No, no. If people want to join in, and contribute in some way, are there other ways for them to somehow add to your project.
Andrew: There will be ways to contribute but right now the best thing to do is just drop me an email with the subject of FRDCSA to me at firstname.lastname@example.org. It is not a dotcom, it is a dot org.