Skip to main content

Lisp web tutorial?

"PHP vs. Lisp: Unfortunately, it's true..." article initiated quite active discussion on reddit, one fellow asking:

Can someone post a tutorial for taking a clean install of Ubuntu (or windows or anything) to finish with serving a basic CRUD application using lisp? Maybe a TODO list with entires consisting of: incomplete/complete boolean, due date, subject, body?

actually i had an impression that there are more than enough such tutorials, but as nobody replied i've tried finding one myself, starting with Hunchentoot tutorials. surprisingly, none of them covered a short path from clean OS install to working examples. neither i've found my ABCL-web  tutorial suitable for this, so i decided to try myself. 

my idea was that Linux distros like Debian and Ubuntu contain a lot of Lisp packages, and it should be fairly easy to install them, as it automatically manages dependencies etc. i've decided to try Hunchentoot -- i'm not using it myself, but it's known to be pretty lean, unlike other bloated frameworks. indeed, installing Hunchentoot via apt-get was pretty straightforward, and it even worked quite fine out of the box! so i've posted this comment, and it seems people found it sort of useful. so was followup on Emacs/SLIME installation.

so i wonder -- is there a lack of up-to-date installing-lisp-web-server-from-scratch tutorials indeed? if so i'll consider making one.. it seems there is a widespread opinion  that Common Lisp "learning curve at the beginning is steep as hell" and "Just setting a sane development environment is a huge pita" -- and that is opinion of people who actually succeeded in using Lisp! so maybe i can prove otherwise?


Anonymous said…
I wrote one to get it working from a fresh Debian install here:
killersorm said…
nice work, Dave, i guess that delivers professional-grade development/deployment environment. but i'm afraid that many commands will scare a hell out of newbies, and won't demonstrate a point that installing CL web server is almost as easy as installing PHP one :).

perhaps your instructions would be even better if you'll add more comments to each step -- i.e. say that clbuild is a great thing to manage lisp dependencies etc.
Anonymous said…
To be honest it really isn't as easy, you're right that a lot of commands might be intimidating though.

I have tested the install a few times and it seems to work pretty well, I'm not really sure how I could reduce it down further.

I think Xach was on to something when he suggested making into a Debian package, I might have a go at that some time.

Popular posts from this blog

Cosmos SDK vs Rell

When I first looked at Tenderming ~4 years ago (I seriously considered using Terndermint to implement consensus in Postchain), I was not particularly impressed by its programming model -- the example code in Go looked overly verbose.

I looked through Cosmos SDK docs today. Docs look really nice. And it's nice that the application can be built in a modular fashion, using pre-made Cosmos SDK modules. However, verbosity is still there...

Let's look at code needed to implement a single SetName operation in Cosmos. This operation simply checks that transaction's signer is the owner of the name, and then changes value associated with the name. This should be simple, right? It's probably the simplest thing you can do with blockchain. Let's first look at how one would implement it in Rell, e.g.:

operation set_name_value (name, value: text) { val entry = name_entry @ { name }; require(is_signer(entry.owner)); entry.value = value; }
Even if you don't know anyth…

Belief markets: short conspiracy theories using prediction market technology

OverviewThis article introduces a new concept called 'belief market'. The closest relatives of belief markets are prediction markets, thus I will introduce the concept by describing how prediction and belief markets differ.
Prediction markets allow participants to make bets on outcomes of events. More generally, bets can be made on answers to questions which can be unambiguously answered in future. A participant can update his position until the market is closed and a question is resolved, which makes it different from other kinds of betting.
Belief markets allow participants to bet on answers to questions which cannot be reliably resolved. In other words, belief markets allow participants to bet on something they believe should be true, even if an answer cannot be determined in such a way 100% of participants would agree with. Instead of that, a virtual resolution is based on a consensus among a subset of participants.
To make this possible, belief markets rely on cryptocurrency…

out-of-memory: a sad case

the problem..while Turing machine's tape is infinite, all real world programs are running within some resource constraints -- there is no such thing as infinite memory. for some programs that ain't a problem -- amount of memory needed by the algoritm can bee known beforehands, at programming time. but for most real world applications memory requirements are not known until run time, and sometimes it is very hard to predict how much does it need.obvious example is an application that allocates memory according to a user input -- for example, an image editor asks user for a dimension of an image he'd like to create. it needs to allocate an array in memory for the image (to have a fast access), so when dimensions exceed possible bounds, good-behaving application should notify user -- and user can either reduce image size or, perhaps, upgrade his machine, if he really wants to work with large images. while it is fairly easy to implement such functionality on a single-task OS, …