<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:arto="http://ar.to/" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel rdf:about="http://ar.to/tags/lisp.rss">
    <title xml:lang="en">Arto Bendiken - Lisp</title>
    <link>http://ar.to/tags/lisp</link>
    <description xml:lang="en"></description>
    <items rdf:nodeID="b1"/>
    <cc:license rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/"/>
  </channel>
  <rdf:Seq rdf:nodeID="b1">
    <rdf:li>http://ar.to/node/63</rdf:li>
    <rdf:li>http://ar.to/node/61</rdf:li>
    <rdf:li>http://ar.to/node/60</rdf:li>
  </rdf:Seq>
  <item rdf:about="http://ar.to/node/63">
    <title>Rediscovering the Lively Road Not Taken</title>
    <link>http://ar.to/2008/05/the-lively-road-not-taken</link>
    <description>&lt;p&gt;Speaking fondly of an operating system usually misconstrued by a younger generation as merely an ancient text editor older than Stallman's beard, Steve Yegge &lt;a href=&quot;http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html&quot; title=&quot;Dynamic Languages Strike Back&quot;&gt;states&lt;/a&gt; that &lt;em&gt;&quot;Emacs is the world's last Lisp Machine. All the rest of them are at garage sales.&quot;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While that's indeed the case in a strict sense, in a slightly wider sense the essence of the legendary &lt;a href=&quot;http://en.wikipedia.org/wiki/Lisp_machine&quot;&gt;Lisp machines&lt;/a&gt; has managed to &lt;a href=&quot;http://xkcd.com/297/&quot;&gt;survive&lt;/a&gt; to the present day in at least one other closely related fork in the road, namely the &lt;a href=&quot;http://www.squeak.org/&quot;&gt;Squeak&lt;/a&gt; project. And now, from &lt;a href=&quot;http://en.wikipedia.org/wiki/Dan_Ingalls&quot;&gt;Dan Ingalls&lt;/a&gt; &amp;mdash; the original designer of Squeak and one of the fathers of &lt;a href=&quot;http://www.smalltalk.org/&quot;&gt;Smalltalk&lt;/a&gt; &amp;mdash; comes &lt;a href=&quot;http://research.sun.com/projects/lively/&quot; title=&quot;Lively Kernel at Sun Labs&quot;&gt;Lively Kernel&lt;/a&gt;, a self-hosting, metacircular prototyping and development environment implemented in &lt;a href=&quot;http://www.crockford.com/javascript/&quot;&gt;JavaScript&lt;/a&gt;, a programming language that itself has &lt;a href=&quot;http://weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html&quot; title=&quot;The father of JavaScript recounts how he was recruited to Netscape with the promise of 'doing Scheme' in the browser.&quot;&gt;considerable&lt;/a&gt; Lisp ancestry.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=gGw09RZjQf8&quot; title=&quot;Google TechTalk of Dan Ingalls presenting Lively Kernel&quot;&gt;&lt;img src=&quot;http://ar.to/2008/05/the-lively-road-not-taken/lively-kernel.jpg&quot; alt=&quot;Lively Kernel screenshot&quot; width=&quot;500&quot; height=&quot;327&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ingalls and the Lively Kernel &lt;a href=&quot;http://research.sun.com/projects/lively/#credits&quot;&gt;team&lt;/a&gt; aim at nothing less than a bottom-up rethinking of the present-day web development stack. They've recreated, in less than 10 KLOC of JavaScript, a foundation that demonstrates the benefits of systematically and unapologetically examining your assumptions and mercilessly throwing all possible &lt;a href=&quot;http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBullet.html&quot;&gt;incidental complexity&lt;/a&gt; out the window.&lt;/p&gt;

&lt;p&gt;Lively Kernel is still at a very early stage, but watching Ingalls's &lt;a href=&quot;http://www.youtube.com/watch?v=gGw09RZjQf8&quot; title=&quot;Google TechTalk of Dan Ingalls presenting Lively Kernel&quot;&gt;presentation at Google&lt;/a&gt; and subsequently &lt;a href=&quot;http://research.sun.com/projects/lively/&quot;&gt;playing with the system&lt;/a&gt; I experienced much the same &quot;wow factor&quot; as when &lt;a href=&quot;http://ar.to/2007/01/the-road-to-lisp&quot; title=&quot;The Road to Enlightenment Is Littered with Irritating, Superfluous Parentheses&quot;&gt;first encountering&lt;/a&gt; Squeak many years ago. Here's one phrase I would like to hear more often: &lt;em&gt;&quot;it's not complicated; it's really easy&quot;&lt;/em&gt;. No cathedrals being built, here!&lt;/p&gt;

