Interview with Samantha Kleinberg on CL-GODB, Common Lisp & Bioinformatics

-- Turkish translation of the interview --

Samantha Kleinberg from New York University is one of the software developers who participated in Google's Summer of Code in 2005. She has developed CL-GODB project using Common Lisp. Her having used Common Lisp and becoming one of the Google celebrities drew our attention and we didn't hesitate to ask about the details. She has provided clear-cut and right-to-the-point answers. We're on air...

Emre Sevinc: Samantha, can you give us a little information about your background? When and how did you start playing with computers? Which areas of computer science are you specializing in?

Samantha Kleinberg: I started using computers in 5th grade but I didn't start programming and really learning about computers in that way until my senior year of high school. I interned in Mount Sinai's Biomathematics department where everyone was very patient and encouraging, despite the fact that I didn't have any of the required skills when I started. My favorite (and most humbling) memory from that time is asking the system administrator how to convert a text file I'd made to ASCII. But, I read Unix in a Nutshell cover to cover and picked up Perl and MySQL as I went along. After majoring in Physics and Computer Science, I've come back to Bioinformatics. I enjoy being able to apply my programming, mathematical, physical and biological knowledge to problems that have a clear effect on people's lifes.

ES: How were you involved with Google's Summer of Code program in 2005? What were your motivations?

SK:My project was one of the ones chosen to be funded by Google. There wasn't much interaction with Google, though there was a very active Google Group where people posted. I applied at the suggestion of my mentor and thought it would be a nice motivation to get the project done in a set amount of time as well as get paid for it.

ES: Why did you choose CL-GODB project? Why Common Lisp? Who were your mentors and what kind of project management took place?

SK: The project was something I'd talked about with Marco Antoniotti, who thought it would be a useful tool and a way to learn Common Lisp. I used Common Lisp because the program it would be integrated into, GOALIE, is written in Common Lisp, and the mentoring organization was LispNYC. I worked mainly with Marco who gave me general guidance and was there to help me make my code more efficient. I tried to figure things out on my own as much as possible, but Marco was always around to help when I got stuck.

ES Had you ever been exposed to Common Lisp before? What were your first impressions?

SK: I'd never used it before and was very used to programming in C. So, my first impression was that there were a lot of parentheses and that it was difficult to remember where to place them.

ES: How long did CL-GODB project take? How much Lisp did you know before you started project?

SK: It took approximately 2 months, and was my first Lisp project.

ES How was your working environment, which platforms did you prefer, what kind of toolkits and toolchains did you use?

SK: I used Lispworks Enterprise Edition on Windows XP. We considered both Wwindows and Unix databases, and the functions will run on most platforms, but the graphical interface is geared toward windows. I normally write my C code in ConTEXT and then compile with gcc, so the Lispworks environment required a big adjustment. Once I figured out more of the features I really liked it and found its features useful.

ES: What were your primary sources of information and technical support (books, forums, Usenet, mentors, etc.)?

SK: I started with the book "Practical Common Lisp" and then mostly consulted my mentor and the Lispworks. manuals.

ES: In your DDJ account of Summer of Code you state that a standalone GUI is developed: CL-GODB Viewer. Was that also developed using Common Lisp?

SK: Yes, the entire project was done in Common Lisp. I was actually surprised at how easy it was to create a standalone application in Common Lisp. Aside from a DOS game I created for a class (in a combination of assembly and C), I'd never done anything like that before. For me, that was one of the most exciting parts of the project, because I'd always thought it would be so difficult to make something like that. It was great to go through the whole process from concept to application to documentation.

ES: Is Common Lisp a potential candidate for your future programming projects? What is your subjective comparison with other languages that you programmed in? Is Common Lisp only for AI and scientific computing or does it have a place for other fields of programming?

SK: Since I've finished the project, I've continued programming in Common Lisp and have come to love it. For me, it's much more intuitive and easier to learn than Java, and I've appreciated that it's much less rigid than C. There can be pitfalls, but it's nice to not be tied to specific types or worry about pointer arithmetic. I think it's a great language to learn, if only to gain a different perspective on other languages and the way you code. I took an artificial intelligence course and after using C for my first two projects, doing the third in lisp was like a gift. It's particularly well suited to AI, but I'm currently using it for mathematical and database projects. I can't compare it to any other method, but I found that it was pretty simple to create graphical interfaces and would reccommend it to other people looking to do that. I've even convinced some of my friends to use Lisp for their projects.

ES Would like to add anything for our readers who are interested in programming and Lisp?

SK: If you haven't used it but you're thinking about it, go ahead and give it a chance. It may take some time to get used to, and you may not use it for everything, but it's a worthwhile language to learn.

ES: Thank you very much for the answers. Happy hacking :)