Log in

Zach Beane's Blog

Practical Lisp 2008

A little more than three years ago there was a thread in
comp.lang.lisp
about what
people were working on in Common Lisp. I found the replies, some summarized
here, quite
inspirational; they were from people doing practical stuff (even
Real Work) with Common Lisp, beyond things like going through
Project Euler or doing exercises from SICP. (Not that those aren't fine things to do, but.)

Let's update this. What are you using Common Lisp for in
2008? What are you using to do it? I'll start:

I mostly use Common Lisp to make graphics toys
at Wigflip.com. To that end I'm
always looking for new ways to produce or consume graphics-related
things. For example, I'm adding support for
processing OpenType
fonts to ZPB-TTF
and making a hybrid
of Skippy
and Vecto to produce
simple vector-oriented animations. I'd also like to
add APNG
support to ZPNG.

Comments

I am using Lisp for numerical computations

I am an economist, I am using CL (SBCL, with SLIME and Emacs) for obtaining numerical solutions to economic models. CL is extremely fast, easy to work with, and an ideal language for computational work where each problem is a bit different and you have to experiment until you find the appropriate algorithm. You can utilize existing C code very easily (eg see my package cl-sparsematrix (http://www.cliki.net/cl-sparsematrix) which links to UMFpack). Tamas

I'm using SBCL on Linux x86 to perform automated inventory of the 436 computers in the ORBIT (http://www.orbit-lab.org) grid. CLSQL made it very easy to get the database transactions to open and close in just the right places so that up to 400 of those computers could report their hardware at the same time. It was trivial to write a package that read all the data I needed from Linux sysfs, and parse it using CL-PPCRE.

I am working for ITA Software as a hacker, mostly programming in Common Lisp. I also maintain two commercial projects using CL: http://quickhoney.com/ is an image database used by two graphics designers to publish their work on the Web, the other is http://createrainforest.org/ which is a web site to gather donations for an Orang Utan preservation project in Indonesia.

Both systems will be majorly updated during this year. RSS feeds are high on the list, Quickhoney wants a shop and createrainforest.org will move into Google Earth. They currently run on cmucl 19c, but they will either be upgraded to cmucl 19e or SBCL for better Unicode support. They are both based on the http://bknr.net/ framework and deployed on FreeBSD. I am pretty much absorbed by ITA work, but I have a hacker working on BKNR and the associated projects full-time.

We are also working on the Framework to make it officially support CCL, SBCL and cmucl (as soon as 19E is released). One of our goals is fully automated testing of BKNR and its dependencies on all supported platforms. We are currently testing on FreeBSD/amd64, FreeBSD/i386 and Linux/i386.

web things

I'm (we are three involved) doing a web startup called stix.to (http://stix.to), we create a new layer on top of the internet. It means you can put videos, pictures and texts on top of any page you are visiting, and other people will see what you have added when they get to the same page. A plugin for you browser gets you the full feature set, you can also see pages without any plugin, see our ad on superbowl (http://stix.to/keyhole/*/www.azsuperbowl.com/events.aspx).

We use an old branch of parenscript, and an internal lisp/parenscript integration framework for the things that interact with the plugin. The persistence layer is elephant, to which we made a new postgresql storage backend. The web server we use is the ucw_ajax branch of UnCommonWeb. We use cl-json connected to ucw to make a json-rpc interface for communicating between the browser plugin and server. And of course we use all sorts of other open-source lisp libraries for various things.

On my spare time, I'm doing the usual stuff: Trying to design my own perfect persistence solution, and trying to find a way to make the perfect cpan for Lisp./Henrik Hjelte

Currently, I'm mainly using CL for a private hobby web-app. When I started some 1,5 years ago, I was wondering at all the marvellous libraries that had popped up for CL (I'd done AI related lisp programming in the 90s), so I wanted to try stuff like CLSQL, CL-PPCRE, CXML and UCW. In addition, my day job had me absorbed in text manipulation and I thought I would need to do a little bit more straight programming in order not to forget that some day or other I had achieved a CS degree. I think the experiences I made will be a benefit for my next job, although it's gonna involve Python, but anyway.

Ah, and recently I had the chance to use CL at work, pulling data from some KR schema.

High Performance Computing

I'm using Common Lisp to make compilers for High Performance Computing systems.Right now, this makes Lisp the highest performance language for numerical computations as we routinely beat C/C++ programs by 2 orders of magnitude. :) All the system management/monitoring applications are also written in Lisp with my own webapp framework.

Re: High Performance Computing

Which language do you compile from? Your comment above suggests that it is Lisp, but it would have to be a subset of Common Lisp, right? Beating C/C++ with two orders of magnitude sounds like a tall order, unless the C/C++ applications were written by physicists :-)

It would also be nice to see some detail about the compiler like how its organized, optimizations, design of the intermediate code, its speed.

Just a few years past, I had the chance to use CL for structural revision control of XML in a commercial setting, among other interesting things.

This year, although I'm not getting to use it "directly" so far, I have been using CL as a preprocessor to generate Java source as well as JVM bytecode in a commercial system for certain kinds of optimized database queries (the system also uses a Scheme-ish DSL implemented on Java).

On the hobbyist side, I've been doing some experimentation with little optimizing compilers in CL, one or more of which I hope to release as open source when it gets a little more mature.

I’m a librarian and pretty new to lisp (but loving every second of it!). Right now I’m working on a web application (very, very much in the prototype stage) that would allow people to catalog any type of ‘things’ they wanted by initially describing the properties of the particular thing and then creating records based on those properties. Essentially it’s a very simple interface to allow anyone (even people who can’t program) to play with simple objects, with the practical side that it would enable an individual to literally catalog anything that they can describe: socks, empty beer bottles, coffee beans, whatever. See, mere mortals can use lisp!

2008

Webapplications. Add the moment I am building an intranet-application for my main-customer: a contentmanagement-system to manage geographical data and various content. I use sbcl, hunchentoot, clsql and postgresql.

It is always a little problematic to argue with the java-people :), but my production-cycle is around 4times faster with common lisp ... :)

