About

All articles, tagged with “lsl”

FOSDEM X

Last weekend I went to the 10th Free and Open Source Developers European Meeting in Brussels. This year was the first time that FOSDEM had hosted a track on Mono, so I went along to find out what’s going on with Mono, tell the Mono folk what our plans are for C# and fill in some gaps.

I started Saturday on the monitoring track which included a terrible talk about an interesting tool that I hadn’t heard of: SystemTap — a scriptable system monitoring tool designed to allow diagnosis of problems at run time on production servers without the usual instrument, compile, analyse loop. stap looks really interesting and useful as a tool for augmenting or replacing our current simulator performance tools.

After the stap talk I headed over to the XMPP track for the rest of the day and saw some great talks on BOSH, onsocialweb, pubsub, strophe.js, collecta and node.js. Federated, open social networks seem to be a big thing at the moment (@blaine was talking about them at @scalecampuk ) and there was lots of interest in using XMPP to build them as it already has standards for identity, presence, friends and events. Given that jabber and XMPP is a decade old it makes you wonder why the standards weren’t used the first time round. A possible reason is that XMPP doesn’t have it’s rails/django yet and still looks pretty clunky to work with although Strophe.js may help. Another reason may be that XMPP hasn’t been the web up until now, although BOSH may be the bridge that’s needed there.

While everyone else was thinking about using XMPP to build Twitter and Facebook I started thinking about what an open, federated virtual world platform built on XMPP might look like. I wasn’t the only one. The realXtend folks turned up to show off their latest new from the ground up viewer which uses XMPP and jingle for voice and IM integration and were obviously thinking along the same lines. As realXtend seem to be moving away from SL tech now, expect an XMPP based back end from them soon…

I spent Sunday camped out in the Mono room which was interesting from a cultural point of view. Miguel de Icaza seems to have completed his transition from champion to enemy of freedom in the open source community’s eyes. Last time he was at FOSDEM he was accused of talking about “Coca Cola” when showing off the closed source Unity engine that uses Mono, so stayed strictly to open technologies in his talk this year. Luckily, due to Microsoft’s Community Promise and open sourcing of the DLR, IronPython and IronRuby, that includes a lot of the .NET platform and gave him lots to talk about. Most of the legitimate worries of patents around Mono have been resolved, but talking about C# and the CLI at FOSDEM still requires a poster asking people to leave their religion at the door, apparently.

In my Second Life talk, I gave a summary of the interesting things we did to get LSL on Mono working in 2008 and then outlined our plans for C# in the future including lots of question marks around how we’re currently planning to implement them. Lots of my questions were answered after the talk and it turns out that the Unity developers are wrestling with the same problems at the moment, so we should be able to work together over the next few months to make a lot of progress.

Overall FOSDEM was hugely informative and enjoyable and I have a big shopping list of exciting new technologies to play with over the next few months. Hopefully the Mono room will become a regular fixture and we’ll be able to head back next year.

Lang.NET 3 Years On

It was incredibly satisfying to be able to go back to Lang.NET 3 years on to be able to say that we actually managed to make all the crazy plans we had for Mono in 2006 work. My talk is now online here. Lots of people hadn’t seen the 2006 talk and were blown away with us adding support for continuations on the CLR and enough new stuff to keep those that had seen the first talk interested. In particular the anecdote about flywheel exploits for the Mono scheduler got a laugh from Anders Hejlsberg.

The other highlights on Tuesday were Mads Torgeson’s talk, which gave some nice insights in to the process that led up to the final C# 4.0 Dynamic design. Mads did a good job capturing some of the concerns that static advocates have with dynamic languages. Gilad Bracha’s talk on Newspeak and the Hopscotch IDE showed what’s possible with a really dynamic language: extending the IDE and debugging it from inside itself. The access that newspeak has to it’s call stack was particularly interesting: it would be much easier to move a newspeak stack around than build the infrastructure we needed to move a CLI stack. I spoke to Gilad about his experiences building newspeak on Sqeak afterwards. His impression is that Squeak is runtime mostly used for education and has no support for security or running untrusted code. Having spent a decade seeing the various security problems with bytecode verification in Java, Gilad isn’t convinced that a bytecode level sandbox is the right approach, but although he has some ideas for object capability based security for the post squeak Newspeak implementation it seems a long way off.

