Two Great Democratic Candidates.

by Miguel de Icaza

Mike Gravel, ex-Alaska senator is running for the presidency. Here are some brilliant clips of his participation at the first democratic debate:

Last night Dennis Kucinich was interviewed by Bill Maher on Real Time. The whole show was fantastic.

See Bill Maher opening monologue and his interview here or if you want to see only the interview click here.

Posted on 28 Apr 2007

Mix 07

by Miguel de Icaza

I will be at Microsoft's Mix 07 conference next week, am getting to Las Vegas around 5pm, if you are interested in talking about gnome, open source, mono and wildly speculate over the announcements of the week, drop me an email to my gmail account (

I will be on a panel on opensource on Monday at 1:30pm

Update: Dave Winer setup a signup page for those attending Mix 07.

Posted on 28 Apr 2007

MonoTorrent Curses 0.1 released

by Miguel de Icaza

Due to popular demand (all two of you), I have made a tarball of the Curses GUI interface for MonoTorrent as well as Monotorrent.

Download both:

Update: Some folks are reporting that the internet tubes are clogged. Wait a little bit for the transfers to start, am using the Coral Cache for distribution (another de Icaza Industries innovation).

You need to have Mono and ncurses (will work on any modern Unix with ncurses).

You must first configure, make, make install the monotorrent-0.2.tar.gz tarball and then repeat the same for monotorrent-curses-0.1.

Once you are done, you can start up this gem of software engineering by typing monotorrent in your console.

Posted on 25 Apr 2007

Dynamic Language Runtime: Let the Speculation Begin

by Miguel de Icaza

For the last couple of weeks news started tricklying over IM and email that Microsoft was going to announce some Dynamic Language Runtime at Mix 07.

There have been some hints on the blogs, some friends of friends of MVPs, some friends of MVPs and some journalists. The MVPs have been leaking like there is no tomorrow.

Am not very good at predicting, but here are a few guesses for next week's Mix 07 announcements, in my confidence order:

  • They will spend most of the time showing the new features in the recently released Orcas and probably the Silverlight media encoder.
  • There will be a fresh Silverlight update.
  • Blend and Expression Design will probably ship as a final product, or a new beta will be released.
  • Dynamic Language Runtime: a set of class libraries with some sort of supporting infrastructure in the CLR to help dynamic language authors speed up their code.
  • Javascript: probably Microsoft will announce that they are upgrading the JScript compiler in .NET.
  • Silverlight will bundle a micro-clr.
  • Silverlight for Linux.
    And if there is no announcement, we should try to get someone drunk enough to get them to do it.

The conference looks like it will be incredibly fun and I am looking forward to meet a lot of people. Lots of talks that I do not want to miss.

Posted on 25 Apr 2007

Race to Linux Interviews

by Miguel de Icaza

These are the interviews for the various winners from the Race to Linux contest that we did in collaboration with Mainsoft and IBM.

The exercise included porting existing ASP.NET-based applications to Linux. All the ports were completed in a matter of hours, in some cases the download of the VMware image took longer than the port itself.

Here are the interviews:

Posted on 23 Apr 2007

Mono 1.2.3 to 1.2.4 Progress

by Miguel de Icaza

Jonathan Pobst just emailed me the comparison from Mono 1.2.3 to Mono 1.2.4 from the Mono Migration Analysis tool:

Mono 1.2.3Mono 1.2.4Change
Missing Methods19,10518,425680
Methods throwing
Methods flagged as "TODO"3,7343,69143

So 1,013 fresh new implementations since our last release.

Update: Jonathan pointed out that the numbers for APIs included internal classes (his tool has been fixed) and for internal assemblies or assemblies that we will not be supporting (VB6 support for example).

So the grand total for missing methods is 10,315 methods and not 18,425. I would fix the table, but I do not have all the updated numbers other than the grand total for Missing Methods.

From those 10,315, my senses it that we can live happily with up half of them not being implemented (fringe methods that are never used, do not show up in Moma reports or other relics).

Posted on 23 Apr 2007

Pong on Mono.XNA

by Miguel de Icaza

Stuart from the Mono.XNA team today posted a screenshot of the game of Pong (which am guessing is some kind of XNA demo program) running on their open source implementation (called Mono.XNA).

