Common Lisp bits

Heinrich Apfelmus has updated to the source code from Computer Models of Musical Creativity and put it on github. Looks like it's meant to work with RMCL.

"CEPL is an extension for common lisp that makes working with OpenGL simple and familiar," according to Baggers. There is a blog and a number of videos about CEPL. The readme cautions: PRE-ALPHA.

"BG" gives a take on the history of Macintosh Common Lisp. Rainer Joswig responded to a number of points in the ensuing /r/lisp discussion.

3bgl-shader is "a Common Lisp DSL for generating GLSL shaders," by Bart Botta. Needs people to try it out and provide feedback.

Pseudo is a Lisp-powered roguelike multiplayer browser game, with AGPLv3-licensed source code available. Created by Matthew Carter.

The Infected is a roguelke survival horror game in Common Lisp, by Jan Tatham.

Mariano Montone writes about embedding Python syntax (and functionality) in Common Lisp sources.

Where to get help with Common Lisp

There are several options for getting help with Common Lisp.

First, some general sources of help.

  • Any coherent question posted to Stack Overflow with a Common-Lisp tag gets answered very quickly by a number of informed people. Rainer Joswig in particular has answered hundreds of questions with quality information. There are many other people who provide quick answers, too. Answers are scored, and, in general, helpful answers score highly and unhelpful answers are moderated away.

  • Questions posted to reddit's /r/lisp and /r/learnlisp subreddits often get a number of answers quickly as well. In my experience, there are more eyes and answers on /r/lisp. I think it's fine to ask novice questions there. Answers are scored, and unhelpful answers are usually downvoted.

  • Freenode #lisp IRC is good for realtime interaction. Questions, even novice-level questions, are welcome there, but it helps if your novice question comes from reading a good book and getting stuck. On-topicness is cherished; if you're bored and want to talk with IRC friends about your day, try somewhere else. It is moderated for topic (you might get scolded for talking about stuff other than Common Lisp) and for spammers/trolls (who get kicked and banned). It is not moderated for quality of helpfulness; it can be the case that five people attempt to provide their vision of helpfulness at once, and the most enthusiastic (or just the fastest typer) will dominate the content. It can be difficult at times to tell who, if anyone, is being genuinely helpful. But the quick feedback loop of IRC can be invaluable despite its drawbacks.

  • The mailing list has some high-level discussion among Common Lisp "pro" users. I can't find the original announcement for this list, but the general idea is that it is for people who use Common Lisp in a professional capacity, not people who are figuring out how conses or macros work.

  • I've never really gotten into it, but seems to be active.

  • comp.lang.lisp still has some helpful people who read and respond to questions. It is wholly unmoderated. There are several people (WJ, gavino, and others) who have been posting troll threads for years. The signal/noise ratio at times can be terrible. Those who remain have learned to manage a killfile or are gluttons for punishment. Don't read or post through Google Groups, which screws up formatting and has very little in the way of article filtering. I use for access, which costs a tiny amount. There are free servers out there as well. I read and filter articles with GNUS for Emacs.

Second, some implementation-specific help.

Every implementation has a mailing list. Some have multiple lists, depending on the topic of discussion. Here are some of the lists I know about:
Finally, there's a Quicklisp mailing list for Quicklisp issues. All questions about Quicklisp are welcome.

When appealing to any of these sources for help, asking good questions is critical to getting good results. In many cases, that requires three key bits of information:

  • What did you try? Actual source code can be hugely helpful here. can be a good place to put it.

  • What did you expect to happen?

  • What happened instead? Actual output and error messages can be hugely helpful here. can be a good place to put it.

Sometimes this info isn't applicable, like for "What is a good book for learning Common Lisp?" (Practical Common Lisp, Paradigms of AI Programming). But in many cases, having those three things readily available will save a lot of time.

There are dozens of people ready and willing to help you with your Common Lisp questions. This can work very well as you're getting oriented and learning the basics. After the basics, though, you may find questions going unanswered: "I'm compiling commonqt for ecls on raspberry pi and I'm getting a segfault in my custom gcc fork..." nets no helpful answers anywhere you ask. Don't worry! This is your chance to be a pioneer! When you do find a solution to your problem, share it in public so those in the future with the same, weird problem need not feel so lonely. And answer the question yourself the next time it comes up on a mailing list.

You may also get conflicting help as well. Some people believe that nobody should ever use LOOP, and others feel that for the right situation, nothing's better. Some people will tell you that you must use Emacs to write Common Lisp, and others feel there are other reasonable options. Some love the Common Lisp Object System, and others are wrong. It's up to you to sift through the information and decide for yourself what makes the most sense. And how boring would it be if everyone agreed about everything all the time?

I love to help people with Common Lisp. It's most rewarding when the questions show an interest in Common Lisp and a desire for progress and understanding. It's least rewarding when the questions show disdain for Common Lisp ("Why is this so convoluted and dumb?") and no interest in anything but a quick answer ("I'm taking this dumb course and after it's done I will never use LISP again. So can you just explain how to remove quote marks from a list?").

Have fun, and I hope the next time you need help with Common Lisp, you get what you need. Good luck!

Starting a Lisp project in 2014

If you're starting a project today and you want to make it easy to interact with the outside world, there are many, many, many services available. If you're feeling overwhelmed with all the options, here's what I'd recommend to get started:

  • Manage sources with git and host the code, issue tracking, and website on github

  • Get a blog on Tumblr or Blogger if you want to write extended info about what you're doing, in addition to regular documentation

  • Set up a mailing list on Google Groups to provide support to your users

  • Tweet about it on twitter for another easy way to reach out to people who might be interested in short updates about your stuff

