Mono Does Robotics

by Miguel de Icaza

Shawn at Cogmation has written us to notify us that Mono is being used as the scripting engine for their robotFoundry application.

From their testimonial page:

We needed a portable cross-platform, architecture compiler system that would allow us to develop code on one OS or architecture and deploy it on another with out recompiling. The problem with using gcc was that for every target OS or architecture we would need a separate cross compiler. Additionally maintaining and developing this toolset would be a large task.

Initially Python was selected as our cross platform language. Python was great but we were always concerned with its speed, especially in real-time applications.

We discovered Mono while we were evaluating 3D engines. Mono was successfully being used to develop video games and it was extremely fast. We performed a small test and compared the speed between Python and C# mono and were shocked at how fast mono was compared to python. In addition to the speed increase and portability, we now had the ability to allow our users to write scripts in any .Net language.

Switching to Mono has given us the ability to write very fast cross platform applications and has provided us with a multi-language scripting interface, and the integration of Mono within our application suite has proved to be a huge success.

(Emphasis added).

From the product description:

robotFoundry is a powerful graphical coding environment for robotics. Use drag and drop modules to add functionality to your code, quickly linking them to create program flow and robot controls. Generate code with a click, and transfer your code to your robot or robotSim with another click.

Code for a physical robot or simulated robot at the same time - switch between them at any time to generate code for the robot or robotSim to run identical code. Choose from pre-existing robotFoundry robot templates, or add components to create your own. Many modules are available, ranging from simple controllers such as line trackers and wall followers to basic building blocks like variables, mathematics and logical operators. Choose your own level of programming, and allow robotFoundry to take the coding out of your coding.

Additionally their robotSim lets you simulate your robot software in a simulated virtual world. RobotSim is built using Unity3D which is also scripted with Mono:

RobotSim: Simulated Packbot with ARM

You can use robotFoundry and robotSim to write code for your Roomba or your iRobot Create without burning the batteries:

RobotSiming a Roomba

Posted on 03 Feb 2008

Dave Winer Posts

by Miguel de Icaza

Dave Winer has a couple of great posts on the campaign:

Here he points out:

Most of what Chris Matthews says is mindless trash, but today he pulled out a great analogy immediately after Ted Kennedy's stirring endorsement of Obama.

He compared Hillary Clinton to the character Salieri in the movie Amadeus. Until Mozart came along he was the leading composer in Vienna, but he was just a workman, a technician. Mozart had inspiration, feeling, the spirit. Salieri, even though he lived a long life and Mozart died young, is a footnote to Mozart's lasting greatness.

Matthews nailed it.

This is a great nugget that encapsulates perfectly how I feel about Hillary.

Dave also wrote: Bill Clinton as Trent Lott 2.0, some parts that I liked:

It was an interesting election until the Clintons started calling Obama the nice young African-American candidate.


The problem for Clinton is actually much worse, we now saw how she'd govern. Let's say a young African-American Senator from Illiinois got in the way. Would she argue the issues with him in a respectful way? Why bother when you can smear him into silence.


What a fantastic way to recover from Bush, who so completely represented the greed and arrogance and uglyness of America, to reinvent ourselves in the image of our best, in the image of hope.

(Emphasis added).

Posted on 01 Feb 2008

Mig Tamale in da Sim!

by Miguel de Icaza

My SecondLife dude walks around the Mono Simulator in SecondLife, am running this with the Linux client:

Mig Tamale Explores the Space.

The work that we are doing on Mono's runtime to support Silverlight (the sandbox system and the hardening of the runtime) is going to enable the use of other programming languages to script components on Second Life.

Go SecondLife! Go!

Posted on 31 Jan 2008

Second Life Opens Public Beta for Mono Scripting

by Miguel de Icaza

Today Jim announced the beta launch of their Mono integration into SecondLife.

We’re very pleased to announce the beta testing of Mono in Second Life. Mono is a technology which will increase the speed of scripts running in Second Life. The goal is that everyone will experience reduced lag and improved stability and that it will be possible to script complex behaviours that were not previously feasible in Second Life.

With a mono viewer on a Mono region, normal LSL scripts can optionally be compiled and run on Mono. If you are a scripter we would love you to download the Mono viewer, connect to the beta grid, teleport to a Mono-enabled region and test your scripts on both the Mono and LSL virtual machines side by side

Currently the focus of this beta is to focus on identifying any problems with the Mono integration, so the language use is currently still limited to LSL. Linden has plans to allow any .NET language that will run on Mono to be used to write scripts for SecondLife.

For more information of Mono on SecondLife see the Mono page and if you want to participate in the beta, see SecondLife Mono Beta FAQ

Congratulations to the Jim and the Lindens for their beta launch and for seeing this project through.

I strongly recommend Cory's and Jim's video from the Lang.NET 2006 conference which explains some of the formidable things they did to bring Mono into their simulators.

I can not stress enough how interesting this talk was. It is a great introduction to SecondLife and it is a great talk on software engineering and the wonderful hacks that they came up with.

Brady, this is your chance to start hacking on it!

Posted on 29 Jan 2008

Usability Disaster Story

by Miguel de Icaza

