Automatic Playlist Generation Using Similarity Models

by Miguel de Icaza

Dominik Schnitzer's Mirage is an automatic playlist generation plugin for the Banshee Media Player.

This is what makes it interesting:

Mirage uses the latest AI/music information retrieval techniques to compute a similarity model for each song. So before you can use Mirage to automatically compute playlists, your whole music collection has to be analyzed once.

After it is analyzed just drag and drop a song you like on the Playlist Generator item in Banshee and a playlist with similar sounding music will be computed.

Mirage is by far not perfect! Yet :-) - Imagine it is a radio station playing songs from your collection.

Video: banshee-mirage.ogg.

Posted on 30 Aug 2007

Google SoC: Gtk# Ribbon Library

by Miguel de Icaza

This is the first on a series of posts to comment on the results from the students that contributed to Mono as part of the Google Summer of Code.

Laurent Debacker completed his Ribbons widget for Gtk#:

You can also see the widget in action in the following screencast: Ribbons-final.ogg.

Laurent posted his final SoC status report on this blog entry.

Laurent needs a special mention because he also documented this class.

My hope for this widget would be:

  • To move the widget to Mono's SVN repository from the Summer of Code temporary repository.
  • To start packaging it for developers to start using and provide packages for multiple distributions.
  • Get applications to start using the Ribbon. Am I crazy thinking that MonoDevelop could take advantage of the Ribbon to better expose the extensive functionality it has?
    Nobody has used the Ribbon for an IDE before. This has a lot of potential.

Update2: Laurent followed up with a proposal that he had drafted to improve MonoDevelop with the Ribbon UI. What a funny coincidence!

Update: Alan found some nice prior-art applications that used the Ribbon-like interface:

Alan posted on some blog comments a few months ago a much better screenshot. If you own that blog, and remember it, please post the link.

Posted on 30 Aug 2007

Nice Mono Testimonial

by Miguel de Icaza

Found this today, it is a very nice testimonial from someone that tried out Mono to port their code using our VMware image.

This is for ProMesh.NET a Web platform built on top of the basic System.Web that replaces ASP.NET:

