The Unenterprisey Languages Meeting held in Wellington yesterday went very well. The turnout was good with about 16 people there and the talks by Jonathan, Robert and Geoff were great. It's good to see and hear about languages like Io, Common Lisp and Erlang being used.
Jonathan talked about Io's prototype based OO system and how inheritance works in it. He went through an overview of Io itself, how the inheritance works, and how he used ideas gained from Io in a project he worked on recently. His project used a domain specific language he developed that used the inheritance ideas of Io to help manage the project. It looked pretty cool.
Geoff talked about Erlang, going through its history, syntax, reliability, and concurrency system. It was good to see him talk about the OTP system as I wasn't very familiar with that and his demo showed sending messages across processes with dynamic failover of nodes. When the primary node went down the secondary node took over. When it came back up again it again took over. Very neat!
Robert Strandh talked about GSharp, his musical score editor written in Common Lisp. It uses CLIM for the GUI and looks very nice. The focus of the talk was how he embedded a domain specific language into GSharp to handle fonts better. Specifically the language was modelled after MetaFont, but embedded as a DSL in Common Lisp as a macro. This would then get compiled as PostScript bezier paths. The macro itself was a nice example of intentional variable capture (ie. It was intentionally a non-hygienic macro) which was something I'd not seen in a 'real world' usage before.
Robert also showed another CLIM application he wrote to preview the fonts from the DSL. In 172 lines of Common Lisp code it had an impressive amount of functionality. CLIM looks to be a very powerful framework.
My talk was about Javascript. But Javascript used slightly differently than normal. I gave a brief overview of Javascript and its prototype based OO system. I then talked about using Javascript on the server as well as the client, and about the possibilities of having the same code run on both the server and client for things like field validation. This way one copy of the code can validate input fields in client side Javascript and when posted to the server the same code can also check that the server side POST was valid.
To demonstrate running the same code on the client and server I used Wiky, a nifty Javascript bidirectional markup converter. I showed the Wikybox running on the client, and demonstrated loading the exact same Javascript in Rhino and doing the same conversions on the server. The idea being you can have the markup converted to HTML for a preview on the client, send the markup to the server when saving, and use the same code on the server to store the HTML.
From there I demonstrated using Server Side Javascript to dynamically modify a running web server, adding servlets on the fly in Javascript.
I went on to talking about continuations and Javascript. For client side continuations I showed some Narrative Javascript examples and went through the lightweight threading and process communication examples I posted about previously.
Finally I finished with server side continuations in Javascript showing the thread migration example.
After the talks we all went out for a great meal at a local restaurant and ate, drank, and talked for most of the night.
Overall I'd say the alternative language interest and usage in New Zealand is definitely looking good. Thanks to everyone who attended and those that organised it - very worthwhile!