In December, someone asked me about how many Mono downloads we had per month to estimate the size of Mono users. With software like Mono the download numbers do not mean much, because most of our users get their software through their distribution, package channels or as a bundled executable.

Since we are short on space on the machine hosting the files, we do not keep logs for too long, they are rotated and discarded pretty quickly, but we could at least do some guesswork based on a week worth of downloads. The data would not have been very useful, as this story takes place on December 27th, but I was still curious.

What I discovered with horror as I looked through the logs was that people using Windows and MacOS were downloading software that was two years old. Mono 1.1.7 (released sometime in May of 2005) was the most popular download.

Only 5% of the Mac downloads were actually getting the latest version, 95% was downloading this two year old version. I don't have my notes handy for Windows, but they were similarly abysmal [Update: found the notes, they were 95% as well].

The Linux downloads for RPMs were mostly fine (probably because they had to select the architecture from a separate list). But a whole 1/3rd of the people downloading the Mono "Universal Installer" were getting the wrong Mono as well (Update: clarified).

Using the referrer logs, we tracked down a few problems to people that had linked for their software directly to a particular version of Mono, but this could not explain the popularity of this aging Mono 1.1.7 release, and the logs were very odd, people apparently were selecting this from our list of options.

This made no sense.

Can you spot the problem?

I clicked on our links, they were fine. They downloaded the proper software, the logs matched the download. I was puzzled.

Only after a while I realized what was going on:

Since we are using MediaWiki for our web site and we were adding cute little icons for each platform, clicking on the image actually took users to the page for the image. In the Windows case, this was the page:

Which happens to contain the image, and some automatically generated content for the image. Some of the generated content lists all of pages that *link* to the image:

Now, that looks like a messy page, but most users were picking the largest number they found listed there, which happened to be an old legacy page of ours for the release "1.1.7". Going to this page, would be a very similar download page to the main one, and people at this point figured out "do not click on the image, click on the text". Except now they were clicking on the downloader for this ancient release.

I have no idea for how long this has been going on, but this is a colossal disaster.

We came up with a quick fix, luckily, you can replace the markup [[Image:Blah.png]] in MediaWiki with [url] and if the url points to an image, it will insert an unclickable image into the page.

But the quick fix could not address another problem: we probably had the worst download page in the history of human kind. It was incredibly bad, and you can still see it on the archives.

In the past few weeks, we wrote the beginnings of a new download page. Users will now be directed to this page, you can see it here. Thanks to the whole team in Provo that put together this new system and the folks in x-m-l that provided feedback on it.

There is still some work left to do on it, but the entry page is no longer the disaster that it was. Luckily since the correctly on December 27th or so, people have finally been downloading our latest Mono.

We of course feel terrible to all of the 95% of the users that wanted to try Mono on Windows and the Mac and ended up using a two year old version of Mono.

Posted on 24 Jan 2008

Lang.NET 2008

by Miguel de Icaza

Next week, am attending Lang.NET 2008 in the Microsoft Campus, two years ago this conference was a blast.

Am looking forward to what looks like a fantastic program. Marek Safar, one of Mono's C# compiler developers, will be there as well.

Since am not really a language designer myself, my talk will focus on discussing a few interesting solutions to a number of problems that we have faced while developing Moonlight and Mono and show a few creative applications that have been built with Mono.

Posted on 24 Jan 2008

Free Software Users Taxonomy

by Miguel de Icaza

For people in the Windows world, Bruce Byfields' A Field Guide to Free Software Supporters will help them understand the various groups that make up the free software/open source software movement:

When you look, there are at least seven different types of FOSS supporters.

To outsiders, these schools of thought are more similar than different. In the same way that many Europeans see few real differences between a New Englander and a Californian, outsiders may see little to distinguish a Softcore Advocate from an Activist.

It is a great piece.

This is a great starting point for anyone that is getting involved in FOSS. Understanding that these groups exist and their positions will make it much easier to understand the dynamics of development and advocacy that you will run into while working with the FOSS community.

I feel that this article could be expanded on in a few areas, but eventually this could become a great taxonomy of the FOSS movement.

For instance, I think that there is room to dissect the editorialist advocate. This is the do-as-I-say-not-as-I-do advocate which will praise and preach open source, freedom, open systems, open standards but yet always ends up using the latest-and-greatest proprietary, DRM-enabled, crypto-locked gadgets and software.

Bruce has written a couple of other pieces that I liked on a similar subject: Conspiracy Theorists and Free Software and his follow-up Writing About Conspiracies essay.

Posted on 23 Jan 2008

New Mono Packages in RPM form

by Miguel de Icaza

Last year we ported various ASP.NET Starter Kits and we also started an effort to package popular Mono and .NET-based software in easy to install RPM packages using the OpenSUSE build service.

The OpenSUSE build service allowed us to submit source packages with a specification on how to build it, and get RPM packages for various Linux distributions and various versions of those distributions. Currently we support Fedora, OpenSUSE and SUSE Enterprise.

ASP.NET Starter Kits

The starter kits were a useful test of Mono's ASP.NET implementation, and we routinely use these for QA before we make a release.