&lt;p&gt;True to its intellectual heritage, the Lively Kernel system is &quot;live&quot; in a manner fundamentally unlike even the best mainstream programming environments today. Ditch all existing preconditioned primitive notions of tedious edit-compile-run-crash-debug-rinse-repeat cycles, and jump right in to reprogram the system from the inside out, your changes instantly taking effect as you go along (there is a good demonstration of this in the aforementioned video when Ingalls, on the fly, reverses the time flow in a running clock widget).&lt;/p&gt;

&lt;p&gt;As anyone who has used Squeak knows, the immediacy of this way of working is addicting, the unfettered malleability of pure &lt;a href=&quot;http://ar.to/2007/01/lessons-from-the-science-of-nothing-at-all&quot;&gt;thought stuff&lt;/a&gt; giving rise to analogies of, say, sculpting clay &amp;mdash a stark contrast to the all-too-familiar constant friction and resistance of a bureaucratic chain of command founded in long-obsolete metaphors of folders and files, or the often arbitrary and unproductive distinctions between compile time and runtime.&lt;/p&gt;

&lt;p&gt;This is powerful stuff, and yet the implementation code is, as Ingalls says, very straightforward indeed. The core of Lively Kernel is a reimplementation of &lt;a href=&quot;http://en.wikipedia.org/wiki/Morphic_(software)&quot;&gt;Morphic&lt;/a&gt;, John Maloney's ingenious user-interface framework that also formed the basis for both Squeak and an earlier &lt;a href=&quot;http://research.sun.com/&quot;&gt;Sun Labs&lt;/a&gt; research project, the &lt;a href=&quot;http://research.sun.com/self/&quot; title=&quot;Self at Sun Labs&quot;&gt;Self&lt;/a&gt; system &amp;mdash; the latter which, incidentally, was another major influence on the design of JavaScript. The graphics primitives in Lively Kernel are based on &lt;a href=&quot;http://en.wikipedia.org/wiki/Scalable_Vector_Graphics&quot;&gt;SVG&lt;/a&gt;, which means that, as in NeXTSTEP and Mac OS X, all output is inherently scalable to any desired resolution. (There is an in-depth &lt;a href=&quot;http://research.sun.com/projects/lively/LivelyKernel-TechnicalOverview.pdf&quot; title=&quot;The Sun Labs Lively Kernel - A Technical Overview (PDF)&quot;&gt;technical overview&lt;/a&gt; available for those who want to dig deeper into Morphic and Lively Kernel's architecture.)&lt;/p&gt;

&lt;p&gt;One marked difference to Squeak appears to be the abandonment of a pure &lt;a href=&quot;http://www.onlamp.com/pub/a/onlamp/2006/09/21/learning_smalltalk.html?page=2&quot; title=&quot;Smalltalk for Everyone Else - The Smalltalk Image&quot;&gt;image-based&lt;/a&gt; environment, where the current snapshot of the code base would be stored e.g. in an opaque, system-specific binary format. While serialized &quot;live images&quot; have historically been one of the distinguishing features of Smalltalk systems (and indeed Common Lisp systems), they have not contributed to interoperability with more primitive systems (i.e. Unix) and hence have served as &lt;a href=&quot;http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3279343432&quot; title=&quot;Smalltalk's Problem?&quot;&gt;impediments&lt;/a&gt; to more widespread adoption.&lt;/p&gt;