I was a little curious to see how ProMesh.NET (MVC Web Framework for .NET 2.0) would run on Mono (if at all), so I did the following:

  • Download the VMWare image with a pre-installed Mono installation on SUSE Linux 10.2
  • Download VMPlayer (free)
  • Copied the latest ProMesh.NET source tree to the virtual machine
  • Fired up MonoDevelop
  • Compiled the framework... Works (well, it compiled)
  • Copied the ProMesh.NET demo application to the virtual machine
  • Compiled the demo app... Works!
  • Started xsp2.exe (the lightweight .NET web server for Mono)
  • Opened the index.ashx page using FireFox: WORKS
  • Went through the complete demo site. Everything worked!

    I was utterly amazed by the painless process of compiling and running a ProMesh.NET application on Mono, something I've never tried before (I did have some previous experience with MonoDevelop, but not a lot).

    This is pretty exciting stuff, knowing you can just grab your ProMesh.NET web application, dump it on a Linux box and run it from a Linux web server.

  • Posted on 30 Aug 2007

    Replying to My Critics

    by Miguel de Icaza

    Vector-based, then rasterized,
    electronic burger with bacon.

    Some people continue their unabashed criticism of my life-style choices.

    Yes, that was a meat burger with bacon. But as I also explained before we walked into the burger joint that consuming such a burger configuration was perfectly within the limits of my part-time vegetarianism.

    I was not on veggy duty while I chugged it down.

    Also, for those interested, recommended link of the day: The Meatrix.

    Update: My critics have also pointed out my spelling mistakes in the sphere of meat-related naming actitives.

    Posted on 29 Aug 2007


    by Miguel de Icaza

    Vector-based, then rasterized, electronic carrot.

    As a part-time vegetarian, I face some small problems. They do not bother me very much, but I feel discriminated by both my meat-eating friends and my full-time vegetarian friends.

    The former mock my ways, the latter doubt my commitment.

    Posted on 29 Aug 2007

    Blogging: Interesting Observation

    by Miguel de Icaza

    Dave Winer has an interesting observation on blogging, fact checking and correcting previous statements.

    Sometimes I use an "Update" tag when corrections are sent my way, sometimes I use a new post, sometimes I update and link, sometimes am guilty of being sloppy.

    What is your take?

    Posted on 29 Aug 2007

    Mono and XPCOM: Scripting VirtualBox

    by Miguel de Icaza

    A few weeks ago Thomas introduced me to Achim Hasenmueller from Innotek, the makers of VirtualBox, an open source virtual machine system (similar to VMware and VirtualPC).

    It turns out that much of the functionality of VirtualBox is exposed through COM interfaces and at least on Unix they use Mozilla's XPCOM as their COM layer.

    Achim wanted to use Mono to script and control VirtualBox through its XPCOM interfaces.

    The good news is that for the past few months, Jonathan Chambers has been working on adding COM support to Mono. Jonathan has some software that exposes COM interfaces, and wants to be able to control it from Mono, instantiate COM classes from Mono, consume COM interfaces from Mono and export Mono objects to COM applications.

    Jonathan's initial goal was to support COM on Windows, but as the recent testing showed, Mono can use Mozilla's XPCOM to script VirtualBox.

    Last time I talked to Jonathan he was putting together a tool that can import type libraries from XPCOM and generate the C# stubs that are necessary to get access to all the APIs exposed by XPCOM instead of having to manually bind each interface.

    Hopefully Jonathan will post his sample code for folks that might be interested in using COM with Mono on Unix.

    Here is a C# sample that he emailed me recently (for VirtualBox):

            static void listVMs(IVirtualBox virtualBox)
    	    IMachineCollection collection;
    	    IMachineEnumerator enumerator = null;
    	    collection = virtualBox.Machines;
    	    if (collection == null) return;
    	    enumerator = collection.Enumerate();
    	    if (enumerator == null) return;
    	    while (enumerator.HasMore)
    	    	IMachine machine = enumerator.Next;
                	if (machine != null){
    		    IntPtr ptr;
                        string machineName;
                        ptr = machine.Name;
                        machineName = Marshal.PtrToStringUni(ptr);
                        Console.WriteLine ("\tName:        {0}\n", machineName);
    	static int Main (string[] args)
                    int hr = 0;
                    nsIServiceManager sm;
                    hr = NativeMethods.NS_InitXPCOM2 (out sm, IntPtr.Zero, IntPtr.Zero);
                    IntPtr ptr;
                    nsIComponentRegistrar cr = (nsIComponentRegistrar)sm;
                    Guid kEventQueueServiceCID = new Guid("be761f00-a3b0-11d2-996c-0080c7cb1080");
                    sm.getService(kEventQueueServiceCID, typeof(nsIEventQueueService).GUID, out ptr);
                    nsIComponentManager cm = (nsIComponentManager)sm;
                    string NS_VIRTUALBOX_CONTRACTID = ";1";
                    IVirtualBox virtualBox = (IVirtualBox)cm.createInstanceByContractID(
    			NS_VIRTUALBOX_CONTRACTID, null, typeof(IVirtualBox).GUID);
                    Marshal.ReleaseComObject (virtualBox);
                    return 0;

    The code above would also automatically work with any other .NET language (for scripting purposes, IronPython, and one day IronRuby).

    COM on Unix

    COM does not exist on Unix as a service that applications can depend on. Developers today have a choice between using Mainsoft's COM runtime or embedding a variation of Mozilla's XPCOM in their application.

    For example, VirtualBox today bundles a copy of XPCOM in its source code distribution.

    Some folks have a lot of code that has been built with COM in mind and this should open the doors for folks to take advantage of it on Unix with Mono.

    Posted on 28 Aug 2007

    ASP.NET AJAX in Mono

    by Miguel de Icaza

    The Mainsoft developers have been busy implementing the core foundation for ASP.NET AJAX. They usually do all their testing on Grasshopper.

    Recently System.Web.Extensions got added to the default build in Mono (I do not think this will make it into Mono 1.2.5, you will need to use the code from SVN for that) but we had not really tested it directly with Mono.

    Onur Gumus posted a How To: ASP.NET Ajax with Mono document today.

    For doing native development in Unix this is a bit cumbersome (due to all the new stuff that needs to be added to the Web.config file; Should we put most of this in the standard machine.config?) but if you are moving an application, the Web.config should have been produced by Visual Studio already.

    Konstantin Triger reports that the open source ASP.NET AJAX Toolkit works on Grasshopper, we have not tested this directly with Mono and XSP, but hopefully someone will try it soon.

    Posted on 28 Aug 2007

    Election Money

    by Miguel de Icaza

    A useful Flash interactive application to browse how much money candidates have raised, how much they have spent and who are their major donors.

    Three folks that have impressed me (Dennis Kucinich, Mike Gravel and Ron Paul Gravel) have raised very little money compared to the multi-million juggernauts in the mainstream.

    Electability seems to be highly correlated to how much money these folks are raising and spending.

    Posted on 27 Aug 2007

    Libros Educativos

    by Miguel de Icaza

    Cuando era niño, era fan de esta colección de libros de Pemsa que tristemente ya no están a la venta.

    Ahora un esfuerzo está tratando de digitalizar libros de segunda mano y completar un acervo histórico en línea (por Barrapunto).

    Posted on 27 Aug 2007

    « Newer entries | Older entries »