When we did the port of these applications, this is what we did:

  • Switch the database to Postgress (so it is easier to test on Linux).
  • Cooked up a policy that our ASP.NET applications should follow to integrate with the system (Apache or FastCGI and our xsp engine). The docs are currently here and we are going to migrate them into our main server.
  • Integrate the application with the system, you can install and remove ASP.NET apps using the mono-asp-apps command line tool.

RPMs of the Starter Kits are available from the Mono:Community directory from the build service, we have packages for various distributions there (OpenSUSE, Fedora and SUSE Enterprise).

The OpenSUSE 10.3/noarch (platform independent, that means, they do not contain any x86 code) packages can be downloaded from here:

There are of course many new starter kits published at, and someone (hint, hint) should look at porting them as well ;-)

More Software

Also, over the past few months we have been packaging some other popular Mono-based applications. Packages can be found from the community page as well, some favorites include:

Web Apps:

  • MindTouch's DekiWiki: the GUI Wiki from Mindtouch. The cutest Wiki engine in the world.
  • MojoPortal: one-stop portal software based on .NET.

Hopefully, when it comes to ASP.NET, our recent work on supporting FastCGI with Mono should expand the ways you can deploy ASP.NET apps on your Linux systems (in addition to our Apache support).

Libraries and Tools:

  • gnome-keyring-sharp (access to the Gnome keyring from your desktop application).
  • Google GData's APIs for C#.
  • MySQL 5 connector.
  • The latest NUnit.
  • OpenTF, client and libraries to communicate with Team Foundation servers.
  • The TAO Framework for building cross-platform OpenGL, OpenAL, SDL, Cg, PhysicsFS and FreeGlut applications with C# and Mono.
  • Mono.ZeroConf, for all your Bonjour needs, with tutorials here.
  • Mono.Fuse: support for writing user-level file systems on Linux using C#. A sample is here.

Desktop Apps and Libraries:

  • Banshee with ipod-sharp and podsleuth (the latest versions).
  • Gnome-do, the crazy delicious application starter for Gnome.
  • GBrainy, Jordi Mas' puzzles and training game.
  • WF-Apps: a collection of open source Windows.Forms applications that we use to test Mono's Windows.Forms.
  • Last Exit, the Last.FM player.

Installing the Software

You can either download the individual RPMs from your distribution and have your browser install the software, or you can subscribe your package management software to the repositories.

OpenSUSE users for example, have to type this command:

$ zypper ar -r

Or add it from the GUI Yast tool.

After you have done that, the software collection will be ready to use, and you will be able to search for the new packages and install or upgrade software that we put in the Mono:Community group.

YUM users just need to grab the above .repo file and save it in /etc/yum.repos.d.

Debian and Ubuntu Users

Although the OpenSUSE build system supports both of these platforms, it requires us to create new "descriptions" on how to build the software for those platforms.

So far, we lack the experience and the time to maintain the Debian based packages ourselves.

We would love if someone with Debian/Ubuntu experience wants to co-maintain the packages here (maybe a script to transform the .spec + sources into a debian package can be written?).

Future Directions

We have a long list of things that we want to package for Mono. The only thing that is limiting us at this point is the lack of time (some software needs to be massaged a bit to make it conform to our ASP.NET deployment guidelines, or our Application Deployment Guidelines.

The Build Service is an open service (and its also open source, if you want to host your own build service in the comfort of your own living room).

Hopefully some folks in the community can help us package some of the other pieces of software that we have listed there.


Thanks to our QA team, Marek and everyone else that has contributed to package this software for Mono.

Posted on 23 Jan 2008

As seen on JWZ

by Miguel de Icaza

As seen on JWZ's blog:

outrage fatigue

Posted on 18 Jan 2008

Obama Fund Raising

by Miguel de Icaza

My friend Nat Friedman is raising funds for the Obama Campaign. If you are an American Citizen or a permanent US resident, please consider donating to Obama's campaign through Nat's fundraiser page (all the money goes to Obama, and you help Nat with his personal fund raising goal).

Although am myself a Kucinichista myself, I also supported Obama's campaign by donating to Nat's fundraising effort.

As readers of this blog know, am not a fan of the policies of the last seven years, and as an extension, not really a fan of the republicans.

On the democratic side, I just can not agree with Hillary on anything.

I have been personally bothered by Hillary Clinton since this March 2003 incident in which she walked out on the Code Pink girls and was parroting the administration party line.

These days those that voted for that disastrous war claim that they were "tricked" into voting for it. But like some comedian said recently, "All these democratic candidates claim that they were tricked into War by President Bush. [...] but if you are a person that can be tricked by President Bush you are not presidential material".

This Flash animation from November 2002 turned out to be prophetic and right on the spot.

Chomsky turned out to be right: September 2002 interview.

Fisk turned out to be right: September 2002 interview.

The French and the Germans turned out to be right as well.

The facts were there for anyone to see.

Nat recently pointed out that Obama did not rush to "support the President" like every other drone did. He made a conscious decision at a time when it was not popular to oppose the crooks and liars at the White House.

Posted on 17 Jan 2008

« Newer entries | Older entries »