<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: lisp</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/lisp.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2024-03-01T04:28:11+00:00</updated><author><name>Simon Willison</name></author><entry><title>Endatabas</title><link href="https://simonwillison.net/2024/Mar/1/endatabas/#atom-tag" rel="alternate"/><published>2024-03-01T04:28:11+00:00</published><updated>2024-03-01T04:28:11+00:00</updated><id>https://simonwillison.net/2024/Mar/1/endatabas/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.endatabas.com/"&gt;Endatabas&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Endatabas is “an open source immutable database”—also described as “SQL document database with full history”.&lt;/p&gt;

&lt;p&gt;It uses a variant of SQL which allows you to insert data into tables that don’t exist yet (they’ll be created automatically) then run standard select queries, joins etc. It maintains a full history of every record and supports the recent SQL standard “FOR SYSTEM_TIME AS OF” clause for retrieving historical records as they existed at a specified time (it defaults to the most recent versions).&lt;/p&gt;

&lt;p&gt;It’s written in Common Lisp plus a bit of Rust, and includes Docker images for running the server and client libraries in JavaScript and Python. The on-disk storage format is Apache Arrow, the license is AGPL and it’s been under development for just over a year.&lt;/p&gt;

&lt;p&gt;It’s also a document database: you can insert JSON-style nested objects directly into a table, and query them with path expressions like “select users.friends[1] from users where id = 123;”&lt;/p&gt;

&lt;p&gt;They have a WebAssembly version and a nice getting started tutorial which you can try out directly in your browser.&lt;/p&gt;

&lt;p&gt;Their “Why?” page lists full history, time travel queries, separation of storage from compute, schemaless tables and columnar storage as the five pillars that make up their product. I think it’s a really interesting amalgamation of ideas.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=39546795"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/databases"&gt;databases&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lisp"&gt;lisp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sql"&gt;sql&lt;/a&gt;&lt;/p&gt;



</summary><category term="databases"/><category term="lisp"/><category term="sql"/></entry><entry><title>flk:  A LISP that runs wherever Bash is</title><link href="https://simonwillison.net/2019/Dec/4/flk-lisp-runs-wherever-bash/#atom-tag" rel="alternate"/><published>2019-12-04T05:19:25+00:00</published><updated>2019-12-04T05:19:25+00:00</updated><id>https://simonwillison.net/2019/Dec/4/flk-lisp-runs-wherever-bash/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/chr15m/flk"&gt;flk:  A LISP that runs wherever Bash is&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This is a heck of a project: an implementation of LISP written entirely in Bash, meaning you can run it as a script on any machine that has a Bash installation.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=21662893"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bash"&gt;bash&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lisp"&gt;lisp&lt;/a&gt;&lt;/p&gt;



</summary><category term="bash"/><category term="lisp"/></entry><entry><title>The original Reddit source code, written in Lisp in 2005</title><link href="https://simonwillison.net/2018/Mar/29/original-reddit-source-code/#atom-tag" rel="alternate"/><published>2018-03-29T22:13:32+00:00</published><updated>2018-03-29T22:13:32+00:00</updated><id>https://simonwillison.net/2018/Mar/29/original-reddit-source-code/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/reddit-archive/reddit1.0"&gt;The original Reddit source code, written in Lisp in 2005&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“If anyone’s interested, I found a hard drive in my garage with the original Reddit Lisp code from 2005. Been looking for it for years. Enjoy.”—spez

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://www.reddit.com/r/announcements/comments/8830oa/and_now_a_word_from_reddits_engineers/dwhg6vi/"&gt;u/spez&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/lisp"&gt;lisp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/reddit"&gt;reddit&lt;/a&gt;&lt;/p&gt;



</summary><category term="lisp"/><category term="reddit"/></entry><entry><title>jed's fab</title><link href="https://simonwillison.net/2010/May/18/fab/#atom-tag" rel="alternate"/><published>2010-05-18T18:50:00+00:00</published><updated>2010-05-18T18:50:00+00:00</updated><id>https://simonwillison.net/2010/May/18/fab/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://github.com/jed/fab"&gt;jed&amp;#x27;s fab&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Spectacular web framework for Node.js which, despite using nothing but regular JavaScript, has syntax that is easily confused with Lisp. General consensus at work is that truly understanding how this works is a crucial step on the path to JavaScript enlightenment.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/functional"&gt;functional&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lisp"&gt;lisp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nodejs"&gt;nodejs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/fab"&gt;fab&lt;/a&gt;&lt;/p&gt;



