5 ms·
Elnode, the EmacsLisp webserver, nears release
- opminion 14y agoSounds 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.
- johnpmayer 14y agoSorry, 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.
- nic-ferrier 14y agoAnd, as I say, a Wiki.
- deleted 14y ago[deleted]
- nic-ferrier 14y agoThere 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.
- opminion 14y agoFirst, 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: http://news.ycombinator.com/item?id=4157512 (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.
- nic-ferrier 14y agoSorry 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/ http://emacsrocks.com/ and the one from me today http://www.youtube.com/watch?v=TR7DPvEi7Jg 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.
- gstamp 14y agoWhat 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.
- derleth 14y ago> 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.
- gecko 14y agoRolling 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 elisp. 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.
- brudgers 14y agoI 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).
- johnpmayer 14y agoJust 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
- nic-ferrier 14y agoYes, as I said at the end, that's coming. Hopefully this week. It was important to get Elnode 0.9.9 out first.
- nic-ferrier 14y agoAnd here is a video http://www.youtube.com/watch?v=TR7DPvEi7Jg&feature=youtu.be http://www.youtube.com/watch?v=TR7DPvEi7Jg&feature=youtu...
- deleted 14y ago[deleted]
- jfoutz 14y agoI'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.
- justinhj 14y agoIf 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/ http://code.google.com/p/eredis/
- nic-ferrier 14y agowow. yeah, that could be awesome. I'd like to write an elnode adapter for that. Is it packaged and in MELPA or Marmalade?
- justinhj 14y agoNo but I'd be happy to set that up
- justinhj 14y agoUpdate: Wow, that was easy! It's now available on Marmalade. (package-install 'eredis)
- nic-ferrier 14y agoexcellent! well done!
- mark_l_watson 14y agoLisp 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.
- nic-ferrier 14y agoI 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.
- jrockway 14y agoWhy Emacs Lisp and not a CL? SBCL actually performs on par with more popular languages for server workloads. Emacs Lisp? Not so much.
- nic-ferrier 14y agoI 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.
- kishi 14y agoAn Emacs web server existed over 10 years ago: http://synthcode.com/emacs/phase-0.2.1.tar.bz2 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.
- eschulte 14y agoIf 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) )
- nic-ferrier 14y agoEmacs webservers have indeed been around for years: http://emacswiki.org/emacs/HttpServer 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.
- mhd 14y agoGiven 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...
- nic-ferrier 14y agoLet'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.el 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.
- mhd 14y agoWell, I think before I'd expand to a big multi-core cluster, I'd look into my options ;)
- vedang 14y agoRewriting EmacsWiki in elnode would be awesome