code generation

I'm using SBCL (with cl-yacc) to parse a text file defining a communication protocol, and generate C# code from it. This is used in a large commercial .NET application. I'm also using Lisp for support tools to keep the DB and code base consistent and up to date.

I use Lisp to support my Flash work.

I make games in Flash and use Lisp for anything I need that Flash can't handle. I use Lisp to generate levels for some games, to catch debug and profiling data from running swfs, to save data from Flash to the server, and to generate dynamic web pages. It's very convenient to run my site with Hunchentoot so that I can add any kind of server-side support to a swf.

CAPI and error correction

For most of 2007, I worked for ITA, but I quit in November. In December, I wrote a couple of error correction algorithms (Reed-Solomon, BCH, etc.) which are supposed to become a part of a large simulation platform done in LispWorks. Right now, I'm porting a graphics-intensive MCL application to Windows using LispWorks and its CAPI. The latter project will be finished in a few days and incidentally I'm looking for the next one, so if you have interesting Lisp work, let me know... :)

Dead languages! (Lisp is like ancient Greek, no?)

I'm really not a huge fan of the web — insanely impoverished interface, a nuisance to debug, stateless nightmares galore. And yet I, too, am working on a web application. In November the Perseus Project (http://www.perseus.tufts.edu/) open sourced a bunch of their Greek and Latin texts along with the scary Java code that runs their site now. I'm trying to write my own stripped down interface to the texts (view, morphology and dictionary lookup) at first, then add the ability for anyone to annotate bits of text with questions, grammar comments, etc., etc., a Perseus-wiki hybrid (with fussier editorial control).

I'm a Unix sysadmin by day, and I've not yet decided to alienate my colleagues by using Lisp at work, though if I ever decide to finally revolutionize the practice of system monitoring, it sure ain't going to be in perl. That day approaches.

I use mostly SBCL on OSX and Linux, Emacs+SLIME. I, too, use a lot of Edi-ware, but thanks to the XML encoding of the Perseus texts, a lot of Lichtblau-ware, as well.

What I do with Lisp

I work for a tiny billing company and maintain some Lisp which automates the billing process. I use Clisp 2.33 (I think) on MS Windows 2000 and pretty much nothing else. I shell out to external programs a lot during the process (oracle, command line c++ programs, curl, etc). It seems like I should write more lisp so as to remove the requirement to shell out to an external program, but those other programs are used periodically outside of the billing cycle. So, it just hasn't made business sense to tackle those issues. It's a fun project and the code is extremely resilient to change. Features can be added easily. It has been running for the past couple of years and was written when I was first learning lisp, so it's not the best lisp, but still works! woot! At some point, I'd like to do some major refactoring to clean up the code as well as upgrade to a newer version of Clisp.

Go engine

I'm writing a Go game engine using SBCL on Linux x86-64 and x86. It's currently capable of playing only random games against itself, but my intention is to develop a strong bot that can connect to CGOS or KGS, and be a tough competitor.

webcloseaction.com

I am using Lisp as the back-end game engine for a naval simulation war game. Right now it is simple GNU Clisp, though I use SBCL with Slime during development. Later I will use SBCL with lots of ASDF packages as I move to a more stable and professional deployment.

Bio stuff

I'm using lisp for bioinformatics and computational biology. Right now, I build an interface to the Ensembl genome database, based on SBCL and clsql. Subsequent data analyses are done in CL, too. Whoever said that there are no lisp libraries has stoped looking quite some time ago.ALOK

Browser game

Old Faithful White Elephant

... is CL to me. Something I never really get the time to get suitably skilled in, yet I always return to it whenever I am hunting for that good old feeling which writing a good program used to give me.

Use so far (personal project) has been implementing some of the simpler methods for technical analysis of stock quotes, with automatic mining of data from a number of web sources. I am currently baking it into Hunchentoot to make it into something useful. I use SBCL on FreeBSD for serverside things, LispWorks Personal for most development, and of course emacs+slime. I do plan to take the leap of faith by purchasing a LispWorks license, but they are still a bit too pricey for a no-budget project unfortunately.

Working in a very C++-oriented industry, I really use CL most to point out to my fellow programmers how bloated and ugly any sort of C++ code looks in comparison. "What, is that a class definition with accessors and all?" :)