Posted on 22 Apr 2007

Call for Testers: Mono 1.2.4

by Miguel de Icaza

We are about to release Mono 1.2.4. It has been a personal difficult decision, as only a few times in the life of a project you reach such a nicely rounded release name.

Wade has uploaded the test packages for Mono 1.2.4 for various architectures here:

The diffs between 1.2.3 and 1.2.4 for the mono package (mono and mcs) are almost 20 megabytes in size (I did not count mono-basic, libgdiplus, monodoc, libgdiplus, xsp or mod_mono).

This release has a pretty much finished version of ASP.NET 2.0, with the exception of WebParts, which we have not done much about yet.

See my current embryonic release notes for more details.

Posted on 21 Apr 2007

Clay Movie

by Miguel de Icaza

A few years ago I passed my Canon D60 camera to one of my younger brothers (Franciso Isaac):

He made this animation with clay:

Posted on 20 Apr 2007

Microsoft Happenings

by Miguel de Icaza

A couple of things.

Panel at Microsoft's Mix 07

My friend Joshua Allen invited me to participate in an open source panel at Microsoft's Mix 07 conference in Las Vegas.

I will be paneling with Rob Conery (he is behind Subsonic, a rising star in the ASP.NET world), Mike Schroepfer from Mozilla, Sam Ranji from Microsoft (from Port25).

Rob is collecting questions for the panel. If you have some feedback, post on his blog.

Silverlight, Flash and open source alternatives

Microsoft renamed their WPF/E rendering engine "Silverlight".

Silverlight is basically:

  • An object oriented canvas, this canvas can be controlled trough the DOM by the containing web page.
  • The contents of the Canvas can be preloaded with a XAML-based description. The XAML supported is a subset of the full WPF/Avalon supported by .NET 3.0.
  • So far it offers no built-in scripting, instead it relies on the browser's Javascript engine.
  • It supports video playback using the highly proprietary VC-1 formats.
  • Silverlight is cross platform in the "Windows and Apple are supported" way, no support for Linux has been announced. So it is even more limiting than Flash.

Silverlight has one thing going on for it, the file format to populate it can be trivially generated by web developers, so it will be easy for people to create cute controls and generate those on the flight.

The major difference in my opinion between what-ng's <canvas> tag and Silverlight is that Silverlight includes video playback support, and I can imagine that Microsoft will try to convince content providers to switch from Flash or their existing embedded windows media experiences to Silverlight.

As a Linux/BSD user, this might pose another setback for our desktop. For years video playback on Linux has been a pain due to the lack of codecs for the various proprietary formats (Considering that even on Windows WMA/WMV playback is a random experience). This all changed with Google Video and YouTube.

Google Video and YouTube popularized the use of Flash for delivering video and it quickly became the norm for video delivery. This opened the doors to the Linux desktop users to watch video content just like everyone else and the pain had been mostly eliminated.

swfdec open source Flash player.

Although Flash is not open source and it is not available on every Linux platform at least those of us using x86/x86-64 systems could watch those videos (and in addition, there is a project that is making great progress).

Reimplementing most of Silverlight is trivial but the difficult bit is getting the audio/video decoding in place (I will not give the Ximian crowd the pleasure of saying "its a weekend hack").

Lacking a viable open source-based competitor today for rich media delivery on the web and given the current state of both Flash and Silverlight, it is in open source's best interest to ensure that Flash gets ahead of the competition.

In my opinion, Flash needs a couple of things to stay ahead:

  • A text-based format to populating the flash contents, either from a JSON representation or an XML file.
  • An open specification that allows for third-party implementations. My understanding is that today's Flash specification is semi-open.

And of course, I think that Flash should be open sourced, but that is a long shot.

A completely open alternative would be ideal, a combination of:

  • OGG Video and Audio objects as part of the what-wg specification, to complement the existing <canvas> tag.
  • Tools to convert popular design formats like XAML and whatever Flash uses into Canvas tags.
  • Tools and Javascript hacks to implement dynamic loading of extra content for the canvas tags.

It does not seem like a far shot, but it would require cross-browser support and would prevent us from being locked into either proprietary stacks.

Opening up Microsoft


Although there are some groups inside Microsoft that seem to be opening up, pushing open standards, and using licenses like the MsPl (for the Ajax client library for example).