&lt;p&gt;The near-term roadmap for Lively Kernel seems to include WebDAV-based over-the-wire serialization, which suggests to me that e.g. Subversion (specifically, Apache's &lt;a href=&quot;http://svnbook.red-bean.com/en/1.4/svn.serverconfig.httpd.html&quot;&gt;mod_dav_svn&lt;/a&gt;) could eventually serve as a Lively Kernel repository. If so, this would preserve the considerable advantages of image-based environments while doing away with the major perceived disadvantage.&lt;/p&gt;

&lt;p&gt;Of course, given that I'm praising simplicity here, I would be remiss not to mention that WebDAV and &lt;a href=&quot;http://svnbook.red-bean.com/en/1.4/svn.webdav.basic.html&quot;&gt;DeltaV&lt;/a&gt; do suffer from considerable complexity bloat (as I know all too well from painful close-range exposure), and a much simpler REST and JSON-based alternative is not difficult to imagine. However, at some point you do have to interface with the external world in all its decadent glory; I think the ability to piggyback on an existing revision control system might be a worthwhile trade-off in this case.&lt;/p&gt;

&lt;p&gt;The Lively Kernel interface at present still feels slightly sluggish, but the project's timing is most opportune. JavaScript is already today one of the most widely-deployed programming languages of all time, with an existing installed base in the hundreds of millions. The imminent next generation of browsers &amp;mdash; &lt;a href=&quot;http://mozillalinks.org/wp/2008/02/firefox-3-ultimate-feature-performance/&quot;&gt;Firefox 3&lt;/a&gt; and &lt;a href=&quot;http://blogs.msdn.com/gauravseth/archive/2008/03/06/jscript-performance-in-internet-explorer-8-beta.aspx&quot;&gt;IE 8&lt;/a&gt; &amp;mdash; will bring some pretty significant overall JavaScript performance boosts, not to mention that some Firefox version a little &lt;a href=&quot;http://www.mozilla.org/projects/tamarin/faq.html#when&quot;&gt;further&lt;/a&gt; down the line is set to integrate &lt;a href=&quot;http://www.mozilla.org/projects/tamarin/&quot;&gt;Tamarin&lt;/a&gt;, the native-code-compiling &lt;a href=&quot;http://developer.mozilla.org/presentations/xtech2006/javascript/&quot; title=&quot;JavaScript 2 and the Future of the Web&quot;&gt;JavaScript 2&lt;/a&gt; engine that will run circles around many of the sundry popular &quot;standalone&quot; scripting languages. JavaScript is clearly set to become the &lt;a href=&quot;http://steve-yegge.blogspot.com/2007/02/next-big-language.html&quot; title=&quot;The Next Big Language&quot;&gt;lingua franca&lt;/a&gt; of the next decade, and Lively Kernel provides an early glimpse of the ride we may be in for.

&lt;p&gt;Yegge &lt;a href=&quot;http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html&quot; title=&quot;Dynamic Languages Strike Back&quot;&gt;remarks&lt;/a&gt; &lt;em&gt;&quot;Lisp Machines pretty much had it nailed, as far as I'm concerned&quot;&lt;/em&gt;, to which I can only say: amen, brother. It seems a peculiar world where our best hope for advancing the state of the art consists of merely attempting to duplicate half-forgotten, decades-old good ideas in newer more-devolved programming languages, but such truly is the myopic, amnesiac reality of &quot;&lt;a href=&quot;http://www.dreamsongs.com/WorseIsBetter.html&quot; title=&quot;Lisp: Good News, Bad News, How to Win Big&quot;&gt;worse is better&lt;/a&gt;&quot;.&lt;/p&gt;

&lt;p&gt;On the other hand, efforts such as Lively Kernel remind us that heretofore passed-by opportunity lies right off the beaten path, on the divergent grassy road just wanting some wear. To paraphrase Ingalls's long-time collaborator, the equally industrious and illustrious &lt;a href=&quot;http://bc.tech.coop/blog/060224.html&quot; title=&quot;The Most Important Idea in Computer Science&quot;&gt;Alan Kay&lt;/a&gt;: it seems that in an industry stuck on a repeat loop of variations on &lt;a href=&quot;http://lispers.org/#greenspun&quot; title=&quot;Greenspun's Tenth Rule of Programming&quot;&gt;Greenspun's Tenth&lt;/a&gt;, the best way to predict the &lt;a href=&quot;http://blip.tv/file/568689&quot; title=&quot;RailsConf 2007 presentation by Avi Bryant&quot;&gt;future&lt;/a&gt; may simply be to rediscover it.&lt;/p&gt;</description>
    <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2008-05-27T22:00:00Z</dc:date>
    <dc:creator>Arto</dc:creator>
    <dc:subject>Emacs</dc:subject>
    <dc:subject>JavaScript</dc:subject>
    <dc:subject>Lisp</dc:subject>
    <dc:subject>Lively Kernel</dc:subject>
    <dc:subject>Morphic</dc:subject>
    <dc:subject>Smalltalk</dc:subject>
    <dc:subject>Squeak</dc:subject>
    <cc:license rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/"/>
  </item>
  <item rdf:about="http://ar.to/node/61">
    <title>A Brief History of Cutting Code in a Universe Three Doors Down</title>
    <link>http://ar.to/2008/03/cutting-code-three-doors-down</link>
    <description>&lt;p&gt;&lt;em&gt;Eventually upon a time, in a universe far far away &amp;mdash; or three stack frames down the line, to be precise...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Assembly_language&quot;&gt;Assembly&lt;/a&gt; is the ur-knife, known to man from the dawn of time. The flint edge is very sharp, but uneven and brittle. These tools can be fashioned both into knives for cutting and axes for hacking. In either case the edge will wear dull soon. Rarely are these venerated instruments now brought out in the modern day, and when they are, there is great ceremony involved. He who has the fortitude and stamina to hack down a &lt;a href=&quot;http://en.wikipedia.org/wiki/Sequoiadendron&quot;&gt;Big Tree&lt;/a&gt; using a mere assembly axe, all the while uttering the sacred ancient mantra the meaning of which is now lost, will be much respected among his peers - though perhaps not considered entirely sane.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.cs.virginia.edu/~evans/cs655-S00/readings/ewd498.html&quot;&gt;BASIC&lt;/a&gt; is a children's game that remains popular among youngsters. These &lt;a href=&quot;http://en.wikipedia.org/wiki/Lego&quot;&gt;plastic bricks&lt;/a&gt; can be quickly assembled together to form a toy with a certain charmingly crude, and entirely non-lethal, resemblance to an adult's blade. But beware of gravity, little one, as with too long a blade your construction will surely shatter at the midpoint. Some time-honored traditional techniques for counteracting this brittleness are chewing gum and duct tape.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/C++&quot;&gt;C++&lt;/a&gt; is the leading brand of gas-guzzling, noisy chainsaws. It'll fell the tree quickly all right, but needs serious muscle and experience for correct handling. The attrition rate among woodcutters is high, with many junior apprentices never returning from their first trip to the woods. Even senior loggers are often missing the occasional superfluous limb or two, but no matter: they've developed the forbearance and impressive skill to properly handle these beasts in single-handed combat. As they say, &lt;a href=&quot;http://en.wikipedia.org/wiki/The_Mythical_Man-Month&quot;&gt;good judgement&lt;/a&gt; comes from experience, and experience comes from &lt;a href=&quot;http://www.darwinawards.com/&quot;&gt;bad judgement&lt;/a&gt; - if you survive it.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.paulgraham.com/avg.html&quot;&gt;Java&lt;/a&gt; is now the most &lt;a href=&quot;http://www.google.com/trends?q=Java&quot;&gt;widely-used&lt;/a&gt; electric kitchen knife in the world. To prevent people accidentally cutting themselves up too badly, the blade is manufactured to a guaranteed consistently dull quality. Indeed this tool was originally developed in response to all the woodcutting accidents taking place with C++, which is perhaps curious considering that its &lt;a href=&quot;http://c2.com/cgi/wiki?BondageAndDisciplineLanguage&quot; title=&quot;bondage and discipline&quot;&gt;safety features&lt;/a&gt; make it somewhat tedious to hack at anything more &lt;a href=&quot;http://lispers.org/#steele&quot;&gt;ambitious&lt;/a&gt; than saplings. But, safety first or not, it remains splendid at cutting bread.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.smalltalk.org/&quot;&gt;Smalltalk&lt;/a&gt; is a voodoo stick. Wave it over a carefully constructed model of the real world, and stuff happens - trees fall, timber is cut to spec, and paper flows freely. It has long been a jealously guarded trade secret how this works, exactly, but we do know that the &lt;a href=&quot;http://bc.tech.coop/blog/060224.html&quot;&gt;inventor&lt;/a&gt; is associated with Lisp - which we'll get to in a minute. Unfortunately, this powerful technology was and remains so far &lt;a href=&quot;http://blip.tv/file/568689&quot;&gt;ahead of its time&lt;/a&gt; that it languished in obscurity long enough for the patent to expire, allowing some eastern philosophers to popularize a commercially &lt;a href=&quot;http://www.rubyonrails.org/&quot;&gt;highly successful&lt;/a&gt; &lt;a href=&quot;http://www.ruby-lang.org/&quot;&gt;clone&lt;/a&gt;. Catering to slightly more vulgar tastes, this clone may have sacrificed some of the original aesthetics, but not much of the seemingly supernatural power.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://thinking-forth.sourceforge.net/&quot;&gt;Forth&lt;/a&gt; self-assembling nanoblades represent the keenest &lt;a href=&quot;http://en.wikipedia.org/wiki/Baryon#Baryonic_matter&quot;&gt;baryonic&lt;/a&gt; blade edge currently available. Formed out of femtoscale building blocks that spontaneously stack themselves into arrangements of &lt;a href=&quot;http://factorcode.org/&quot;&gt;factorially&lt;/a&gt; increasing complexity, these axes will hack through a trunk with a single heave. They will also continuously and autonomously repair themselves so as to maintain the perfect edge down to the molecular level. The best neurosurgeons now refuse to use any other scalpel, and the razor blades made of this material provide for the closest shave you've ever had - just watch out that you don't shave off a little extra.&lt;/p&gt;

&lt;p&gt;These are all ingenious inventions of man. But of all the cutting and hacking devices known to us, there is one &lt;a href=&quot;http://bc.tech.coop/blog/060224.html&quot; title=&quot;the most important idea in computer science&quot;&gt;exalted&lt;/a&gt; above all others, and it lacks an earthly origin.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://lispers.org/&quot;&gt;Lisp&lt;/a&gt; is, as far as we can determine, &lt;a href=&quot;http://en.wikipedia.org/wiki/Clarke's_three_laws&quot; title=&quot;any sufficiently advanced technology is indistinguishable from magic&quot;&gt;magical&lt;/a&gt;. Obscure in &lt;a href=&quot;http://bc.tech.coop/blog/080101.html&quot;&gt;origin&lt;/a&gt; but manifesting itself in our corporeal reality in the form of &lt;a href=&quot;http://xkcd.com/297/&quot; title=&quot;weapons for a more civilized age&quot;&gt;lightsabers&lt;/a&gt;, the crystal nanocircuitry of these devices appears to transcend the ordinary laws of nature as we presently understand them. Infinitely &lt;a href=&quot;http://gilesbowkett.blogspot.com/2008/03/why-only-emacs-uses-lisp.html&quot;&gt;sharper&lt;/a&gt; than any scalpel, indestructible under a thousand atmospheres of pressure, these &lt;a href=&quot;http://www.lightsabertemple.blogspot.com/&quot;&gt;elegant&lt;/a&gt; instruments are made of an unknown alloy and keyed to their owner in such a way as to ensure they will never cut him.&lt;/p&gt;

&lt;p&gt;Brace yourself when you initially &lt;a href=&quot;http://ar.to/2007/01/the-road-to-lisp&quot;&gt;receive yours&lt;/a&gt; from your &lt;a href=&quot;http://lispers.org/&quot;&gt;elders&lt;/a&gt;. When you grasp the 'saber in your hands for the first time, parentheses and other cuneiform symbols will flicker in and out of your inner vision, and your ears may ring with thunderclaps not unlike the sound of continuous &lt;a href=&quot;http://en.wikipedia.org/wiki/Stack_overflow&quot;&gt;stack overflows&lt;/a&gt;. You may indeed have reason to wonder if the red pill you washed down with that lambda-tinted kool-aid at your initiation ceremony wasn't some form of psychedelic drug after all.&lt;/p&gt;

&lt;p&gt;Fear not; while research is still ongoing, this is thought to be a harmless side-effect of &lt;a href=&quot;http://en.wikipedia.org/wiki/Nanorobotics&quot;&gt;nanites&lt;/a&gt; that have slipped into your bloodstream through the handle and are reconfiguring your brain to accept their base code. The symbols you may see are hypothesized to be a transient interface adapter between the human visual cortex and the &lt;a href=&quot;http://www.lisperati.com/logo.html&quot;&gt;alien technology&lt;/a&gt; of the 'saber, quickly supplanted by some more direct mechanism that we haven't quite figured out yet.&lt;/p&gt;

&lt;p&gt;If you persist in confusion for a moment longer, the hieroglyphics will soon begin to fade into the background, becoming a subconscious part of your inner vision and lending your perception an acuity you didn't even know was missing. You will perceive not merely the apparent &lt;a href=&quot;http://en.wikipedia.org/wiki/On_Intelligence&quot;&gt;hierarchy of nature&lt;/a&gt; but penetrate yet deeper to the underlying infinitely more &lt;a href=&quot;http://www.lisperati.com/tellstuff/rdf.html&quot;&gt;subtle relationships&lt;/a&gt; and interconnections between things.&lt;/p&gt;

&lt;p&gt;Once the symbiotic link with your 'saber is fully established, you will be able to, at will, slice through the molecular bonds of any &lt;a href=&quot;http://en.wikipedia.org/wiki/Gordian_knot&quot;&gt;Gordian Knot&lt;/a&gt; as if they were made out of air. Given that you may will the width of the blade's swath to reconfigure itself from picometers upwards, your 'saber is easily the most precise and &lt;a href=&quot;http://www.paulgraham.com/power.html&quot;&gt;capable&lt;/a&gt; instrument known to man. The rush and elation, and yes, the pride, of wielding a lightsaber is enough to make anyone giddy. You should understand that with great power comes great responsibility, and you are advised to review the ethical code from time to time.&lt;/p&gt;

&lt;p&gt;After further meditation and practice, you may eventually come to understand that it is not the blade that cuts, but your mind that &lt;a href=&quot;http://ar.to/2007/01/lessons-from-the-science-of-nothing-at-all&quot;&gt;sculps reality&lt;/a&gt; according to your imagination. This insight is reported to be the last thing uttered by some of the legendary Lisp grand masters before they, somehow, cut the ties that bound them to our sphere of reality, thus vanishing into thin air.&lt;/p&gt;

&lt;p&gt;There is some speculation that, after contemplating year upon year on the grid lines that all Lispers are able to perceive in the night sky, these Lisp masters &lt;a href=&quot;http://en.wikipedia.org/wiki/Auguries_of_Innocence&quot;&gt;held infinity&lt;/a&gt; in the palm of their hand and found a nearby quantum &lt;a href=&quot;http://en.wikipedia.org/wiki/Call_stack#Structure&quot;&gt;activation frame&lt;/a&gt;, unlocking a suspended gateway &lt;a href=&quot;http://en.wikipedia.org/wiki/Continuation&quot;&gt;continuation&lt;/a&gt; that allowed them to &lt;a href=&quot;http://en.wikipedia.org/wiki/Ascension_(Stargate)&quot;&gt;ascend&lt;/a&gt; to some higher plane of being that, evidently, encompasses and sustains our own.&lt;/p&gt;

&lt;p&gt;A competing hypothesis among those of a more hedonistic bent is that perhaps the vanished masters managed to &lt;a href=&quot;http://ar.to/2007/04/god-sure-didnt-write-in-java&quot;&gt;construct&lt;/a&gt; a private, entirely self-contained &lt;a href=&quot;http://en.wikipedia.org/wiki/Scope_%28programming%29#Static_scoping&quot;&gt;lexical scope&lt;/a&gt;, i.e. sub-universe, of their own, a form of personal nirvana obeying their own choice of &lt;a href=&quot;http://www.paulgraham.com/rootsoflisp.html&quot;&gt;evaluation rules&lt;/a&gt; and containing &lt;a href=&quot;http://en.wikipedia.org/wiki/Future_(programming)&quot;&gt;the promise of limitless futures&lt;/a&gt; to explore and indulge in.&lt;/p&gt;

&lt;p&gt;There is only one way to find out - &lt;a href=&quot;http://www.gigamonkeys.com/book/&quot;&gt;apply&lt;/a&gt; for a &lt;a href=&quot;http://mitpress.mit.edu/sicp/&quot;&gt;wizard's robe&lt;/a&gt; today and begin your own journey from caveman to first-order hacker of the heavenly spheres in this universe and beyond.&lt;/p&gt;</description>
    <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2008-03-28T22:00:00Z</dc:date>
    <dc:creator>Arto</dc:creator>
    <dc:subject>C++</dc:subject>
    <dc:subject>Forth</dc:subject>
    <dc:subject>frivolous</dc:subject>
    <dc:subject>Java</dc:subject>
    <dc:subject>Lisp</dc:subject>
    <dc:subject>Smalltalk</dc:subject>
    <cc:license rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/"/>
  </item>
  <item rdf:about="http://ar.to/node/60">
    <title>Finding Clojure, or How I Learned to Stop Locking and Eval the JVM</title>
    <link>http://ar.to/2008/03/finding-clojure</link>
    <description>&lt;a href=&quot;http://clojure.org/&quot; title=&quot;Clojure, a dynamic programming language for the JVM&quot;&gt;&lt;img src=&quot;http://ar.to/2008/03/finding-clojure/clojure.png&quot; title=&quot;Clojure&quot; align=&quot;right&quot; width=&quot;42&quot; height=&quot;42&quot; border=&quot;0&quot; hspace=&quot;10&quot; style=&quot;margin-left: 10px; margin-right: 0px;&quot; /&gt;&lt;/a&gt;

&lt;p&gt;Ever since the &lt;a href=&quot;http://en.wikipedia.org/wiki/Scheme_%28programming_language%29&quot;&gt;Scheme&lt;/a&gt; R&lt;sup&gt;6&lt;/sup&gt;RS &lt;a href=&quot;http://ar.to/2007/08/r6rs-scheme-considered-harmful&quot; title=&quot;R5.97RS Scheme Considered Harmful&quot;&gt;roadblock&lt;/a&gt;, I've been looking to branch out into other &lt;a href=&quot;http://lispers.org/&quot;&gt;Lisps&lt;/a&gt; outside the Scheme &lt;a href=&quot;http://scheme.info/&quot;&gt;ecosystem&lt;/a&gt;. The good news is that there's no shortage of nascent Lisps and Lisp-wannabes, with many interesting new undertakings being launched month upon month.&lt;/p&gt;

&lt;p&gt;There's one in particular, called &lt;a href=&quot;http://clojure.org/&quot;&gt;Clojure&lt;/a&gt; (pronounced &lt;em&gt;closure&lt;/em&gt;), that was &lt;a href=&quot;http://lispnyc.org/wiki.clp?page=past-meetings&quot; title=&quot;LispNYC, November 2007&quot;&gt;unveiled recently&lt;/a&gt; and effortlessly stands out from the bunch. There's much to like about Clojure, but first and foremost, it follows a principle I'm very fond of: &lt;em&gt;code talks, bullshit walks&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;That is to say, it's not difficult to imagine any number of interesting directions to take Lisp into, nor is it generally all that much effort to implement proof-of-concepts of such ideas (it's &lt;em&gt;Lisp&lt;/em&gt;, after all); but to actually create a full integrated, practical and performant system, that's another matter entirely.&lt;/p&gt;

&lt;p&gt;The difference between toy and tool is more than quantitative, and the leap from an &lt;a href=&quot;http://mitpress.mit.edu/sicp/&quot; title=&quot;Structure and Interpretation of Computer Programs&quot;&gt;SICP&lt;/a&gt; metacircular interpreter to something deserving of the hallowed title &quot;Lisp system&quot; is non-trivial, requiring not just deep mastery of the &lt;a href=&quot;http://library.readscheme.org/&quot;&gt;fundamentals&lt;/a&gt; but also the discipline and opportunity to take care of all the &quot;boring&quot; stuff so as to ship it. As I know all too well from plenty of practice, this last so-called 20% is where most efforts ultimately wither out to oblivion.&lt;/p&gt;

&lt;p&gt;Thus it's a pleasant surprise to discover that while Clojure has no shortage of &lt;a href=&quot;http://clojure.org/features/&quot; title=&quot;Clojure features&quot;&gt;goodies&lt;/a&gt;, it's also remarkably mature and &lt;em&gt;usable right here and now&lt;/em&gt;. The author, &lt;a href=&quot;http://sourceforge.net/users/rhickey/&quot; title=&quot;he doesn't seem to have a web page per se&quot;&gt;Rich Hickey&lt;/a&gt;, says that he has worked on it for two years, and I think it's admirable that he kept tight-lipped about it for the duration; as a first alpha release, Clojure as it is currently available simply &lt;em&gt;rocks&lt;/em&gt;. No &lt;a href=&quot;http://www.joelonsoftware.com/articles/PickingShipDate.html&quot;&gt;Marimba phenomenon&lt;/a&gt;, here.&lt;/p&gt;

&lt;p&gt;As for the goodies, how does a &lt;a href=&quot;http://clojure.org/features/concurrent_programming.html&quot; title=&quot;concurrent programming&quot;&gt;concurrent&lt;/a&gt;, &lt;a href=&quot;http://clojure.org/features/functional_programming.html&quot; title=&quot;functional programming&quot;&gt;functional&lt;/a&gt; &lt;a href=&quot;http://www.dreamsongs.com/Separation.html&quot; title=&quot;single-namespaced Lisp system&quot;&gt;Lisp&lt;sub&gt;1&lt;/sub&gt;&lt;/a&gt; with &lt;a href=&quot;http://clojure.org/reference/refs.html&quot; title=&quot;software transactional memory (STM)&quot;&gt;software transactional memory&lt;/a&gt; sound like? To me, it sounds like the future. (And that's just the tagline, there's &lt;a href=&quot;http://clojure.org/features/&quot;&gt;much more&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;I've thought for a while now that if you took a purely &lt;a href=&quot;http://en.wikipedia.org/wiki/Functional_programming&quot; title=&quot;functional programming&quot;&gt;functional&lt;/a&gt; subset of Scheme (pre-R&lt;sup&gt;6&lt;/sup&gt;RS), sprinkled it with the best of &lt;a href=&quot;http://en.wikipedia.org/wiki/Haskell_%28programming_language%29&quot; title=&quot;Haskell (programming language)&quot;&gt;Haskell&lt;/a&gt; (without the whole mandatory &lt;a href=&quot;http://en.wikipedia.org/wiki/Type_system#Static_typing&quot; title=&quot;static typing&quot;&gt;bondage and discipline&lt;/a&gt;, thanks) and built it all on top of an Erlang-like runtime, that might form a pretty compelling basis for a serious attempt at a new practical Lisp dialect. Clojure is perhaps not &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/2a2b24ffef5d1631/&quot;&gt;quite&lt;/a&gt; the particular mix that I had in mind, but it's very much in the ballpark.&lt;/p&gt;

&lt;p&gt;Indeed Clojure embodies the kind of Lisp I'm interested in, that is, a pragmatic go-getter system actively drawing on the best new computer science research and pushing Lisp ever further out on the frontier of the future, instead of complacently sitting around arguing about how many lambdas can dance on a parenthesis while wondering why the competition is drawing nearer.&lt;/p&gt;

&lt;p&gt;Considering how new Clojure is, there is a &lt;a href=&quot;http://clojure.org/reference/&quot; title=&quot;Clojure reference&quot;&gt;commendable amount of documentation&lt;/a&gt; already available, and the &lt;a href=&quot;http://groups.google.com/group/clojure/&quot; title=&quot;Clojure on Google Groups&quot;&gt;user community&lt;/a&gt; is growing in leaps and bounds, drawing both Common Lispers and Schemers as well as a good number of people entirely new to Lisp. The momentum that Clojure has going is tangible.&lt;/p&gt;

&lt;p&gt;On the flip side, and these are really pretty serious omissions but may perhaps be intractable on the JVM at present, Clojure lacks &lt;a href=&quot;http://en.wikipedia.org/wiki/Tail_recursion&quot;&gt;tail recursion optimization&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Continuation&quot;&gt;continuations&lt;/a&gt;. Also, while the &lt;a href=&quot;http://clojure.org/features/concurrent_programming.html&quot;&gt;concurrency features&lt;/a&gt; are impressive, I'm as of yet unsure how well-suited Clojure's JVM-based threading might be to a massively parallel programming style such as what I've been using with the lightweight processes in &lt;a href=&quot;http://www.iro.umontreal.ca/~gambit/&quot;&gt;Gambit&lt;/a&gt; and &lt;a href=&quot;http://www.erlang.org/&quot;&gt;Erlang&lt;/a&gt;, both of which will run millions processes without flinching. The author &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/2a2b24ffef5d1631/&quot;&gt;explains&lt;/a&gt; that these &lt;a href=&quot;http://en.wikipedia.org/wiki/Actor_model&quot; title=&quot;Actor model&quot;&gt;use cases&lt;/a&gt; are kind of &lt;a href=&quot;http://clojure.org/reference/agents.html&quot;&gt;supported&lt;/a&gt; but perhaps not really Clojure's sweet spot.&lt;/p&gt;

&lt;p&gt;Now, given these JVM-imposed constraints, I should admit that I put off looking into Clojure for several months just given that it's based on the &lt;a href=&quot;http://en.wikipedia.org/wiki/Java_Virtual_Machine&quot; title=&quot;Java Virtual Machine&quot;&gt;JVM&lt;/a&gt;; not only have I not recently had any reason to use the JVM, but my antipathy to Java is &lt;a href=&quot;http://ar.to/2007/01/the-road-to-lisp&quot;&gt;long-standing&lt;/a&gt; and &lt;a href=&quot;http://ar.to/2007/04/god-sure-didnt-write-in-java&quot;&gt;well-documented&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, in his &lt;a href=&quot;http://lispnyc.org/wiki.clp?page=past-meetings&quot;&gt;LispNYC talk&lt;/a&gt;, Rich Hickey makes compelling points about why he based Clojure on the JVM, and I can't help but agree with many of them. Similarly, Neal Ford in his superb &lt;a href=&quot;http://memeagora.blogspot.com/2007/11/jruby-podcast-on-javaworld.html&quot;&gt;recent JRuby-related interview on JavaWorld&lt;/a&gt; makes a case that the actual positive legacy of Java will be the JVM as an established and widespread high-performance platform and infrastructure for enabling &lt;a href=&quot;http://ola-bini.blogspot.com/2008/01/language-explorations.html&quot;&gt;polyglot programming&lt;/a&gt; with the already more than 200 languages (including &lt;a href=&quot;http://jruby.codehaus.org/&quot; title=&quot;Ruby on the JVM&quot;&gt;JRuby&lt;/a&gt;, &lt;a href=&quot;http://www.mozilla.org/rhino/&quot; title=&quot;JavaScript on the JVM&quot;&gt;Rhino&lt;/a&gt;, &lt;a href=&quot;http://codehaus.org/~yan/jaskell/&quot; title=&quot;Haskell on the JVM&quot;&gt;Jaskell&lt;/a&gt; and &lt;a href=&quot;http://www.jython.org/&quot; title=&quot;Python on the JVM&quot;&gt;Jython&lt;/a&gt;) that you can run on it. I can buy that argument, too.&lt;/p&gt;

&lt;p&gt;So, I'm coming to the unwelcome conclusion that my distaste for Java the language may have blinded me to the potential of the JVM as a platform for hosting other more powerful programming languages. I haven't much followed the JVM's evolution for years now, but intend to keep a closer eye on it in the future - especially the ongoing work around &lt;a href=&quot;http://www.artima.com/lejava/articles/dynamic_languages.html&quot; title=&quot;Dynamic Language Support on the JVM&quot;&gt;JSR 292&lt;/a&gt; that aims to make the JVM &lt;a href=&quot;http://headius.blogspot.com/2007/01/invokedynamic-actually-useful.html&quot;&gt;suck less&lt;/a&gt; for hosting dynamic languages.&lt;/p&gt;

&lt;p&gt;In any case, I'll be taking Clojure out for a spin. It's definitely a singularly unique new Lisp well worth looking at and learning from. I highly recommend Rich Hickey's &lt;a href=&quot;http://lispnyc.org/wiki.clp?page=past-meetings&quot; title=&quot;LispNYC, November 2007&quot;&gt;two-hour LispNYC presentation&lt;/a&gt; which I can only describe as delightfully &lt;a href=&quot;http://clojure.org/news/zippers_-_functional_tree_e.html&quot;&gt;competent&lt;/a&gt;. (Also, in case &lt;a href=&quot;http://en.wikipedia.org/wiki/Software_transactional_memory&quot; title=&quot;Software transactional memory&quot;&gt;STM&lt;/a&gt; is an unfamiliar concept, Simon Peyton-Jones's &lt;a href=&quot;http://www.blip.tv/file/317758/&quot; title=&quot;Transactional Memory for Concurrent Programming, July 2007&quot;&gt;brief introduction&lt;/a&gt; at OSCON last year should be able to fill in the gaps some.)&lt;/p&gt;</description>
    <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2008-03-26T18:00:00Z</dc:date>
    <dc:creator>Arto</dc:creator>
    <dc:subject>Clojure</dc:subject>
    <dc:subject>JVM</dc:subject>
    <dc:subject>Lisp</dc:subject>
    <dc:subject>Scheme</dc:subject>
    <dc:subject>STM</dc:subject>
    <cc:license rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/"/>
  </item>
</rdf:RDF>