After a while you may find one or more of these options lacking. That's a good time to start shopping around and exploring other options. But when you're just getting started and you want to get up and running quickly, give them a shot.

Common Lisp bits

The International Lisp Conference 2014 is history. I didn't make it, but Julian Squires did and provided a nice write-up. So did Nick Levine.

Reddit user FightAnArmedBearP started a discussion titled "Should my startup attempt to use ABCL in a production environment?" The ensuing feedback from Mikel Evins, Cyrus Harmon, Mark Evenson, and others is of extremely high quality, with excellent information about using ABCL and other solutions for working with Lisp on the JVM. Highly recommended reading even if you think you'll never be in the same situation.

cl-autowrap by Ryan Pavlik looks to me like a genius way to do FFI wrappers without needing to use stub C programs and a compiler at build time. It uses c2ffi, a standalone C++ program, to generate specification data files you can distribute with your project, after which neither c2ffi nor a C compiler is involved in using the FFI wrapper. It's a work in progress, one of the Lisp In Summer Projects projects, but I'm excited about the potential.

Speaking of Lisp In Summer Projects, Janne Nykopp's Notewhacker sounds fun: it's a game for learning sheet music notation, with MIDI instrument support.

elPrep is a LispWorks-olnly, BSD-style-licensed "high-performance tool for preparing .sam/.bam files for variant calling in sequencing pipelines." I don't know what that means, but it's a full Common Lisp application for the purpose, and it looks neat. From Charlotte Herzeel and Pascal Costanza.

Ezra Rush has written networked, OpenGL battleship and pong games. They use Patrick Stein's userial game protocol example.

Slugmage is a work-in-progress game from Alyssa Carter. "I hope to turn Slugmage into the game it was meant to be!" Uses SDL.

Testament of the White Cypress is "a fantasy role-playing adventure game for your Windows, Mac, or Linux PC. Using the mouse and keyboard, a single player controls a lone monk named Geoffrey as he travels through a post-apocalyptic wilderness." From David O'Toole, using his Xelf game engine. It has split licensing: the code is GPLv3 but the music and art assets are not freely redistributable.

Nicolas Hafner takes a shot at explaining CLOS to the uninitiated.

site-generator is a "command-line static site generator that supports arbitrary content and multiple languages." By Alex Charlton. (Not to be confused with Philip "Don't Call Me Phil" Greenspun's SITE CONTROLLER.)

qlot by Eitaro Fukamachi is a project-local library installer that uses Quicklisp. "This aims to be like Bundler of Ruby or Carton of Perl." Seems interesting, though it comes with a big "ALPHA quality" warning.

International Lisp Conference 2014

I'm going to the International Lisp Conference in 2014 and so should you. It's great to meet Lispers in person and swap stories. Montreal is also a great city.

The deadline for early registration is tomorrow, Monday, July 14th. If you join the ALU for $25, early registration is only $300. (If you don't join the ALU, early registration is $400.) After tomorrow the registration fee goes up signifcantly!

Go register today! See you in Montreal next month!

Common Lisp bits

A collection of Lisp Usenet gems, including articles from Kent Pitman, Erik Naggum, Chris Riesbeck, Pascal Costanza, and Will Hartung.

Things I Want in Common Lisp by Robert Smith.

Video demo of cl-notebook by lnaimathi. By the same author: [T]he primary endeavor of every programmer is twofold: To understand, and to be understood, which demonstrates generating code from a visual diagram.

Looking to start a band? Stumped on a name? See this twitter thread for inspiration.

simple-search is a "smaller alternative to Montezuma" that "allows you to index documents you have stored in-memory and query them in various ways." Looks good. From Andrew Lyon.

It is not hard to read Lisp code, by Jisang Yoo.

mathkit is "
a purely math-related utility kit, providing functions which can be useful for games, 3D, and GL in general" by Ryan Pavlik.

CL news

Crane is a new Common Lisp ORM by Fernando Borretti. "Crane doesn't drink the ORM Kool Aid: You won't spend a single minute struggling with an interface that claims to be 'simple' yet forces you into a limited vision of how databases should work."

Mark Fedurin surveys ASDF system version strings in the wild. The cartoon at the end is great.

From Rainer Joswig: Why Lisp is Different (2007) and 30 years of Common Lisp (2014).

a-cl-logger is a Common Lisp logging library with node-logstash integration, support for swank presentations, context-sensitive logging, and more.

Common Lisp bits

The Internet Archive has a giant tarball of old Lucid stuff, a 3.6GB download. Here's a file index, 1MB. The dump includes:
It's unclear who published this dump on and what they expect people to do with it. As Rainer Joswig points out, "this dump does not mean there is a usable license" for anything it contains.

Gábor Melis's mgl-pax is an exploratory programming environment and documentation generator. Gábor presented PAX at ELS.

Challenging Clojure in Common Lisp, by Chris Kohlhepp. Uses Kenny Tilton's Cells!

You can now create OS X apps in mocl. There's a 15-minute screencast demo of a Planet Lisp app.

SBCL now has an MPFR contrib that provides "arbitrary precision arithmetic on floating-point numbers". It will be available in the next release after 1.1.18.

SBCL now has an ARM port. It is incomplete but under active development.

Mariano Montone is working on CLDM, a distributed dependency manager.

Videos for the 7th European Lisp Symposium are now available. There are two sets: Monday's videos and Tuesday's videos.

Jeff Massung recently published a ton of useful LispWorks-specific libraries. Apache licensed.