RSSAmplifier

Blog

Kvardek Du

kvardek-du.kerno.orgRSS feed ↗25 posts

Latest posts

Interview about Lisp at SISCOG

My friend Rui was interviewed about Lisp and how we use it at SISCOG . The original interview is in Portuguese but you can read a translation via DeepL below: SISCOG Engineering: get to know this cutting-edge Portuguese company Find out how Lisp continues to drive innovation at SISCOG. Interview with Rui Patrocínio, Scheduling Team Leader at SISCOG #1 How did you first get to know the Lisp…

Manuel Simoni on CL's control flow primitives

Manuel Simoni dusts his Axis of Eval blog off and writes about Common Lisp's BLOCK / RETURN-FROM and UNWIND-PROTECT . A summary for non-Lispers.

Reddit 1.0

As many Lisp programmers may remember, Reddit was initially written in Common Lisp. Then, in late 2005, it was rewritten in Python . Much discussion ensued. Steve Huffman (aka spez, current CEO of Reddit) wrote about why they switched to Python . The late Aaron Swartz also wrote Rewriting Reddit , focusing on the Python side of things. Last week, that original, Common Lisp version of Reddit was…

A Lisp REPL in your pocket

Thanks to Polos Ruetz, you can now play with Common Lisp directly on your Android phone. All you need to do is install CL REPL from the Google Play Store. CL REPL is one of the examples part of EQL5-Android which is built on top of EQL5 , a project that marries ECL with Qt . CL REPL A Common Lisp REPL with command line and history, plus a simple editor with syntax highlighting, simple visual…

Re: Querying plists

Zach's Querying plists blog post showcases a neat little querying DSL for plists. I couldn't shake the feeling that it looked an awful lot like pattern matching. I've often been impressed by optima , but I barely get to use it, so I thought I should try and see what querying plists looked like using pattern matching. Here's what I came up with. Zach's example (query-plists '(:and (:= :first-name…

slime-macrostep

SLIME's just got a new contrib called slime-macrostep , courtesy of Jon Oddie who also wrote the underlying macrostep package. And what is slime-macrostep ? It's an interactive inline macro-expander. Have a look: In this quick demo, using a CFFI example, I start by expanding the top-level WITH-FOREIGN-OBJECT form, then I expand the WITH-ALIEN form, but regret it and collapse it back. Then I…

Common Lisp Recipes: A Problem-Solution Approach

Edi Weitz, author of things like CL-PPCRE and Hunchentoot (amongst many other pieces of ediware ), has just published a new book, “Common Lisp Recipes: A Problem-Solution Approach” . I've ordered mine. Get yours from Apress or a European Amazon store . Common Lisp Recipes is a collection of solutions to problems and answers to questions you are likely to encounter when writing real-world…

My answer to the Pretty Printer Puzzle

As promised, I'll describe my solution to the Pretty Printer Puzzle I proposed last week. To recap, we wish to pretty print a Lisp form to a string and identify the textual positions of arbitrary subforms therein. First attempt A couple of folks proposed a clever solution that goes like this: (1) replace the CAR of each subform with some unique token (a gensym should be close enough), (2)…

Pretty printer puzzle

This past week, I came across a Lisp challenge that turned out to be trickier than one might expect at first. I needed to pretty-print a Lisp form to a string and identify the positions of certain subforms. Here's an example: CL-USER> (with-output-to-string (*standard-output*) (pprint '(defun factorial (x) (if (zerop x) 1 (* x (factorial (1- x))))))) " (DEFUN FACTORIAL (X) (IF (ZEROP X) 1 (* X…

LOOP quiz

Does (loop for i below 10 finally (return i)) return 9 or 10? Does (loop for i upto 10 finally (return i)) return 10 or 11? What does (loop for i below 10 for j upto 10 finally (return (list i j))) return? What about (loop for i below 10 and j upto 10 finally (return (list i j))) ? I stumbled upon the semantics of this last example in a recent bugfix and thought it was worth sharing. (Reminded me…

paredit

Taylor Campbell's paredit is one of those Emacs extensions that I can't live without. In a nutshell, it forces you to deal with Lisp code exclusively via operations that don't introduce unbalanced parenthesis (or other similar violations of structure). The genius about this approach is that it completely eliminates the step of making sure parentheses are properly balanced after you write or edit a…

SLIME officially available via MELPA

SLIME has been available from MELPA for a while, but only recently did we iron out some annoying bugs. Notably, upgrading the SLIME package no longer results in confusion about where SWANK is. So, as of SLIME 2.11, once you have the melpa (or melpa stable ) repository set up, installing and updating SLIME from within Emacs is pretty easy: M-x package-install RET slime RET Enjoy! Update: Oh, if you…

(cons cat (cons cat nil))

I thought this tweet was pretty funny, despite the diagrammatic inaccuracy that twitterers were quick to point out. :-) Reminds me of my second cat , whom I named CADR, of course.