The highlight on Wednesday was definitely Lars Bak’s talk on V8, which I had missed last year at JAOO. The mechanism for discovering emergent types in dynamic languages to allow indexed lookup instead of hash table lookup is a very nice hack. Lar’s super competitive heckling of everyone at Microsoft for the rest of the day was also fun. Other highlights included Erik Meijer throwing coins around while talking about mathematical duality and Amanda Lauter and Luke Hoban talking about F#. Potentially relevant to Linden Lab if we get to the point where we can support debugging scripts in Second Life was Herman Venter’s talk on the Common Compiler Infrastructure a newly open sourced library which can allow CLI assembly rewriting while preserving debug information.

The Meta Introduction to Domain Specific Languages was a really good opening for the DevCon, but the talk most relevant to Second Life was Paul Cowan talking about DSLs in the Horn Package Manager. Paul talked about creating DSLs by extending Boo, something that should be possible when we get to the point where Second Life can accept arbitrary CLI assemblies. I got a first Boo script compiling against the Second Life assemblies at the DevCon and have some plans to experiment building a DSL for virtual ecosystems in Second Life over the next few weeks. Supporting C# as a general purpose language and Boo as a meta language for building DSLs in Second Life would be an excellent combination.

A lot of the talks at the DevCon seemed to involve doing terrifying language somersaults to create more natural DSLs that run on the JVM or CLI which then can’t be easily debugged due to the huge chained expressions or nested types that the languages boil down to. There seems to be a large opportunity for disaster here when these DSLs need to be extended or maintained in 10 years time after the original authors have moved on. Although Martin deflected a lot of these questions by saying you can get bad frameworks as easily as bad DSLs, I feel a lot more comfortable unpicking a bad framework or wrapping a library than trying to fix or extend a broken language (maybe several years reimplementing LSL’s quirks did that).

The ultimate promise of DSLs was hinted at by Magnus Christerson’s talk which demoed Intentional’s amazing Domain Workbench. Instead of building DSLs on top of mainstream runtimes, the Domain Workbench models the domain and can then project the model as code or using domain specific projections like interactive circuit diagrams that can be manipulated and debugged interactively. Magnus started his talk saying that we used to have to enter programs on punch cards that evolved in to sequential programs and that we don’t need to do that any more. If the Domain Workbench’s promise is fulfilled it could change the way we develop software forever.

A Collaborative User Generated Ambient Augmented Virtual Reality Scientific Visualisation The Size Of Denmark

2 years ago at Euro FOO 2006 I met a mass of great people and enjoyed a torrent of wonderful conversations, but 2 of them in particular stuck with me. The first was with Gavin Starks who commented that climate change would be much easier to deal with if we could see carbon dioxide. The second was with Claus Dahl who observed that Second Life is a great platform to prototype large scale augmented reality applications as every object in Second Life has an Id and you can give away free augmented reality glasses in the form of heads up displays (HUDs).

A year later I started to experiment with the latter idea with SLateIt, an augmented reality application that can be used to find, tag and rate virtual objects in Second Life. Although I think tagging, rating and recommendation systems have a bright future in navigating the vast quantities of people, places and stuff in Second Life, SLateIt mostly came about as a way to demo augmented virtual reality in Second Life without a large data set to associate with objects in SL.

Finally, last week, the awesome team of Max Williams, Ryan Alexander, Andrew Conway, Simon Willison, Natalie Downe and Chris Waigl helped me bring the two ideas together by mashing up SLateIt, SecondLife and Gavin Starks’ new AMEE emissions data base to create Carbon Goggles. Instead of mapping Second Life object Ids to tags and ratings, Carbon Goggles maps Second Life object Ids to AMEE URLs. The HUD queries carbongoggles.org for emissions data for nearby objects and, if found, overlays a sphere on the object with a volume corresponding to the monthly carbon emissions of the object. In 24 hours we managed to hack together a working system to demo at Mashed and 2 days later added an annotation interface that allows new objects to be annotated with emissions data.

Carbon Goggles has had some great coverage over the last week, but I really hope the story doesn’t end there. The goal is to annotate objects across Second Life to produce a collaborative user generated ambient augmented virtual reality scientific visualisation the size of Denmark. Together we can add an extra layer of information to Second Life allowing people to learn to make more informed decisions in real life while living their Second Life. If you’re part of a group in Second Life that would like to help annotate objects, host Carbon Goggles vendors in world, create videos or images of Carbon Goggles visualisations or would like to help in any other way, please join the Carbon Goggles group in Second Life and get in touch.

Carbon Goggles