Scott Guthrie, the star from ASP.NET is now in charge of .NET at Mircosoft. If there is anyone at Microsoft that understands the value of open standards and becoming more standards compliant it is him. So there are good possibilities on the horizon.

But it seems that larger company considerations like the use of VC-1 will prevent Silverlight from ever using unencumbered technologies.

This reminds me of that movie In Good Company (with Topher Grace and Scarlett Johansson) where decisions in the company are made to leverage synergy.

I look forward to discuss this at Mix 07.

Posted on 20 Apr 2007

Gonzo, part 2

by Miguel de Icaza

Yesterday I watched Alberto Gonzales on C-SPAN, but I did not see these shots from the audience. From Reddit:

Gonzo did not recall or remember 71 things yesterday, and the audience was keeping track:

Posted on 20 Apr 2007

Alberto Gonzales' Amnesia

by Miguel de Icaza

Regardless of whether Attorney General Alberto Gonzales is innocent or guilty on the case of the fired Federal Prosecutors, it seems that the guy has a severe case of amnesia.

In my opinion, he should yield the position just on the grounds of exhibiting very strong signs of senility.

Senator Grilling

One Republican senator told Gonzales (paraphrasis), regarding all the incompetence in the whole deal:

"The exact same standards [that you applied to the firing of the prosecturos] should be applied to you"

"Why shouldn't those standards apply to you?"

"you ought to suffer the consequences that others have suffered, the best way of put this behind is for you to offer your resignation".

Gonzales' reply is "Good work is being done, I will rectify".

Posted on 19 Apr 2007

Ports from the Race to Linux

by Miguel de Icaza

The ports of the various contests from the Race to Linux are available here. There are two ports done with Mono/XSP and two ports done with Mainsoft's Grasshopper.

We got the winners for the second Race to Linux.

Here is what Jenna just emailed me:

Congratulations to Mark Cafazzo from Canada! He was the first Race to Linux 2.0 entrant to successfully port the Blog Starter kit to Java EE and run it on Linux using the Grasshopper 2.0 Technology Preview, Visual Studio 2005 and MySQL as the backend database. Says Mark: "The combination of Grasshopper and VMware made porting the Blog Starter Kit a breeze!"

The Race #2 winner in the Mono category is Rodrigo Queipo of Argentina. He used Mono's XSP ASP.Net server and SQL Server 2000 SP4 for the database.

Both entries duplicated the look and feel of the original application to the smallest detail and can be accessed from the Race to Linux Website.

Congratulations to the winers!

Update: I registered to download the ports and they run out of the box. You type and its up and running on Linux:

The Race to Linux site has the description on how the port was done by each participant.

Posted on 18 Apr 2007

Introducing: gui.cs

by Miguel de Icaza

Update: almost 12 years after I wrote this post, I have a 2019 Update on gui.cs

Every once in a while, people ask us "Will the Mono project implement WPF/XAML?" or "What is your position on Apollo?".

Some suggest that we must have a one-to-one implementation available in Mono. Some others believe that we should implement a new GUI toolkit and plot our own destiny.

Some argue that to win the hearts and minds of the Linux community we should appeal, not only to the desktop users, but also to other members of the community: system administrators, designers, musicians, perl programmers and users of Midnight Commander.

There has been a lot of debate over Flash, Adobe's Atlas and WPF/E and how these technologies might be the future of application development.

For the past few months we have heard you loud and clear. And we have been working on a technology that we believe will revolutionize user interfaces.

Today we are announcing the response to Microsoft's WPF/XAML, a response to Flash and WPF/E. A cross-platform GUI toolkit (supports Windows, MacOS and Linux and is easily ported to new platforms) written entirely in managed code and 100% open source. It is completely licensed under the MIT X11 license terms as well, for your freedom-zero needs.

We have been developing this under secrecy until we had something worth showing to the world. It builds on years of building user interfaces, toolkits and frameworks.

This is a preview release, currently the major sample application is a BitTorrent client built using Alan McGovern and Gregor Burger's MonoTorrent library (Alan and Gregor wrote this library as part of Google's Summer of Code 2007).

You can download a tarball from here, browse the source code here. To build the software, you will need to also download monotorrent and edit the Makefiles accordingly.

