Cory and Jim talked about Second Life, the current scripting system used in Second Life and their efforts to embed the Mono VM inside Second Life. The first part of the presentation was done by Cory and he presented an overview of Second Life and the audience was hooked on the virtual world that they have created. They had to stop answering social questions about Second Life so we could move into the actual technical details.
Jim, who is a blast, introduced the technical challenges that Second Life has on scripts. They need to be able to load and unload thousands of scripts in a continuously running process, and they also need to stop scripts at any point to either suspend them or to move to another computer.
Second Life maps computers to areas of land, so a computer is in charge of running all the simulations, physics and scripts for a given portion of virtual land. When a person crosses the boundaries the scripts have to migrate from one machine to the next machine.
Today the scripts running on Second Life are a bit slow, so they are looking at Mono and the CLI as a way of providing more speed to their users and hopefully allow developers to write in other languages other than their Linden Labs Scripting Language.
They have a compiler that translates their scripting language into CIL bytecodes, and the preliminary results give a performance increase between 50x and 150x faster execution with Mono.
The challenge is to stop and save a running script. This is something that is relatively easy done with their scripting language, but it becomes trickier with the CLI.
Their implementation instruments the generated CIL assembly to allow any script to suspend itself and resume execution on demand. This is a bit like continuations, the main difference is that the script does not control when it is suspended, the runtime does. The instrumentation basically checks on every back-branch and on every call site whether the script should stop (in Jim's words, "eventually, you run out of method, or you run out of stack") and if it must stop, it jumps to the end of the method where a little stub has been injected that saves the state in a helper class and returns.
A very clever idea. Hopefully the slides for the presentation will be posted soon.
Following my attorney's advise I have obtained a Second Life account.
There were two presentations on Ruby running on .NET, the native compiler that John Gough's research team is working on and John Lam's RubyCLR bridge.
Compiling Ruby is challenging for a number of reasons, the lack of a language specification means that sometimes the only specification for the behavior is the source code and because Ruby has a lot of features that do not map easily into the single-hierarchy, multiple-interface object model that is part of .NET. So Ruby.NET has to generate a number of helper classes and runtime support to provide the expected behavior.
John's approach is different. Instead of creating a compiler for Ruby, he wants to reuse the existing Ruby and provide a good bridge to expose Ruby objects to the CLR and CLR objects to Ruby. He had some good demos of it, and he showed an interesting interactive shell that he built with Ruby and Avalon.
During Gilad Bracha's presentation he pointed out that some languages fit naturally into the .NET and Java VM models, and those languages tend to feel like syntactic sugar for the existing VM.
A few compilers for dynamic languages like IronPython and Ruby.NET as well as C++ require features that can not map directly into the .NET and Java models so it is necessary to create an independent universe and merely using the Common Type System (CTS) and the Common Language Specification (CLS) as "interoperability points".
The conference really was split in two groups: those attending the talks (back-to-back with a couple of breaks) and those in the "kitchen track".
In the kitchen track there were plenty of interesting discussions, among them, should there be a "CLR-2" or a "CLS-2" that provides the shared runtime support for dynamic languages and standardizes the second layer to allow higher interoperability of these new layers created for scripting languages.
Don Syme designed the generics support for the CLI and C# and did a fantastic presentation.
He has since moved on from Generics and has been working on F#. His presentation and demostrations were fantastic. I would probably have benefited more from this talk had I known more about functional programming.
Posted on 03 Aug 2006
I just had a realization today.
Microsoft's Avalon is the J2EE of GUI APIs.
Its God's way of punishing us for replacing the ten commandments with the Design Pattern fad.
We will have to wait a couple of years for the "Rails" of GUI toolkits to come into existance. In the meantime programmers will pay for their sins.
Avalon marks the end of the American Dream.
Posted on 02 Aug 2006
Alan is part of the Google Summer of Code team that is building a Bittorrent framework. Today, he achieved bittorrent self-hostingness-nirvana:
<_Alan_> my freshly compiled windows mono runs monotorrent perfectly now :) <_Alan_> downloading the suse image with it now
Posted on 01 Aug 2006
Gonzalo launched the Mono.Google API last night, and this morning at 7:25AM I received an email from Stephane Delcroix pointing me to his contribution that added Picasa export to F-Spot, his bugzilla comment:
This patch will allow export to picasaweb.
It's feature complete (as in PicasaWeb features), that means that it support multiple google accounts, creation of albums (private or public ones) and upload pictures to them.
Posted on 28 Jul 2006
So Google today launched its source code hosting effort.
I suspected they were working on something along these lines, because the Subversion folks went to work for Google some time ago. You did not read about this, because I only speculated about this to Greg Stein, which would not leak one single bit about what he was doing.
Anyways, Gonzalo has been on a roll recently. He changed our FileSystemWatcher code to use inotify instead of depending on FAM and Gamin. See his post on the subject.
And he also just uploaded Google Sharp to subversion (module google-sharp). With GoogleSharp you can authenticate your application with Google and access some of their services. The one that both Gonzalo and myself care about is PicasaWeb. The code has everything for F-Spot to start exporting my pics there.
Gonzalo has a web entry with details here and sample code to login, list albums in PicasaWeb, and upload pictures to it.
Let the Mono uploading begin.
Posted on 27 Jul 2006
A few Mono contributors went to work and consult for a mysterious company a while ago, and this week we finally found out where they had gone.
They created a framework for building web applications, the dream framework. It is mostly focused on the back-end side of things. The framework allows developers to easily create REST services, with a number of interesting features:
MindTouch Dream is a REST-based distributed application framework developed in Mono/.NET. With Dream, a Web service is similar to an object, and features interact through standard HTTP verbs. This design allows the developer to assume an "idealized" world where everything a service comes into contact with is accessed through Web requests. The Dream service library addresses common problems, and the Dream runtime orchestrates all interactions without requiring a Web server to be pre-installed on a target machine.
MindTouch Dream manages all the complex aspects of interactive web services, such as providing storage locations, database connections, event notifications, automatic data conversion from XML to JSON and short-circuit communication for co-hosted services.
And they ported MediaWiki to run on top of this framework, this port is DekiWiki. It differs from MediaWiki in that they have a GUI designer for the page, it is quite nice. You can see it in action here.
I am told that they are porting the entire MediaWiki to C# as well.
Aside from the high-level descriptions, there are a couple of interesting bits about Dream, the framework and applications are designed assuming that network connectivity could go down at any point, that the network will likely fail. A focus on making fault tolerant applications.
Currently Dream and DekiWiki run out of the box with Mono, for installation instructions see this.
I told Urs that I would migrate www.mono-project.com to it, but it first has to be ported to C# ;-)
Posted on 27 Jul 2006
Next week I will be presenting Mono at the Lang.NET 2006 Symposium conference at Microsoft in Redmond. There are a number of interesting talks about VMs, new languages, mapping languages to the current VMs and some creative uses of these VMs.
Will be arriving on Sunday, and leaving on Thursday, drop me an email if you want to meet.
Posted on 26 Jul 2006
From the Daily Grind, I found out about NProject:
NProject is a software project and content management system mainly for the .NET Framework (and Mono). It integrates a Wiki, an issue management and reporting system, a dynamic project calendar and integration with CruiseControl.NET. It's inspired by Trac (http://projects.edgewall.com/trac/) and other cool projects. It's based on Castle MonoRail, ActiveRecord? and Windsor projects (http://www.castleproject.org/). But most important : it's fun and looks cool!
Posted on 26 Jul 2006
Howard Zinn wrote in December 2001 the A Just Cause, Not a Just War.
This essay is as relevant today as it was relevant at the end of 2001:
Terrorism and war have something in common. They both involve the killing of innocent people to achieve what the killers believe is a good end. I can see an immediate objection to this equation: They (the terrorists) deliberately kill innocent people; we (the war makers) aim at "military targets," and civilians are killed by accident, as "collateral damage."
Is it really an accident when civilians die under our bombs? Even if you grant that the intention is not to kill civilians, if they nevertheless become victims, again and again and again, can that be called an accident? If the deaths of civilians are inevitable in bombing, it may not be deliberate, but it is not an accident, and the bombers cannot be considered innocent. They are committing murder as surely as are the terrorists.
The absurdity of claiming innocence in such cases becomes apparent when the death tolls from "collateral damage" reach figures far greater than the lists of the dead from even the most awful act of terrorism. Thus, the "collateral damage" in the Gulf War caused more people to die--hundreds of thousands, if you include the victims of our sanctions policy--than the very deliberate terrorist attack of September 11. The total of those who have died in Israel from Palestinian terrorist bombs is somewhere under 1,000. The number of dead from "collateral damage" in the bombing of Beirut during Israel's invasion of Lebanon in 1982 was roughly 6,000.
We must not match the death lists--it is an ugly exercise--as if one atrocity is worse than another. No killing of innocents, whether deliberate or "accidental," can be justified. My argument is that when children die at the hands of terrorists, or--whether intended or not--as a result of bombs dropped from airplanes, terrorism and war become equally unpardonable.
Let's talk about "military targets." The phrase is so loose that President Truman, after the nuclear bomb obliterated the population of Hiroshima, could say: "The world will note that the first atomic bomb was dropped on Hiroshima, a military base. That was because we wished in this first attack to avoid, insofar as possible, the killing of civilians."
I suggest that the history of bombing--and no one has bombed more than this nation--is a history of endless atrocities, all calmly explained by deceptive and deadly language like "accident," "military targets," and "collateral damage."
Some people argue that the only viable option to conflict resolution is the escalation to war:
To get at the roots of terrorism is complicated. Dropping bombs is simple. It is an old response to what everyone acknowledges is a very new situation. At the core of unspeakable and unjustifiable acts of terrorism are justified grievances felt by millions of people who would not themselves engage in terrorism but from whose ranks terrorists spring.
Those grievances are of two kinds: the existence of profound misery-- hunger, illness--in much of the world, contrasted to the wealth and luxury of the West, especially the United States; and the presence of American military power everywhere in the world, propping up oppressive regimes and repeatedly intervening with force to maintain U.S. hegemony.
This suggests actions that not only deal with the long-term problem of terrorism but are in themselves just.
In short, let us pull back from being a military superpower, and become a humanitarian superpower.
Posted on 24 Jul 2006
Yossi Sarid, was at the security cabinet table when the decision to escalate the war happened.
In this fascinating article he discusses the role of deterrence and its undermining by its continuous use:
Only once in history did America manage not only to win, but also to rehabilitate. The outcome of World War II was dictated not only by Franklin Roosevelt and Dwight Eisenhower, but also by Harry Truman and George Marshall. Since then America has only been winning, continually winning and losing. And so it is with us, too - winning and winning, yet we have had no quiet for 40 years or even 40 days.
Iraq is destroyed, Afghanistan is destroyed, the Gaza Strip is destroyed and soon Beirut will be destroyed for the umpteenth time, and hundreds of billions of dollars are being invested solely in the vain war against the side that always loses and therefore has nothing more to lose. And hundreds of billions more go down the tubes of corruption.
Maybe the time has come to put the pistol into safety mode for a moment, back into the holster, and at high noon declare a worldwide Marshall Plan, so that the eternal losers will finally have something to lose. Only then will it be possible to isolate the viruses of violence and terrorism, for which quiet is quagmire and which in our eyes are themselves quagmire. And once isolated, it will be possible to eradicate them one day.
Ilan Pappe wrote What does Israel Want? The whole article is very good:
I have been teaching in the Israeli universities for 25 years. Several of my students were high ranking officers in the army. I could see their growing frustration since the outbreak of the first Intifada in 1987. They detested this kind of confrontation, called euphemistically by the gurus of the American discipline of International Relations: ‘low intensity conflict’. It was too low to their taste.
The politicians at the top are more tamed, to a point. They have only partially satisfied the army’s hunger for a ‘high intensity conflict’. But their politics of the day are already donned by military propaganda and rational. This why Zipi Livni, Israeli foreign minister, an otherwise intelligent person, could say genuinely on Israeli TV tonight (13 July 2006) that the best way to retrieve the two captured soldiers ‘is to destroy totally the international airport of Beirut’. Abductors or armies that have two POWs of course immediately go and buy commercial tickets on the next flight from an international airport for the captors and the two soldiers. ‘But they can sneak them with a car’, insisted the interviewers. ‘Oh indeed’ said the Israeli Foreign Minister, ‘This is why we will also destroy all the roads in Lebanon leading outside the country’. This is good news for the army, to destroy airports, set fire to petrol tanks, blow up bridges, damage roads and inflict collateral damage on a civilian population. At least the airforce can show its ‘real’ might and compensate for the frustrating years of the ‘low intensity conflict’ that had sent Israel’s best and fiercest to run after boys and girls in the alleys of Nablus or Hebron. In Gaza the airforce has already dropped five such bombs, where in the last six years it dropped only one.
This may be not enough, though, for the army generals. They already say clearly on TV that ‘we here in Israel should not forget Damascus and Teheran’. Past experiences tell us what they mean by this appeal against our collective amnesia.
The options being evaluated:
The captive soldiers in Gaza and Lebanon have already been deleted from the public agenda here. This is about destroying the Hizballah and Hamas once and for all, not about bringing home the soldiers. In a similar way in the summer of 1982, the Israeli public have totally forgotten the victim that provided the government of Menachem Begin with the excuse of invading Lebanon. He was Shlomo Aragov, Israel’s ambassador to London on whose life an attempt was made by a splinter Palestinian group. The attack on him served Ariel Sharon with the pretext of invading Lebanon and staying there for 18 years.
Alternative routes for the conflict are not even raised in Israel, not even by the Zionist left. No one mentions commonsensical ideas such as an exchange of prisoners or a commencement of a dialogue with the Hamas and other Palestinian groups at least over a long ceasefire to prepare the ground for more meaningful political negotiations in the future. This alternative way forward is already backed by all the Arab countries, but alas only by them. In Washington, Donald Ramsfeld may have lost some of his deputies in the Defense Department, but he is still the Secretary. For him, the total destruction of the Hamas and Hizballah ---whatever the price and if it is without loss of American life --- will ‘vindicate’ the raison d’être for the Third World Theory he propagated early on in 2001.
Billmon comments on Ilan's article here.
Gideon Levy asks the question Who started?.
Harper's interviews a professor that used to be in the West Point faculty and has specialized in Shiite political movements, the six questions and answers are here. He has a few interesting alternative explanations to the ones that have been discussed on the forums in the last few days.
To remind you, I, like other residents of northern Israel, am under martial law. As are the foreign journalists -- and in addition they are required to submit their copy to the military censor. So all I can tell you, without breaking the law, is that you are not hearing the entire picture of what has been happening here in the Galilee.
Certainly, a piece of news that I doubt you will hear from the foreign media, although bravely the liberal Hebrew media has been drawing attention to the matter, is that the "only democracy in the Middle East" has all but silenced al-Jazeera from reporting inside Israel.
The reason is clear: until recently al-Jazeera had been running rings around the local and foreign press.
But al-Jazeera’s coverage inside Israel -- the Arab world’s best chance of being exposed to the Israeli point of view -- is being effectively shut down. In the past two days, its editor has been arrested on two occasions and another senior journalists taken in for questioning. According to its reporters, they cannot move from their office without being followed by the Israeli security services.
From Tyre, the New York Times has published a Flash video with pictures: here
Posted on 20 Jul 2006