Colbert and Bush

by Miguel de Icaza

In CSPAN1 last night you could watch the White House Correspondents Dinner where Stephen Colbert had a thirty minute intervention.

From Boing Boing a transcript, and a torrent for the whole thing.

Crooks and Liars has a copy here.

Bush's face is priceless. And there were many tense moments, you can tell the audience was way uncomfortable.

Update: Colbert will be profiled today in 60 minutes.

Posted on 30 Apr 2006


Neil Young's new Album

by Miguel de Icaza

"Living with War", Neil Young's new album, is currently being streamed from his web site.

Alternative streaming site.

It is also available from Real's Rhapsody.

Neil interviewed in CNN, available on YouTube.

An early review of the album by a friend of Neil Young.

Another pre-release review.

Posted on 28 Apr 2006


Windows.Forms Progress

by Miguel de Icaza

Yesterday I found MonoCalendar, a Windows.Forms-based calendar application, very similar in spirit to iCal.

MonoCalendar is a big exercise in abusing System.Drawing, when I ran it in the morning it was crashing. Just as I was preparing to file a proper bug (and after nagging Massimiliano to look at the crash) Sebastien, Bill Holmes and friends had fixed the GDI+ issues that were stopping MonoCalendar from running.

here is a screenshot:

Windows.Forms-based MonoCalendar.

To run it, you must be using the latest versions from SVN of Mono and GDI+. Hopefully we will have a new beta of Mono soon (1.1.16).

Posted on 26 Apr 2006


Summer Hacking

by Miguel de Icaza

This summer Google is sponsoring a number of open source projects with their Summer of Code 2006.

Last year Mono had a great success: a lot of fresh code was contributed and many of the students that participated in the effort continue to be contributors to the effort (see my previous comments about it).

See our page with ideas for summer projects and feel free to email me if you have any questions (or reach me on irc.gnome.org, channel #mono).

In addition to Mono, the Beagle Project is also being sponsored for the Summer of Code. They also have a great list of tasks to implement in the joyful world of C#.

Posted on 24 Apr 2006


Continuations for Mono

by Miguel de Icaza

Tomi Valkeinen has implemented continuations for the Mono virtual machine.

His continuations work is here.

Most of his tests are used for a user-level thread implementation he calls Microthreads.

This looks like a very nice addition, and Paolo seems to like it too. In the past I abused C# iterators to get some of the benefits of continuations in Mono's ASP.NET (the HTTP processing pipeline).

Posted on 19 Apr 2006


Carl Bernstein on Senate Hearings

by Miguel de Icaza

Carl Bernstein, one of the reporters that triggered the fall of Nixon, calls for senate hearings on the Cheney administration.

Most of what we have learned about the reality of this administration--and the disconcerting mind-set and decision-making process of President Bush himself--has come not from the White House or the Pentagon or the Department of Homeland Security or the Treasury Department, but from insider accounts by disaffected members of the administration after their departure, and from distinguished journalists, and, in the case of a skeletal but hugely significant body of information, from a special prosecutor. And also, of late, from an aide-de-camp to the British prime minister. Almost invariably, their accounts have revealed what the president and those serving him have deliberately concealed [...]

Posted on 19 Apr 2006


Mono Optimizations Enabled

by Miguel de Icaza

Alp just noticed this commit to Mono:

2006-04-19  Massimiliano Mantione  

        * mini.c: Disabled inline where it can alter the call stack in a
        way visible from managed code.

        * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
        default.

And was wondering why we did not make more noise about it.

The story is that the actual new optimizations shipped in 1.1.14, but inlining had some negative side effects that broke some applications (for instance, if we inlined a method that used System.Reflection.Assembly.GetCallingAssembly() you would get the wrong assembly.

The other problem that we found was related to the order in which classes were initialized when no static constructor was defined (for the full gory details, you can read this).

The first issue has been fixed (the inliner was too happy inlining). We have solved the known instances of static constructor initialization, but inlining might expose some of these problems, hopefully they should be resolved by the time we ship 1.1.16.

Posted on 19 Apr 2006


Another Winforms Update

by Miguel de Icaza

Simon shows his Nexxia application running on Linux with Mono in this video. Check it out here.

Posted on 17 Apr 2006


Billmon is Back

by Miguel de Icaza

After a few months of no updates at Billmon.org he is back with each piece better than the previous one.

His analysis on Iran and related events, priceless.

New Billmon expression of the day: "neocons and their pet rocks". I love that expression in so many different levels.

Posted on 15 Apr 2006


Google's Summer of Code and Mono

by Miguel de Icaza

Today Zoltan pointed me to blog entry on Mozilla's experience with the Google summer of code.

A long story short: all the projects funded in the Mozilla group that were completed have not shown any signs of movement since the SoC was over. Read the post for more details.

At Mono we had a very different experience. There were sixteen projects funded:

  • Jaen Saul: Ruby.NET implementation
  • Jb Evain: Cecil/Write support
  • Jeyasankar Kottalam: GCC CIL backend
  • Marek Sieradzki: MSBuild implementation
  • Michael Hutchinson: ASP.NET GUI Designer
  • Aaron Tomb: Bug finder
  • Blagovest Dachev: ASP.NET GUI Designer
  • Hans Hesse: Managed C++ front-end
  • Iain McCoy: XAML compiler
  • Michael Dominic: Diva Video Editor
  • Raphael Romeikat: PHP Compiler for .NET
  • Dmitry Bobrovsky: XSLT Compiler
  • Mario Sopena Novales: Monodoc improvements
  • Pedro Martínez Julia: Windows.Forms 2 controls
  • Tino Morenz: QNX Port
  • Florian Groß: JScript improvements (originally Ruby.NET)

From this list, we had:

  • 3 projects never completed (QNX, CIL C++ extensions, XSLT compiler).
  • 2 projects half-done, and the resulting code is not very useful (Ruby.NET and GCC CIL).
  • 11 projects that were completed to our satisfaction (Cecil/write support, MSBuild implementation, ASP.NET GUI designer, bug finder, XAML Compiler, Diva Video Editor, PHP Compiler for .NET, Monodoc improvements, Windows.Forms' DataGridView and JScript class library implementation).

We had two medium-sized projects that required two students to work on the project: Ruby.NET and the ASP.NET GUI editor.

We originally had two students working on Ruby.NET: the runtime and the compiler, but we reassigned the runtime student (Florian)to work on JScript runtime support while the compiler student (Jaen) worked on the core.

Sadly, the compiler guy was not able to finish on time so Ruby.NET was not completed. But at least we got the JScript class libraries upgraded and integrated into Mono's build system.

In the case of the ASP.NET GUI editor, the project was a success. Blagovest did most of the Mozilla-side work to turn Mozilla into an ASP.NET editor, and Michael did the Gtk# host and all o fthe integration. We have not heard much from Blagovest since the SoC finished, but Michael continues to be involved in the ASP.NET GUI editor, and has been become a contributor to the MonoDevelop IDE effort.

Only recently, with the upgrades to MonoDevelop's architecture, we have started to look into hosting the ASP.NET editor into MonoDevelop itself. Chris Toshok has started this integration and will be devoting more time to it in the next few weeks.

Marek completed the required tasks for an MSBuild implementation, he went back to school but came back to the project and leads the effort to complement the work that he did over the summer.

Marek is now working with other Mono developers to improve his implementation. He is a regular in the development channels.

JB Evain did complete the Cecil Write Support project. Cecil, a CIL image manipulation library, has been finding more and more uses in the Mono world. A few companies are using it (Mainsoft, DB4O) as well as the Mono Project for implementing various tools (Gendarme, our permission viewer.

JB continues to be involved today in Cecil and the Mono project.

Aaron Tomb implemented a bug finder based on Cecil during the summer. The bug finder looks at compiled code and looks for programming mistakes patterns in this code and reports it to end users.

Aaron completed his project, and after the summer he integrated his code into the general-purpose Gendarme tool for tracking other problems in applications. Aaron continues to submit improvements to Gendarme.

Iain McCoy completed the XAML Compiler during the summer and also wrote tests for ensuring that it worked. His code has been integrated into the main Mono class libraries and we hope to put it to use soon.

Michael Dominic's Diva Video Editor is one of the most polished GUI applications I have seen. Michael continued to work on it after the summer, and thanks to Chris DiBonna at Google, Google continues to fund the work of Michael on the Diva editor. He recently released version 0.1 of Diva.

Raphael completed the pieces he promised to complete on his PHP Compiler by the end of the summer of code. Raphael had structured the work on the compiler in three stages. He had commited to complete the first stage by the end of the summer.

He was away for a while working on school projects, but he returned recently and published a 0.2 version of his PHP compiler. This second release implemented the second stage of features he had planned for. We hope to see Raphael complete his work on the third stage as it would make for a great way of running PHP and Mono code side-by-side.

I personally would like to see the PHP community get involved in testing the compiler and improving the compiler as it would give a nice performance boost to all PHP applications and would be done in a completely open source stack.

Mario Sopena did many updates to Monodoc, and all of those were eventually integrated into the main Monodoc. He switched the engine to use Mozilla, moved from plain HTML to CSS-based rendering and implemented many other pending tasks in Monodoc. Mario remained involved in Mono for a number of months in Mono and continued to contrinute. He recently got a job and his contributions declined.

Pedro Martinez implemented the DataGridView control for Windows.Forms. This work was in a way ahead of its time, as his code was a 2.0 API contribution and our Windows.Forms is not yet 2.0 compatible. Pedro did a few code cleanups and improvements to the code after the summer was over, and helped us get the code in shape for integration into Mono's class libraries. But we have not heard much from Pedro since.

In Summary

We got lucky with the summer of code compared to Mozilla.

Many of the students delivered code that we were able to use (11 out of 16) and many of these students continue to be involved in Mono after the Summer of Code was completed (6 out of 11).

Am not sure I can pinpoint why we had more success with our summer of code projects than Mozilla did, but a few things might have helped.

One possibility is that much of the work got integrated into a larger vessel (class libraries or other tools). The larger vessel exposed the code to more people, and ensured that it did suffer bitrot.

Another possibility is that in the Mono case we listed projects that we needed external help with. We had identified things that we needed in advance and were looking for developers that would like to work on them.

I personally, could not be happier with the results: code delivered, integrated and continued involvement in the project.

On the downside, I wish we had been able to capture the other five students into continued involvement in Mono after the summer.

Posted on 13 Apr 2006


Region Operations in GDI+

by Miguel de Icaza

Sebastien has checked into SVN to both the GDI+ and System.Drawing modules an implementation of the binary operations on non-rectangular regions.

For a long time Mono's System.Drawing API stack could only do binary operations on rectangular regions (ANDing two regions, ORing two regions, XORing two regions). With Sebastien's commits it is now possible to use these operations with regions created from any GraphicsPath object.

These operations are used by many graphics controls and advanced graphics applications. So this is a pretty important step for Mono.

His summary post is here (includes links to screenshots).

Posted on 02 Apr 2006