Articles

Lisp, Jazz, Aikido, 10 years later

10 years ago, I published a short blog entitled “Lisp, Jazz, Aikido”, barely scratching the surface of what I found to be commonalities between the 3 disciplines. At the time, I had the intuition that those ideas were the tip of a potentially big iceberg, and I ended the blog with the following sentence: “I’d like to write a proper essay about these things when I find the time… someday.”

May 2, 2018

Standard IO syntax and the Robustness Principle

Here is a flagrant illustration of the robustness principle, or rather, of a failure to honor it. I was investigating a bug in Declt where some floating point numbers were printed with exponent markers (e.g. 0.5f0 instead of just 0.5) in the Texinfo file, which broke the parsing of the file by Perl.

Oct 27, 2017

The Return of Segfaults

I was watching the discussion between Gilad Bracha and Matthias Felleisen on gradual typing this afternoon (it’s available on YouTube. This was the last event at the STOP workshop, part of ECOOP 2015 in Prague. I couldn’t attend it because I was somewhere else (Curry On) at the time. The discussion is interesting, but if you go all the way, in the last 10 minutes or so, you will notice that Matthias seems to be completely obsessed with what he calls the “Return of SegFaults”.

Aug 5, 2015

Lisp Corner Cases: Method Combinations

In the process of writing Declt, I had to deepen my knowledge of some Lisp corner cases, notably in the area of introspection. As you know, Common Lisp has more than 2 namespaces (calling it a “Lisp-2” is somewhat misleading). Sometimes, introspecting a potential symbol definition in one namespace is trivial (compiler-macro-function is one example). The “functional” namespace is heterogeneous but you can still make your way out of macros, regular or generic functions very easily. Distinguishing constants, special variables and symbol macros in the “variables” namespace is more complicated because there is no standard way to access that information, but with the help of some vendor-specific machinery (e.g. sb-int:info), it’s still doable.

Aug 16, 2013

Nice little trick du jour

This morning, I came up with a nice little trick which made my day. Perhaps this is already well known or even idiomatic, but in case it is not, it goes like this.

Jun 26, 2013

The Syntax Extension Myth

Here’s a little Monday Troll. To my greatest disappointment, I discovered today that it is not possible to replace Lisp parenthesis by, say, curly braces. What a shame. Hell, it’s not even possible to freely mix the two. Very naively, I had expected that

May 14, 2012

One More Indentation Hack

Here’s yet another indentation hack that I came up with recently. All the work done by Nikodemus on the Slime indentation contrib is pretty cool, especially the notion of indentation style (though I wish the styles were Custom variables, but that is another story). I tend to use indentation styles for global, maybe collaborative preferences, but on several occasions however, I find that this approach has a couple of drawbacks.

Jul 20, 2011

Read-Time String Concatenation

Sometimes, I miss the string concatenation capability of C. I mean, the way that you can split a long string into smaller ones and have them automatically concatenated together. The format function has a tilde (~) directive that does something along these lines, but there are two problems:

Jun 21, 2011

Which Open Source License for Lisp?

It’s been a long time since I last thought about this. Software licensing is probably the most dreadful computer science topic to me. So out of boredom, laziness, but also out of a feeling of adherence to the ideas behind the FSF, I used to blindly stick the GNU GPL to most of my code. A couple of things made me rethink about that passive attitude recently though, notably the fact that the viral nature of the GPL is not something that I always want.

Feb 8, 2011

Towards ABCL Standalone Executables

UPDATE: ABCL now supports the POSIX-compliant use of --, so I’ve modified this article to reflect that. I’ve also added a final trick to emulate the existence of a proper argv[0].

Jan 22, 2011