Node.js is dead. Long live Node.
Funode
the development of this project has been superseded by my involvement with ClojureScript. novus ova seclorum!
I give node.js a ribbing from time to time, mostly in response to the propensity of its greatest adherents to view it in an unrealistic light. My real bias is of course against Javascript. My problem with Javascript has always been that expertise is defined more in terms of understanding its faults rather than its features. Node.js needs to be liberated from the shackles of the unwieldy mess that is Javascript. Node.js should become its own language forged in the embers lit by Crockford.
Node.js is dead. Long live Node.
Funode is my vision for a runtime that realizes the potential in Node. Funode is a functional library for Node.js — a state of mind yielding Node.
The greatest things to happen to Javascript are:
- being tied to the browser
- being divorced from the browser
Node is the way forward. Funode is the map.
The Funode Way©
Why would you write this:
function do_request(req) {
return long_io_operation(
req,
callback=function(results) {
return create_something_from(results);
});
}
When you can instead write this:
function do_request(req) {
var result = long_io_operation(req);
return create_something_from(result);
}
This is but a taste!
The Funode Way© will include:
- persistent, immutable data structures
- coroutines
- pure prototypal inheritance
- functional composition
- observable collections
- functors
- advice
- currying
- partial application
- combinators
- unification
- promises
- pre and postconditions
- macros
- FSMs
- and so much more…
The next step of course is to print some t-shirts and speak at some conferences, but then the very next step will be to change the world.
T-Shirt Options
Funode: exploiting the inherent inefficiencies in nothingness
Use Funode! Because I/O is always slower.
Use Erlang! message queues! Funode!
Node.js is dead. Long live Node.
Available as polo, for casual Friday.
Changing the world
TBD
:f
6 Comments, Comment or Ping
Shane Whittet
var Forking = bad; var Extension = !Forking; return Contribute(Extension, Library.Please();)
Apr 12th, 2011
Dion Almaer
There are things that could be better with JavaScript.
You can get into some callback hell with a system like node.
But,
There are better JavaScripts (CoffeeScript)
There are chaining libraries (like Seq etc that you use in funode)
Having JavaScript on the server AND client gives you some interesting features. On a little blog that I have (functionsource.com) we run the same JS on client and server (a la davglass yui+node dom) and it allows us to snapshot to folks like googlebot / older browsers, but allows developers to write in a dynamic fashion.
funnode looks very cool btw…. love this type of experimentation! :)
Apr 12th, 2011
fogus
@Almaer
I like Coffeescript very much and would be hard pressed to create anything that might even achieve a fraction of its success. So I will leave the language game to people more talented than myself. I’m more interested in the runtime for now (as I tried, but failed to express clearly). Further, it hearkens to the viability of Javascript as a compilation target — something I think will grow increasingly important moving forward.
:f
Apr 13th, 2011
matsuri
“My problem with Javascript has always been that expertise is defined more in terms of understanding its faults rather than its features.”
Maybe you just don’t understand the features?
Your attempt goes totaly the wrong way. Sorry to say it that clearly. I think you should search yourself another language.
Apr 14th, 2011
القصيم كام
Javascript has always been that expertise is defined more in terms of understanding its faults rather than its features.”
Maybe you just don’t understand the features?
Jun 18th, 2011
jonjon
Being a good JavaScript hacker and loving it requires a flexible mind… years of CS can be detrimental to the kind of brain function needed for that purpose unfortunately..
Oct 20th, 2012
Reply to “Node.js is dead. Long live Node.”