Hacker News new | past | comments | ask | show | jobs | submit login
Elnode, the EmacsLisp webserver, nears release (ferrier.me.uk)
82 points by nic-ferrier on Aug 8, 2012 | hide | past | favorite | 30 comments

If you build a web app in emacs you may be interested in a fully featured emacs lisp Redis client http://code.google.com/p/eredis/

wow. yeah, that could be awesome. I'd like to write an elnode adapter for that.

Is it packaged and in MELPA or Marmalade?

No but I'd be happy to set that up

Update: Wow, that was easy! It's now available on Marmalade. (package-install 'eredis)

excellent! well done!

An Emacs web server existed over 10 years ago:

It has no doubt bit-rotted, but had some really nice features, like being able to automatically display any file as HTML with the exact same syntax highlighting that Emacs itself uses.

If it doesn't handle POST requests it doesn't count.

  (defun phase-handle-post ()
    "Phase handler for post requests"
    ;; XXXX hack, not handling multi-part form data, just treat as a GET
    ;; for now.
    (phase-handle-get) )

Emacs webservers have indeed been around for years: http://emacswiki.org/emacs/HttpServer

Most of them required other solutions for accepting the socket however and also failed to address concurrency.

Elnode, btw, does reuse Emacs' syntax highlighting code. Just try it out and see what it's like.

Given the optional lexical scoping of Emacs 24 (which elnode seems to use), I wonder what would be required to port something like this to a full-fledged CL system. Given some emulation of Emacs underpinnings, you could develop completely within Emacs and use that for smaller/local applications, but if you ever require more power, move it to e.g. SBCL and deploy...

Let's see how we get on with just emacs? Elnode can communicate (asynchronously) with lots of other Elnode nodes... the Elnode RLE module (https://github.com/nicferrier/elnode/blob/master/elnode-rle....) provides code to spin up those nodes and offload processing to them.

I think you could scale with just Emacs.

Well, I think before I'd expand to a big multi-core cluster, I'd look into my options ;)

Lisp hacker to Lisp hacker, that is very cool.

Really off topic but: it is great to be a programmer and write whatever we want for our side projects.

I really want to use this professionally. Lisp is so much more productive (for me at least) than other languages. I just don't want to have to use much else.

Why Emacs Lisp and not a CL? SBCL actually performs on par with more popular languages for server workloads. Emacs Lisp? Not so much.

I think the article explains this. People are free to write CL versions, personally, I find EmacsLisp the only really practical Lisp.

node.js has been over the performance grounds a lot, it's scalability that matters, not raw per request performance and for that Elnode could score.

Just a suggestion, but I think a video tutorial demonstrating the workflow advantages would be incredible for the visibility of the project. I, for one, would like to see how you envisioned elnode as a self-contained productive development and administration environment within emacs.

edit: doh this is planned

Yes, as I said at the end, that's coming. Hopefully this week. It was important to get Elnode 0.9.9 out first.

I'm only an occasional emacs user. I've only committed a few cursor motion commands to muscle memory. I have to say, the embedded web server is a nice touch to any programming environment. far far more true in emacs itself.

Great job.

Sounds fun. The problem with elisp, though, is that it's (I am told) not a real Lisp. The info tutorial shipped with Emacs doesn't make me suspect otherwise. Perhaps a few neat elnode examples might help.

Rolling things up into a single response here:

    1.  Emacs Lisp is a real Lisp.  Full stop.
    2.  That said, Emacs Lisp is based on MacLisp (no
        relationship to Macintosh), which has dynamic scoping,
        not lexical scoping, and which is not a member of the
        Common Lisp family.
    3.  And *that* said, Emacs Lisp has long had a "cl" 
        package that adds many Common Lisp niceties, and, 
        since 24, has had optional lexical scoping, bringing a 
        more Common-Lisp-like experience to all aspects of
    4.  And all of *that* said, this particular package I 
        regard as a convenience, not a way to write a website.  
        There are many tools a devoted Emacser uses (org mode 
        and Planner mode, to name the two big ones) that want 
        to vend web pages, and this would be a great tool for 
        them, but I'd hardly recommend using elisp for a 
        "real" website.
It's completely worth learning elisp, and I think discounting this because it's "not written in a real Lisp" is bizarre, but you'd be right to look more towards Clojure or SBCL/Clozure (depending) to write a "real" Lisp website. That's just not what this is aimed at--and where it is aimed, I think it can be enormously successful.

There weren't enough in the article?

It is a real lisp. I think the problem you're experiencing is that EmacsLisp has a long history. So some things that have been said were said a loooong time ago and are no longer relevant.

Take a look at the other articles I have on my blog... it's clear EmacsLisp is a modern, usable, language.

First, thanks for all the effort you've put into this. Sometimes skeptical questioning comes across as negativity, I hope this wasn't the case.

A previous Elnode announcement was what made me actually want to look into Elisp more seriously, but I went straight into the Emacs Elisp manual, and found it rather low-level when it came to list construction. So I asked around:

(incidentally, with "not a real lisp" I meant the admittedly narrow "isn't the same thing at all" in relation to Common Lisp or Scheme)

and gave up because I wasn't interested in Emacs-specific programs.

But I won't argue for or against that. Will give it another go starting from your site.

Sorry if I sounded frustrated.

Don't listen to the haters. EmacsLisp is a real Lisp. You can use it to do solve real problems. It gets better all the time as people add stuff that has worked for years to the package archives (see elsewhere in this elnode thread where someone adds a redis client).

What I would say is you need to reach out more, come to #emacs and ask lisp questions. Play with Emacs (it's SO easy) and check out all the videos that people have been doing recently (http://emacsrocks.com/ and the one from me today http://www.youtube.com/watch?v=TR7DPvEi7Jg).

Elnode is a good way to get into Lisp because it's easy and it's in Emacs which is just a great Lisp environment.

Sorry, what exactly makes it "not a real lisp"? Maybe that statement is out of date, considering the addition of lexical scoping in Emacs 2.4.

Regardless, it seems like the author is able to build some real things. I know, for example, that you can run a simple file-directory server using elnode.

And, as I say, a Wiki.

What is the definition of a real lisp? AFAIK lisp is just a family of computer languages. Elisp certainly isn't the most powerful or full featured but it still seems to have most of the characteristics.

> What is the definition of a real lisp?

Something that makes people fight over whether Scheme is a real lisp. Something that makes people fight over whether Dylan is a real lisp.

In short, there really isn't one. Unless you say that all real lisps adhere to the Common Lisp standard, which isn't, actually, a common position to find anyone taking in real life.

I would say that it isn't worth letting the differences between emacs lisp and common lisp stand in the way of learning lisp (or Emacs).

Rewriting EmacsWiki in elnode would be awesome

Applications are open for YC Summer 2023

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact