Porting your ASP.NET 2.x Application to Linux

by Miguel de Icaza

Marek Habersack has written a Guide on Porting ASP.NET Applications to Linux using Mono. This is a complement to Jonathan Pobst's Porting Winforms Applications to Linux using Mono.


In addition to the two Guides above, the Thomas from Frost Innovations (the makers of Ajaxwidgets has written a tutorial on how he run ASP.NET 2.0 apps on Linux with Mono.

AjaxWidgets announced 100% Mono-compatible Controls

The new version of Gaia Ajax Widgets now is shipping with full support for Mono ASP.NET 2.0.

If you were considering an ASP.NET control library for use in a cross-platform fashion, these guys offer a very nice suite of controls, and they will support you in Mono and Linux.

In addition to the controls, they provide MonoDevelop solution files and ready-to-run components. In addition to supporting the "big browsers", AjaxWidgets works just fine with Opera.

If you are an open source project, you can use those controls for free. For commercial projects they offer a commercial version that is very reasonably priced.

Posted on 02 Jul 2007

No Criminal Left Behind

by Miguel de Icaza

President Bush commuted Libby's sentence on the case of ratting out an undercover CIA agent.

We got our bread and circus when they put Paris Hilton in jail. But when it comes to the real crooks, doing real damage, those either walk free or Congress is too weak to take their jobs away.

If this was a public corporation, stockholders would have fired the board and the CEO a long time ago and pressed charges.

Posted on 02 Jul 2007

Google and HMOs

by Miguel de Icaza

A couple of weeks ago, I was reading reddit.com when I found a link to the Michael Moore new movie Sicko playing at video.google.com. Moore had made some comments at the time about his position on the leaked movie. When I saw this on reddit I thought it was a joke, but there it was in video.google.com.

So I watched the entire thing at the time, I was up until 4am in the morning watching it.

Tonight am going with Laura and some friends that did not see it to watch it again at the theater.

A Handful of Events

For years I have been incredibly annoyed at the power that special interest groups have over policy making in the United States. It all begun by reading Howard Zinn, Noam Chomsky and the progressive sites.

Around that time there were a series of events happening, but I was too busy with the Moonlight hack-a-thon.

Luis Villa posted a link to Larry Lessig post where he has decided to move his work and activism in a different direction, a much needed one: . You should read the whole thing, but here are some bits that I found interesting:

If you've been reading these pages recently, you'll know my allergy to that word. But this friend's use of the term not to condemn me, but rather as play, made me recognize just how general this corruption is. Of course he would expect I was in the pay of those whose interests I advanced. Why else would I advance them? Both he and I were in a business in which such shilling was the norm. It was totally reasonable to thus expect that money explained my desire to argue with him about public policy.

I don't want to be a part of that business. And more importantly, I don't want this kind of business to be a part of public policy making. We've all been whining about the "corruption" of government forever. We all should be whining about the corruption of professions too. But rather than whining, I want to work on this problem that I've come to believe is the most important problem in making government work.

And so as I said at the top (in my "bottom line"), I have decided to shift my academic work, and soon, my activism, away from the issues that have consumed me for the last 10 years, towards a new set of issues: Namely, these. "Corruption" as I've defined it elsewhere will be the focus of my work. For at least the next 10 years, it is the problem I will try to help solve.

The other thing that bothered me at the time was that one of the Supreme Court Justices in the United States became an apologist for torture:

The conservative jurist stuck up for Agent Bauer, arguing that fictional or not, federal agents require latitude in times of great crisis. "Jack Bauer saved Los Angeles. ... He saved hundreds of thousands of lives," Judge Scalia said. Then, recalling Season 2, where the agent's rough interrogation tactics saved California from a terrorist nuke, the Supreme Court judge etched a line in the sand. [...]

So there you have it, America making sound legal decisions based on the hit-show 24.

Google and HMOs

The US is a country that has grown to believe that two differing points of view should be given "equal time" to portray their position regardless of the value of the arguments.

Except things are not fair and not equal in a country where you get the best democracy that money can buy.

So Michael Moore presents a film in 2007 after 30 years of HMO propaganda and will be up against a multi-billion dollar industry that will use every tool at their disposal to keep the profits rolling, and the health service at the lowest possible level.

And now we have Google's Health Advertising team pitching their services to a rotten industry (from Boingboing).

They are willing to help this industry catapult the propaganda:

Many of our clients face these issues; companies come to us hoping we can help them better manage their reputations through "Get the Facts" or issue management campaigns. Your brand or corporate site may already have these informational assets, but can users easily find them?

We can place text ads, video ads, and rich media ads in paid search results or in relevant websites within our ever-expanding content network. Whatever the problem, Google can act as a platform for educating the public and promoting your message. We help you connect your company’s assets while helping users find the information they seek.

If you're interested in learning more about issue management campaigns or about how we can help your company better connect its assets online, email us. We'd love to hear from you! Setting up these campaigns is easy and we're happy to share best practices.

Ah, "Get The Facts" campaigns to better manager company reputations. Where have I heard that one before?.

Sure, Google could keep selling their ads and do Get the Facts campaigns out, but actively reaching out to this rotten industry saddens me.

Update: An official response from Google.

Posted on 30 Jun 2007

Jonathan Pobst's: Banshee Integration with Nike+ Accessory

by Miguel de Icaza

For Hack Week, Jonathan Pobst did a pretty cool hack: he added support for Banshee to work with the Nike+ Accessory on iPods.

From his blog:

I decided that part of my Hack Week would be to venture from my "happy place" of Winforms in Visual Studio and write something in GTK# using MonoDevelop. I chose to write a plugin for Banshee that allows it to sync with and display files generated by taking your iPod for a run with the Nike+ accessory. Oh, and using Moonlight, just because it seemed fashionable.

Posted on 29 Jun 2007

Moonlight Desklets Update

by Miguel de Icaza

Everaldo has a nice update on the result from the HackWeek on the Moonlight/Gtk#-based desklets project.

Check Everaldo's blog for more details.

Posted on 29 Jun 2007

Valgrind Support for Mono

by Miguel de Icaza

During hack week, I took an afternoon to add Valgrind support for Mono symbols. It was kind of a hackternoon thing.

Mono works great with Valgrind, but when there is an error in unmanaged code stack traces only contain symbols from the native libraries and do not contain information from the JITed code. During the Moonlight hacking sprint we used Valgrind extensively for finding errors in our code and it was becoming annoying to manually lookup addresses from stack traces and match them up with Mono's -v output. Today the output looks like this:

==22441== Mismatched free() / delete / delete []
==22441==    at 0x4020E26: operator delete(void*) (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==22441==    by 0x5EB49FA: Value::FreeValue() (value.cpp:261)
==22441==    by 0x5EB4AAC: value_free_value (value.cpp:275)
==22441==    by 0x66E5E60: ???
==22441==    by 0x66E4587: ???
==22441==    by 0x66E3FF1: ???
==22441==    by 0x66E3DE5: ???
==22441==    by 0x66E3D35: ???
==22441==    by 0x809D294: mono_runtime_class_init (object.c:329)
==22441==    by 0x815920C: mono_jit_compile_method (mini.c:10905)
==22441==    by 0x81595C4: mono_jit_runtime_invoke (mini.c:11081)
==22441==    by 0x809FD34: mono_runtime_invoke_array (object.c:2616)


This app is the culrpit for the above stacktrace. A developer first reaction to the "???" text is to panic.
Today we lower the panic alert level.

At the beginning of the hackternoon, I did not know it, but Nat had written a script that achieved similar results:

I added a new client API to Valgrind that JIT compilers can use to register generated code with Valgrind so that the actual method name is displayed on the stack traces, the new output looks like this for the same error:

==22478== Mismatched free() / delete / delete []
==22478==    at 0x4020E26: operator delete(void*) (vg_replace_malloc.c:244)
==22478==    by 0x5EB49FA: Value::FreeValue() (value.cpp:261)
==22478==    by 0x5EB4AAC: value_free_value (value.cpp:275)
==22478==    by 0x66E5E60: (wrapper managed-to-native) Mono.NativeMethods:value_free_value (Mono.Value&)
==22478==    by 0x66E4587: System.Windows.DependencyObject:SetValue (System.Windows.DependencyProperty,System.Windows.Media.Color)
==22478==    by 0x66E3FF1: System.Windows.Media.SolidColorBrush:.ctor (System.Windows.Media.Color)
==22478==    by 0x66E3DE5: Desklets.Monitor:.cctor ()
==22478==    by 0x66E3D35: (wrapper runtime-invoke) Desklets.Monitor:runtime_invoke_void (object,intptr,intptr,intptr)
==22478==    by 0x809D294: mono_runtime_class_init (object.c:329)
==22478==    by 0x815920C: mono_jit_compile_method (mini.c:10905)
==22478==    by 0x81595C4: mono_jit_runtime_invoke (mini.c:11081)
==22478==    by 0x809FD34: mono_runtime_invoke_array (object.c:2616)

The patch is here.

Support your Valgrind/Mono addiction by voting my idea up.

Posted on 29 Jun 2007

Hack Week: Ankit

by Miguel de Icaza

Ankit from the Mono/MonoDevelop team had a fantastic idea: embedding VIM into MonoDevelop.

Watch the video:

He shows:

  • Code completion/intellisense with VIM/MonoDevelop.
  • Class/method combo boxes for navigation.
  • Full duplex communication between the two of them.

Posted on 29 Jun 2007

Hack Week: Moonlight Desklets.

by Miguel de Icaza

The folks over at #desklets have been making some progress on their hack for week.

Andreia wrote an SVG to XAML conversion tool that is very handy to import artwork from tools like Inkscape into XAML.

Everaldo did a screencast of a few desklets that the folks have been working on during Hack Week:

YouTube Video:

Gtk#/Moonlight Desklets in action

Some screenshots, because they look nicer than the YouTube video:


These are of course not as advanced as other desklets systems, this was written only in a couple of days, but we have a few interesting things in them that we think are interesting concepts in general:

  • A new launch tool called "mopen" that can launch either XAML files directly, or can launch applications that are contained in a directory (directory/default.xaml, directory/default.exe and eventually directory/default.XX where XX is an extension for a scripting language supported by Mono: Boo, IronPython, Javascript, etc).
  • mopen can launch multiple applications into the same Mono virtual machine and isolate each desklet from each other using Application Domains. This feature is important to us because it means that only one Mono Virtual Machine, Gtk# and Moonlight are loaded at a given time to run multiple applications at the same time.
    The way we did this was by adding a "--host" command line option. You can instruct your desklets (or in fact any program that can be opened with mopen) to go into a specific container. You would for example load all your stable desklets into one VM:
    	$ mopen --host desklets clock
    	$ mopen --host desklets calendar
    	$ mopen --host desklets flickr
    	$ mopen --host desklets picasa

    But keep your development desklets into a separate VM to prevent bringing everything down:
    	$ mopen --host devel stockapplet
  • Security System: today deskltes run without a security sandbox. We will be working on the Silverlight security system for Mono. Once that is implemented users will be able to run untrusted code into the sandboxed environment.
    The new Silverlight security system is a lot easier to understand than the old CAS, so we are looking forward to implement this (it is also a requirement for the Moonlight browser plugin).
  • Mono: we get to leverage our favorite CLI-based languages (C#, Boo, IronPython, Nemerle or any other language that targets the CLI) and we get to leverage the CLI APIs.

Another one

Desklets are of course not a new thing, Google and Yahoo both ship desklet systems. OSX and Vista have widgets and gadgets as well. Gnome has gDesklets, KDE has SuperKaramba.

This is merely our take on the challenge as part of Novell's hack week and it is also a good way of exercising our Moonlight engine, the Gtk# binding, Mono and try to learn something new in the process.

Marek's weather applet

If you have not seen them, you should check out what other folks at Novell are doing during their hack week. There are some videos here. Today it seems to be strongly slanted towards Evolution and panel applets.

Posted on 28 Jun 2007

Desklets and Getting Started with XAML

by Miguel de Icaza

Jackson has written a fantastic tutorial on his blog (and I think it should be moved to the Mono web site as a Guide). check it out: A Mono Developers Guide To Writing XAML.

For those of you participating in the #desklets effort, the above is a good getting started guide on XAML.

Posted on 26 Jun 2007

Video Capture of Moonlight in Action

by Miguel de Icaza

I finally managed to do video capture, I ended up using ffmpeg for generating the file.

This shows the Surface Silverlight application running in Linux with Moonlight. It also shows two modified versions of it:

  • The first replaces pictures with bezier paths (the Mono logo) and a "live" clock photo.
  • The second one introduces a video playing live as part of the surface.

Watch the video here.

Posted on 25 Jun 2007

« Newer entries | Older entries »