The BitSharp GUI is something that I quickly put together this weekend, so it might need some extra polish, feel free to send your MIT X11 contributions my way.

Everyone loves screenshots, you can see a few screenshots here. Or go directly to main window, torrent control and options configuration.

You can also see an early prototype, from the days when no color was yet supported on it here.

Some documentation is here.

Windows.Forms UI for BitSharp

In other news, there is now also a Windows.Forms GUI for the BitTorrent BitSharp libraries, available in

Posted on 16 Apr 2007

Google Summer of Code 2007: Mono Project

by Miguel de Icaza

The Google Summer of Code has begun!

A grand total of 24 students were accepted this year to work on various projects related to Mono. The list of students and projects accepted is available here.

For those interested in tracking the progress of the 24 projects over the summer, we have created a group for the students and mentors here.

Guidelines for students have been posted in the reference page.

And we have also created a Google Code Hosting site for all students to upload their code. If you want to track the actual source code development, the group is at

Update: fixed the links.

The list of accepted projects are:

by Ivan Zlatev, mentored by Miguel de Icaza
by David Srbecký, mentored by Martin Baulig
by Brian Nickel, mentored by Marek Habersack
by Hector Enrique Gomez Morales, mentored by Mike Kestner
by Jeff Tickle, mentored by Mike Kestner
by Lukasz Knop, mentored by Sebastien Pouliot
by Christopher J Parnin, mentored by Sebastien Pouliot
by Jesse Tov, mentored by Raja R Harinath
by Ben Motmans, mentored by Miguel de Icaza
by Marcos Cobeña Morián, mentored by Atsushi Enomoto
by Laurent Debacker, mentored by Mike Kestner
by George Giolfan, mentored by Miguel de Icaza
by Gernot Margreitner, mentored by Alan McGovern
by Jared Hendry, mentored by Alan McGovern
by Leonardo Pires, mentored by Marek Habersack
by Néstor Salceda, mentored by Sebastien Pouliot
by Artur Dwornik, mentored by Raja R Harinath
by Marcos David Marin Amador, mentored by Michael James Hutchinson
by Kenneth Parnell, mentored by Atsushi Enomoto
by Scott Peterson, mentored by Aaron Bockover
by Matej Spiller-Muys, mentored by Atsushi Enomoto
by Andrew Pendleton, mentored by Miguel de Icaza
by Nidhi Rawal, mentored by Sebastien Pouliot
by Khaled Mohammed, mentored by Massimiliano Mantione

Posted on 12 Apr 2007

First few hours with the Sansa Connect

by Miguel de Icaza

As of 2pm am the happy owner of the Sansa Connect.

The Sansa Connect runs Linux and uses Mono for its user interface, so am 100% biased about the level of awesomness that the device has.

Opening up the Sansa Connect

Zing should open up the development for the Sansa Connect.

The device has tons of potential: the great color screen, the Wifi, their custom-built GUI toolkit and the fact that they use C# and Mono to build all of this stuff.

In the last couple of hours, knowing that the device was running Linux and Mono, I could not stop thinking of the things I would like to implement:

  • Expose an http interface, so I can post songs to it over the WiFi instead of the USB.
  • Expose my device through HTTP, so I can download song from it using a Web client.
  • Post my songs to in addition to the Yahoo service.
  • Stream music from (we already have all the code to play it back) in addition to yahoo streaming.
  • Share my music list over Jabber (this is what Google Talk uses). I sadly have no friends in Yahoo Messenger, as I never have used it.
  • Add a picasa client for the pictures using Google-Sharp, again, because I gravitate in the Google universe instead of the Yahoo universe.
  • Allow the machine to stream from Shoutcast, HTTP or DAAP servers on my local networks (what I have at home and at work), this would automatically make it a client for the various iTunes machines around and use my server at home as my streaming source.
  • Update: I forgot to mention (thanks bhale!) playback (we already got the C# code, last-exit).
  • Games ;-)

