RSSAmplifier

Blog

Zach Beane Common Lisp

lispblog.xach.comRSS feed ↗20 posts

Latest posts

Planet Lisp is refreshing again

Last month I switched servers on short notice and a few services stopped working. I’ve been bringing them back up as I can. Today I got Planet Lisp refreshing again, and I hope to get l1sp.org back shortly.

Maxima in the browser with ECL and wasm

Via Raymond Toy on the ecl mailing list, Maxima in the browser .

OCR from Common Lisp

Neat use of CL for OCR by Nick Faro. It leverages FFI and run-program nicely to get the job done. I think run-program or equivalent is amazingly handy at getting quick CL access to outside functionality. I ran a busy website that used imagemagick a lot, but I never bothered to use FFI. I called “convert” and friends via run-program, and it had the advantage that incorrect use of the C…

Toilet Lisp

This seems like an interesting old incomplete project - Toilet Lisp with some old source code too.

Jackson Lee Underwriting has a remote Common Lisp job open

Check it out!

Non-symbols as keyword arguments

Sometimes I like to have a short function call to make a lookup table with arbitrary keys and values. Something like this: (table "name" "Alice" "age" 42) => #<TABLE ...> This is easy enough to define like so: (defun table (&rest keys-and-values) ;;; loop over keys and values to construct a table ...) But there&rsquo;s another option that works: (defun table (&rest keys-and-values &key…

New SBCL 2.0.9 behavior breaks some stuff

The latest SBCL handles slot :initform and :type options in a new way. It&rsquo;s mentioned in the release notes. minor incompatible change: the compiler signals a warning at compile-time when an initform of T, NIL or 0 does not match a STANDARD-CLASS slot&rsquo;s declared type._ Sounds pretty benign, but it breaks dozens of projects in Quicklisp. (To be fair, most of the failures are caused by a…

Ultralisp search is awesome

Ultralisp.org has a great new search system. It indexes the docstrings of all the Ultralisp projects, and as a result it is very easy to search for specific functionality and get useful results. For example, I wanted to see what projects have base64-related functions, and now it&rsquo;s just a simple search away . I highly recommend it.

SBCL20 in Vienna

Last week I attended the SBCL 20th anniversary workshop , held in Vienna, Austria. Here are some rough impressions - I wish I had detailed enough notes to recreate the experience for those who did not attend, but alas, this is what you get! It&rsquo;s incomplete and I&rsquo;m sorry if I&rsquo;ve left out someone unfairly - you have to go yourself next time so you don&rsquo;t miss a thing.…

Exclusive file open

The Planet Lisp twitter fix involved tracking post status with a file. Although it&rsquo;s not 100% bulletproof, there&rsquo;s a trick when using files to reduce races. Here&rsquo;s a naive approach: Assign a Planet Lisp post a unique pathname If that pathname exists, do nothing Otherwise, send a tweet for the post and save its details to the pathname The problem is between 2 and 3 - another…

Planet Lisp is back on Twitter

I brought the @planet_lisp Twitter account back to life after more than a year of dormancy. It updates twitter with every item on Planet Lisp. It broke a while back because of how I used Twitter itself to keep track of what had been posted. I updated it to use a local data directory instead. It&rsquo;s working well so far.

Working with letsencrypt’s certbot for a Lisp webserver

Every 90 days my letsencrypt certificate expires and I renew it manually. I have to cut and paste data from the certbot script into repl forms to serve the right data on the right path and it&rsquo;s such a pain that sometimes I put it off until after it expires, and people email me about it, and I feel bad. The manual process looks something like this (not my actual domain or challenges): #…

Generic vs. plain functions

I really like this comment from Stas Boukarev on Methods or Functions, when do I use which on reddit: [You] don&rsquo;t make an extensible program by just making each function generic, if each function still makes some assumption on the data. You can&rsquo;t say &ldquo;oh, it&rsquo;s extensible, but you have to define a hundred methods of your own&rdquo;, an extensible protocol will require…

Want to write Common Lisp for RavenPack? | R. Matthew Emerson

Want to write Common Lisp for RavenPack? | R. Matthew Emerson

Converter of maps from Reflex Arena to QuakeWorld

Converter of maps from Reflex Arena to QuakeWorld : Via dzecniv on reddit.

ASCII Art Animations in Lisp

ASCII Art Animations in Lisp

Writing a natural language date and time parser

Writing a natural language date and time parser : Via reddit.

Personal Notes on Corman Lisp 3.1 Release

Personal Notes on Corman Lisp 3.1 Release

A Road to Common Lisp - Steve Losh

A Road to Common Lisp - Steve Losh

Thoughts on ELS 2018

Matt Emerson opened the conference keynote talk on Clozure CL. He also touched on using and celebrating CL. It provided a jolt of enthusiasm and positivity to kick off a fun conference. And it made me want to use Clozure CL more often and learn how to effectively hack on and with it. Nicolas Hafner’s talk on shaders was interesting, but partway through the talk he revealed that the slideshow…