SLIME 2.4

SLIME 2.4 has been released without any exciting release management , but with extensive release notes ! :-)

Call for SLIME testers

As you may have heard, SLIME's recently moved to GitHub where, for the last 3 months or so, code has been refactored, bugs have been fixed and some new features have been introduced. The last SLIME release has a very long beard, so we'd like to make a new one next weekend. To make it a good release, it'd be very really helpful if fellow SLIME users grabbed the latest code from github (via either…

SISCOG's ECLM 2013 slides (finally) up

It took a while, but our ECLM 2013 slides “ SISCOG: a story written in Lisp ” have been published. Incidentally, they are also featured in Franz's ACL Success Stories , yay. On a related note, Vsevolod Dyomkin published his video recordings of the meeting. Sadly, we didn't get permission to publish our video. Finally, SISCOG is hiring and has open positions for Software Engineers and…

ECLM 2013

Another odd year, another ECLM . This time around in sunny Madrid at the posh TRYP Ambassador within walking distance from Teatro Real and Plaza Mayor. 63 people from 20 countries turned up. On Saturday I failed to meet some other lispers for lunch. Apparently, there's two or three Museos del Jamón around Plaza Mayor and I stood for 20 minutes in front of the wrong one. Took the afternoon to tweak…

Kálmán Réti on Lisp Machines

An interesting video popped up on the Lisp Reddit last week: Kálmán Réti, the Last Symbolics Developer, Speaks of Lisp Machines . The first half goes into satisfyingly low-level detail about the Lisp Machine's history and architecture, and the second half contains the most in-depth demo I recall watching. Enjoy.

CFFI 0.11.0 released

CFFI 0.11.0 has been released on Feb 25th, 2013, but I only finished writing the release notes today: new feature: fsbv has been integrated into CFFI, courtesy of Liam Healy. This means we now support passing structs by value via [libffi](http://sourceware.org/libffi/)! NB: in order to differentiate between structure passing by value from structure by reference, (:struct foo) and :pointer should…

Augmenting bordeaux-threads with atomic operations

Bordeaux-threads is a portability layer that defines a low-level API for programming shared-state concurrency: basic thread management, locks, timeouts, and condition variables. It has been ported to plenty of CL implementations: ABCL, Allegro CL, CLISP, Clozure CL, CMUCL, Corman Lisp, ECL, Lispworks, MCL, SBCL, and SCL. As such, it's an ubiquitous building block for useful higher-level libraries…

Setting up CommonQt on OSX

CommonQt can be tricky to setup due to its dependencies from C++ land. Tricky enough to warrant writing down the steps I went through to get it running on Mac OS 10.7: If you don't already have Xcode , install it because you'll need g++ . Grab and install the Qt Libraries ( not the Qt SDK). I used version 4.7.4. Install CMake . (I used brew install cmake .) Download, compile and install the SMOKE…

TIME on steroids

Nikodemus's recent post about a yet-to-be-released micro-benchmarking tool prompted me to talk about Perfpiece . I describe it as a tool for measuring the performance of Lisp code, not unlike the standard CL:TIME and I wrote over two years ago to measure the performance of SBCL's garbage collector. Features Here are its main features: Lispy interface to PAPI (Performance Application Programming…

ECLM videos

Just a quick note: Vsevolod Dyomkin has posted a couple of ECLM 2011 videos with more to come.

ECLM 2011

Contrary to my expectations earlier this year, ECLM 2011 happened and ~90 people turned up. Yay! Saturday, a bunch of us went on a guided tour across Amsterdam. We had a great guide with an awesome sense of humor and this was a nice way to meet new Lispers and catching up with folks I'd met in past meetings. Dinner was fun. One very prominent Lisper who shall remain anonymous didn't know what…

Figuring out the print size of a photo at 300 DPI

I was looking for an easy way to tell the print size of a photo at 300 DPI. It wasn't as easy to find the answer as I'd expected. For future reference, here's a solution using ImageMagick : identify -format "%[fx:w/300*2.54] x %[fx:h/300*2.54] cm" photo.jpg