</summary><category term="functional"/><category term="javascript"/><category term="lisp"/><category term="nodejs"/><category term="recovered"/><category term="fab"/></entry><entry><title>A History of the Sentence "Buffalo buffalo buffalo buffalo buffalo."</title><link href="https://simonwillison.net/2010/Feb/5/buffalo/#atom-tag" rel="alternate"/><published>2010-02-05T09:50:33+00:00</published><updated>2010-02-05T09:50:33+00:00</updated><id>https://simonwillison.net/2010/Feb/5/buffalo/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.cse.buffalo.edu/~rapaport/buffalobuffalo.html"&gt;A History of the Sentence &amp;quot;Buffalo buffalo buffalo buffalo buffalo.&amp;quot;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Complete with explorations of the grammar in Lisp.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/buffalo"&gt;buffalo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/english"&gt;english&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/grammar"&gt;grammar&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lisp"&gt;lisp&lt;/a&gt;&lt;/p&gt;



</summary><category term="buffalo"/><category term="english"/><category term="grammar"/><category term="lisp"/></entry><entry><title>FleetDB</title><link href="https://simonwillison.net/2010/Jan/5/fleetdb/#atom-tag" rel="alternate"/><published>2010-01-05T11:21:35+00:00</published><updated>2010-01-05T11:21:35+00:00</updated><id>https://simonwillison.net/2010/Jan/5/fleetdb/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://fleetdb.org/"&gt;FleetDB&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Yet Another Key-Value Store: Schema-free, JSON protocol, everything cached in RAM, append-only log for durability, multi-record transactions... but what’s really interesting about this one is that it’s written in Clojure and takes full advantage of that language’s concurrency primitives. The prefix operators used by the select API hint at its Lisp heritage.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://news.ycombinator.com/item?id=1031540"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/clojure"&gt;clojure&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/databases"&gt;databases&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/fleetdb"&gt;fleetdb&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/keyvaluestore"&gt;keyvaluestore&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lisp"&gt;lisp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nosql"&gt;nosql&lt;/a&gt;&lt;/p&gt;



</summary><category term="clojure"/><category term="databases"/><category term="fleetdb"/><category term="keyvaluestore"/><category term="lisp"/><category term="nosql"/></entry><entry><title>Quoting Damien Katz</title><link href="https://simonwillison.net/2008/Apr/14/damien/#atom-tag" rel="alternate"/><published>2008-04-14T15:17:39+00:00</published><updated>2008-04-14T15:17:39+00:00</updated><id>https://simonwillison.net/2008/Apr/14/damien/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://damienkatz.net/2008/04/lisp_as_blub.html"&gt;&lt;p&gt;Once you reach a certain level of activity in the system where the garbage collector can no longer keep up (and it will happen), then every line of code in your system is now a potential failure point that can leave the whole program in a bad state. Lisp has this problem. Java has this problem. Erlang does not.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://damienkatz.net/2008/04/lisp_as_blub.html"&gt;Damien Katz&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/damien-katz"&gt;damien-katz&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/erlang"&gt;erlang&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/faliure"&gt;faliure&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/garbagecollection"&gt;garbagecollection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lisp"&gt;lisp&lt;/a&gt;&lt;/p&gt;



</summary><category term="damien-katz"/><category term="erlang"/><category term="faliure"/><category term="garbagecollection"/><category term="java"/><category term="lisp"/></entry><entry><title>Programming Nu</title><link href="https://simonwillison.net/2007/Oct/1/programming/#atom-tag" rel="alternate"/><published>2007-10-01T21:49:06+00:00</published><updated>2007-10-01T21:49:06+00:00</updated><id>https://simonwillison.net/2007/Oct/1/programming/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://programming.nu/"&gt;Programming Nu&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Interesting new programming language—Lisp style syntax, Ruby style semantics, built in Objective C bridge so you can access Cocoa APIs directly.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://daringfireball.net/linked/2007/october#mon-01-nu"&gt;John Gruber&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cocoa"&gt;cocoa&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lisp"&gt;lisp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nu"&gt;nu&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/objective-c"&gt;objective-c&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ruby"&gt;ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="cocoa"/><category term="lisp"/><category term="nu"/><category term="objective-c"/><category term="programming"/><category term="ruby"/></entry></feed>