82 karma · joined May 27, 2012
[ my public key: https://keybase.io/arrdem; my proof: https://keybase.io/arrdem/sigs/lXLW6wCXYEKqyBGA9GgFCmidd672hI5_BV_LeTqC4Q8 ]
Oh. HN frontpage. That's cool I guess.
Well I have plans for today, so I'm sorry that I won't be sitting here defending my article.
However if you hit me up on twitter at the link at the bottom or email me at my listed email address I'd be more than happy to respond and debate this piece in due time.
Cheers! Reid
I hope that for those Clojure users among you Grimoire proves a useful resource and I welcome any feedback or other commentary you may have on the site and its usability. Stay tuned, there's plenty more in the works from me and I'm reading the feedback with interest.
To "how you build such a site in Clojure" the answer is that the entire Clojure ecosystem shies away from monolithic web frameworks and prepackaged solutions ala rails. Instead, Clojure libraries tend to pick a single feature or some small set of fetures, cover them well, expose a simple API and make composition trivial rather than trying to solve all possible problems.
Dash integration... Dash only makese sense for languages for which the documentation isn't trivially introspected such as Java. Clojure has the clojure.repl library (http://grimoire.arrdem.com/1.6.0/clojure.repl/) which is designed to solve this problem by exposing Clojure documentation to users in their interactive development (REPL) sessions. As I explain at some length in the Grimoire announcement post (http://arrdem.com/2014/07/12/of_mages_and_grimoires/) Grimoire seeks to fill a fumdimentally different niche than Dash. Clojure already has docs, and those docs are already handy for users aware of clojure.repl. Grimoire seeks to solve the problem of documenting the various ins and outs of the standard library which do _not_ appear in the official Clojure docs and which are currently spread out across any number of other low PageRank score community sites.
I also totally agree with your assessment that we had a cool idea too early. That was in fact what Barry said at today's closing down meeting. ARM in the datacenter will happen, but that we didn't have a 64 bit chip really limited our hardware offerings to say the least.
There were three real issues with this project: shielding weight, landing weight and politics. 1. Shot down or crashing, one of these aircraft would be a "dirty bomb" and could generate a nuclear contamination disaster. This alone made the project risky. Remeber, during the heyday of strategic nuclear bombing shootdowns were expected & ariplane to target assignments were made on the basis of the expected (and dismal) survival rate of inbound bombers. Also a single crash on US soil would have been... politically unpopular. 2. The lead, graphite and cement used to shield static nuclear facilities doesn't exactly work when trying to build an airplane, which made crew shielding dubious and reduced the loiter time of such a vehicle to the radiation tolerance of the crew. 3. A mich more minor issue was that of building landing gear that could hold the weight of the reactor on landing let alone a crash.
All that asside, a flying nuke plant is a great idea and I for one would not be surprised to see this idea resurrected for extreme loiter duration robotic aircraft :/
[1] http://www.amazon.com/The-Dead-Hand-Untold-Dangerous /dp/0307387844/
[2] http://en.wikipedia.org/wiki/Sary_Shagan
[3] http://en.wikipedia.org/wiki/Terra-3
Disclaimer: at age 20 I was born as these events drew to a close so my knowlege of this subject is restricted to the historical material I've read in incredulity that we stood on the brink for 50 years and came out alive.
My Firefox history indicates that I have read the Mjolnir page before, but I don't recall why I didn't use it at the time. Taking another look :-P. Thanks for the link!
The reality of the matter is that interacting with non-java linked libraries is a real pain from every JVM language know of. Two years ago this was posted here [https://github.com/jasonjckn/llvm-clojure-bindings], but since then LLVM has gone through two major restructurings so it didn't work out of the box and I estimated that it would take less effort to build my own naive infrastructure than to patch this one & integrate it.
As a result I'm generating code in terms of lists of newline terminated assembly statement strings that I can just print or write to a file when I'm done. While I agree that C is a sub-optimal output format in that you have to compile the output, it is also the clear lingua franca for systems programming and assembly generation these days. Generating C gives you interesting options like linking to other C codebases or your own C code the same way that cljs gives you the option of interacting with "native" javascript libraries as well as clojurescript toolkits.
As a systems programming language I think that lisp has utterly failed. The Lisp machines are dead for various reasons (which I'm researching right now as a side-project) and to the best of my knowledge compiled lisp has clearly not taken the place of C in building operating systems (although I hope to do exactly that as does the author of [http://www.loper-os.org/]).
All of this comes down to an individual's definition of utility. Lisp is by definition of Turing Completeness just as capable as any other language you may wish to name, but with the usual Turing Tarpit or small language warning that you may have to roll your own. My perception, and one which several posts here on HN has affirmed is that traditionally Lisp was used by lone AI researchers who needed the power to roll their own anything quickly and efficiently. As a result of this "roll my own" mentality and simple lack of the internet (it was early and mid 1980s or so) libraries and SDKs as we know them were never built for Lisp systems.
Another difficulty is that as several other comments note there is no "one true" standard for Lisp. There is Scheme (which has official specs), there is ANSI Common Lisp which is a spec upon which several implementations have been based, and then there are countless other DIY and nonstandard lisps which elect to use different function names and otherwise make code non-trivially portable between lisp implementations. Not having a clear standard didn't help the lack of a library ecosystem at all, but some dialects such as Common Lisp and Clojure seem to be developing workable community library ecosystems. Of late Common Lisp has grown a library structure via ASDF code loading tool and the Quicklisp package manager, but Clojure is the only lisp I've ever encountered that really made any effort at all in the direction of providing native support for packaged libraries. The Clojure language includes syntax designed for allowing one file to explicitly state and "require" code in other files or even other libraries: a feature which is lacking from the Common Lisp standard. Thanks to technomancy's Leiningen tool and the clojars repository Clojure has a user-created system similar to Quicklisp + ASDF but trading ASDF's search path idiosyncrasies for a search path structure which should be familiar (or at least unsurprising) to Java developers.
TL;DR / Conclusion
If your boss comes to you and asks you to write a webpage, Lisp is probably not what you turn to. Could you? Sure, <shamelessplug> my blog is built in Clojure [http://arrdem.com].</shamelessplug> [http://refheap.com] is built in Clojure. [http://www.chris-granger.com/] is (presumably) Clojure. I know I've seen blogs in Common Lisp and other dialects but URLs escape me. Your boss says "Access the database", there are Clojure (okay fine Java but there is no real difference) libraries for SQL, MongoDB, Cassandra and more. Common Lisp also has SQL and MongoDB libraries. In short, while there is value in Lisp it is (for the time) not practically greater than the value of any other language despite the elegance of the functional approach and the power of the macro system. Hence its failure thus far to take over the world. However that same value proposition is improving as the CL and Clojure communities create and publish ever more libraries leading me to hope that Lisp may indeed take over the world one day.
- Freed me from having to monitor any conversation and its contents
- Helped disguise how low-traffic the blog is (nothing says low traffic more than a single comment)
- As the Svbtle guys point out, most comments are relatively uninformed and tend to add little. There are exceptions such as HN and the StackOverflow family where intelligent(ish) discourse is the norm but the internet at large is wild and untamed.
- Were I to run my own comment structure I would feel obligated to provide security the guarantee that there are no XSS or other code injection vulnerabilities stemming from user-submitted text.
Consequently my blog has no commenting functionality.