I was thinking about this while cooking some meal. I m not good at it, so I try to follow a recipe. I use fresh ingredients, wash and chop them carefully, watch the boiling pan oftenly so I don t overcook. Maybe too often, because I don t really know what I m doing. The result isn t necessarily great, but it s better than fast food, industrially processed food and sometimes even restaurant…
Should the CL standard ever be revised, I would advocate for these two mildly incompatible changes: 1. eval-when The default compiler policy should be to evaluate each toplevel expression as if it were wrapped in: (eval-when (:compile-toplevel :load-toplevel :execute) ...) I understand the value of this construct, after years of using Lisp and bootstrapping my own compiler, but for a beginner I…
In what now seems like a previous life, I wrote a IMAP library for Perl ( Net::IMAP::Client ). It got somewhat popular and I m glad to see it s still being maintained — and even more glad that it isn t me who maintains it :) Around this time last year I wanted to reply to a bunch of emails from Emacs, and had setup OfflineIMAP to download my GMail inbox to a local folder, so that I could use mu4e.…
In the past couple of months I ve added some more CL support ( some bitwise operators, some multi-dimensional array, and some reader customization), so one day I was able to load my QUEEN chess library and play a bit with it in the browser. It s now included in the build, so you can try this in the REPL : [ read more... ]
SLip is an aspiring Common Lisp environment in the browser. Since my earlier post in April , I wanted to replace the object system with Closette , as it s more complete than TinyCLOS. Rather than hammering down Closette to fit it into my limited Lisp, I thought I would add sufficient Common Lisp support so that we re able to compile Closette as is, or at least almost. This is the glorious commit…
I ve put some love into my browser-based Lisp system . This project is so old that I could actually say it s new and nobody would know. I just let it rot for something like 12 years, but since I revamped Ymacs recently, I wanted to fix the “IDE”, which was broken; and then I got carried away. Before reading further, if you are familiar with Common Lisp and Emacs/SLIME, check out this fine REPL!…
I m working on an IMAP client for Common Lisp. Details about that in a future post, but I d like to share here a few bits of code that I had to dig for. The CL socket tutorials that I could find focus on how to connect to a server, fetch some data and then disconnect. In my case, however, the connection is supposed to be long lived. There s a thread that continuously reads data from the server (it…
As I find myself writing code in Ymacs sometimes, I wrote a mode suitable for editing Twig/Django templates. It can be enabled with M-x twig_html_mode (the dogfood init code will auto-enable it for buffers coming from web-mode if the filename contains .twig ). While working on this (in itself, of course) I fixed a bunch of other issues related to indentation and syntax highlighting. JS mode will…
Here is a small Emacs/SLIME tip, since I couldn t find it on Google and I had to come up with the solution myself. I m working on a long running Common Lisp program and I print a dot every few thousand iterations, so that I know that something is happening; then every few hundred of thousands I want to replace those dots with some stats about the computation, so I m writing a carriage return (char…
I first learned the term dogfooding at Zimbra in 2005, where we were using the email server and client that we were developing. The internal domain name was dogfood.zimbra.com. Why would I want to use Ymacs ? Its purpose was to enable me to write code in a browser, but in the comfort of my desktop, I can use the real thing. And indeed, Emacs is almost irreplaceable, because it s not just about the…