I understand that going from being an embedded system vendor into a platform provider might not be easy but opening up the platform just a bit would achieve plenty. All that would be needed is:

  • Publishing the assemblies that the device exposes. The community can use `monop' to actually generate the public class definitions and prototypes. We could get by with little or no documentation.
  • Documenting a process for re-flashing, uploading or tricking their operating system into loading the new assemblies.

A hackable platform for portable media players would be one way of differentiating from the iPod. Growing an ecosystem of third party developers that produced applications and components for Zing's tools would make these devices more appealing than the iPod is.

The WiFi on the device and the complete stack really open tons of new options on this device.

Early Impressions

The device came in one of those plastic seals that are known to have caused more deaths that drunk driving in Guatemala. After a few seconds of Googling I gave up and teared the thing apart by cutting and bending until the thing was reduced to pieces of confetti. In the process I ruined Katey's scissors. Sorry about that Katey.

There was a sticker that said something along the lines of "IMPORTANT: Do not plug this device before installing the software". Or something about not turning it on before doing something. I would report the actual wording if the sticker was not burried underneath the remains of my tuna sandwich and the potato leak soup that I threw in the garbage can.

I ignored the sticker, because programmers know best. And besides, I was not going to plug it into Windows, I was going to plug it into Linux.

The device does not expose a USB mass storage interface, instead it exposes a Media Transfer Protocol (MTP) interface. Luckily we can use libgphoto2 and libmtp to access the device.

With the libmtp clients you can actually copy files into the device (the clients command line arguments are awful) which worked to upload "Don't fear the Reaper" and get enough cowbell out of it.

My Banshee was not compiled with MTP support and Amarok hung while trying to access the device. I shall look into recompiling my Banshee later with the proper support.

Internet Radio and the WiFi

This was fantastic. You select a wireless network and the little guy goes and gets an IP address and lets you play internet radio and browse Flickr pictures.

The Flickr browser seems fine, but am not really a Flickr user. It appears to come with a Yahoo messenger, but since I have exactly zero friends on my Yahoo Messenger (pretty much everyone I know has moved to Google Talk) I have not even tried it.


I am still pondering whether it is worth buying a Yahoo subscription for the device. The radio streaming from the radio stations on the device is pretty passable so am left wondering if I really want to give Yahoo 14 bucks a month. Am already paying Rhapsody and at least Rhapsody has a Linux web player (it sucks, but at least I can play it on Linux).

Two questions: Yahoo advertises that they have 2 million songs on Yahoo Unlimited. I am pretty used and happy with the music selection at Rhapsody, but I could not find how the music collections at both sites compare.

Rhapsody does not let me play music when am traveling outside of the US. I once read the excuse, but it must have been incredibly lame because I did not bother to remember it.

Would Yahoo let me play music when I travel? Decisions, decisions.

If I buy the Yahoo service, would they allow me to http get DRM-ed songs to upload to my device, so I can play all my music on Linux?

Posted on 10 Apr 2007

Sansa Connect is Shipping

by Miguel de Icaza

The Mono-based Sansa Connect MP3 player is now shipping.

The device comes with WiFi and 4 gigs of space for 250 dollars (50 dollars more expensive than the equivalent iPod, but comes with WiFi, internet radio and a Flickr browser). It has an expansion slot, so you can add more memory to it, so you can upgrade the space without upgrading the hardware and it integrates with Yahoo Music.

I will be ordering mine today.

Engadget has an updated review, it is pretty good, but they say regarding the music services:

We're disappointed that the Connect isn't a little more open than it is; we'd like to be able to stream whatever the heck we want for starters, but Yahoo! Music Unlimited and LAUNCHcast aren't bad starts. Now the trick is to keep up the WiFi momentum for these things -- Apple, Creative, iRiver, Archos, we're looking straight at you!

Someone on the blog comments a few months ago asked whether Zing would open up the platform for people to develop plugins for it, but it seems that at this point they have no plans to do so. I wish they did.

Online Music Services

A problem with the Sansa Connect is that Yahoo Music does not have a Linux client.

I am currently a Rhapsody user, and I use it mostly on the Windows machine that I use for testing .NET and reading the MSDN documentation. Although Rhapsody has a Linux client, you must be using Firefox to play your music (they use a firefox plugin and a web page with Javascript for their web player).

The situation is far from ideal, I would much rather have Banshee be my music front end.

So this weekend I tried to make a fake plugin host that would trick the Rhapsody plugin into loading, but am getting one misterious crash while calling NP_Initialize in the plugin (it loads Flash just fine) (source here, in case someone feels like debugging it).

Posted on 09 Apr 2007