Howard Zinn on War

by Miguel de Icaza

I found this quote from historian Howard Zinn insightful:

There is a persistent argument against such a possibility, which I have heard from people on all parts of the political spectrum: We will never do away with war because it comes out of human nature. The most compelling counter to that claim is in history: We don’t find people spontaneously rushing to make war on others. What we find, rather, is that governments must make the most strenuous efforts to mobilize populations for war. They must entice soldiers with promises of money, education, must hold out to young people whose chances in life look very poor that here is an opportunity to attain respect and status. And if those enticements don’t work, governments must use coercion: They must conscript young people, force them into military service, threaten them with prison if they do not comply.

Emphasis added.

He follows up with assorted examples.

Posted on 31 Dec 2005

Developing on Apple Systems

by Miguel de Icaza

Recently Nitesh Dhanjani in a bit of a rude email exchange asked Steve Jobs if he had plans to support something like .NET or Ruby on the Mac.

Update: On a positive note, Nitesh's blog entry has sparked an interesting discussion.

Given the initial confrontational exchange (which can be found here) am not surprised at Steve's immediate comments.

I would like to add some comments to the discussion as we develop a cross platform Common Language Infrastructure (CLI) implementation that also supports the Mac.

On Speed

Steve claims that ".NET with CLI and managed code runs SLOW". It is true that writing code in a managed language or an interpreter is likely going to be slower than the output produced by a C compiler, or the output produced by hand-tuned assembly code.

Lets start with an example: F-Spot is our photo management software which is written in C# and runs on the CLI consistently outperforms iPhoto and scales easily to hundreds of thousands of pictures without the obnoxious pauses that are common in iPhoto for example. F-Spot gets bonus points for being written by a single developer.

F-Spot makes use of a feature in the CLI called "Platform Invoke" (or P/Invoke) which allows code written in a managed language to call into native code easily. In F-Spot's case all the high-level logic is implemented in a managed language and the bits that are performance sensitive (like quickly rendering the image, transforming JPEG images and even the GUI toolkit employed) are implemented in C.

From a productivity stand point this is the best of both worlds: programmers can use a higher-level language to focus on the functionality first. When they identify a performance bottleneck they can easily move this functionality into a C library.

It is possible that Steve has only looked at Microsoft's Rotor implementation of the CLI which merely ships a toy code generator. We encourage them to look at Mono and the various new advanced optimizations that we are introducing in Mono.

On Productivity

Although raw performance is good for some applications they impose a heavy toll on the developer. A professionally written and hand tuned assembly language program will likely perform better than anything else generated by a compiler.

The language and runtime choice is a tradeoff that developers make. A balance between the time available for releasing the product; the budget available for creating and maintaining the application; the target system requirements; any third party libraries and components required; the in-house expertise; availability of developers with knowledge to develop and maintain the code; language learnability; the project life-span and the requirements that it might impose on the project: from languages designed to maintain software over a large period of time to write-once, barely-touch-afterwards software.

There is not a single solution to the problem of course, but we believe that Mono does bring a good mix of elements that make it a good choice for a large body of developers. Some people will continue to be happy with their existing tools and their existing frameworks, but I believe Mono can help Unix developers produce better applications faster.

Mac developers interested in using Mono and its tools on the OSX could use the Cocoa# bindings today. It is not complete, but it has a good foundation on which people can add more bindings to Objective-C libraries.

As a project maintainer, am interested in learning what Cocoa# and Mono are missing for developers on the OSX platform.

I know that OSX developers in the past have asked for Mono integration into X-Code, this is an area where collaboration between Apple and Mono would be useful. Alternatively there is the X-Develop IDE by OmniCore and eventually when the next version of Gtk+ ships with Quartz support we will likely ship MonoDevelop for OSX as well.

Tapping Existing Developers

Another advantage of Mono and the CLI is that it becomes easy for existing developers that have been targeting .NET to target new platforms.

This is just a pragmatic point. Developers can reuse a large body of their expertise, their books, their documentation, their connections to bring their software to Unix. Some things might have to change to work effectively on Unix, but porting an application from Windows to Unix is no longer a multi-month or multi-year project.

Porting an application from .NET to Mono is similar to porting a Unix application from SystemV to BSD: there are a few differences, but they make up only a tiny fraction of the application.

On Languages

The CLI was designed so it could host efficiently any programming languages in use today, but it also contains a strong interoperability layer. I already mentioned P/Invoke which Mono supports, but the framework is complete enough that it is possible to also integrate other object systems easily into the system. Today we have done this with Gtk's GObjects and some volunteers are working into adding COM support to Mono.

The languages story is a powerful one.

The CLI defines a set of language interoperability requirements which every language should adhere to (these guidelines are called the "Common Language Specification"). By following these guidelines once an API is developed in any of the CLI languages the API becomes available to every other language.

Apple has struggled in the past in maintaining two code bases: one for Objective-C programmers to develop GUI applications and another one in Java.

It is understandable that they do not want to support every single one of their APIs for every programming language out there; otherwise their own development would slow down, it is just not possible to do so.

This is where I think the CLI adds tremendous value. Today developers only have to "bind" the API once and it becomes available to all the languages in the CLI ecosystem.

Consider Geoff's effort to bind Cocoa. The Cocoa bindings that Geoff has hand-written are now available to all of the programming languages that target the CLI. Apple developers can use this API and any of the other CLI APIs developed by .NET and Mono developers on their applications with their favorite programming language: Boo, Nemerle, C#, JavaScript, Java and more.


There are a number of ways in which a language can participate in the CLI ecosystem. The most common one is to have the compiler translate the source language into CLI byte codes. This requires the creation of a compiler that targets the CLI.

Examples of some open source compilers in this group include: C#, Python (with the IronPython compiler), Java (with the IKVM compiler), Nemerle and Boo. In addition to this there are several commercial compilers available: Fujitsu's Cobol compiler, ISE's Eiffel, RemObjects, Microsoft's own Managed C/C++ and many more.

In some cases it is easier to write a "bridge" than to write a new compiler. This reuses an existing implementation and merely bridges the calls between the existing language and the CLI universe.

Bridges have been developed for Python (yes, this is a parallel approach), Perl, Ruby and OpenOffice's UNO (this is how we are able to script OpenOffice using Mono). There are more, but I do not keep track of these.

In addition Mono provides an embedding interface which allows developers to embed the virtual machine into an existing application. OpenOffice Mono integration (available in OpenSUSE 10), the game Second Life and the Unity game engine all use this embedding interface.


As I mentioned before, I do not believe that Mono is an ideal solution for every kind of application; Like every other framework Mono also has its own limitations and features missing; Its up to every developer to make this choice. But we believe we got a very solid mix.

One Mono's goals is to work-well-with-others. Working with ISVs to ensure that their software runs with Mono and Unix is one of the things we take pride in doing. We always welcome new collaborations on the Mono universe.

Update: Erik also comments.

Posted on 28 Dec 2005

Early Christmas Presents

by Miguel de Icaza

JB Evain announced Cecil 0.2 the CIL image manipulation library.

Thomas from Fluendo announced that they have licensed the MP3 decoding for use with their LGPL libraries. Details are also here. There are a number of licensing caveats, you should check them out.

Banshee, our new media player, was licensed under the MIT X11 terms explicitly to avoid these issues (Banshee as shipped in Novell's Linux editions uses the RealPlayer framework for its playback).

Posted on 24 Dec 2005

Funny Quote

by Miguel de Icaza

On the ongoing debate over spying, Molli Ivins writes:

Here is a curious fact about the government of this country spying on its citizens: It always goes wrong immediately. For some reason, it's not as though we start with people anyone would regard as suspicious and then somehow slip gradually into spying on the Girl Scouts. We get it wrong from the beginning every time. Never seem to be able to distinguish between a terrorist and a vegetarian.

And then am sure it will be used against the political enemies. On an ironic twist, she continues:

Bush defended his actions Monday by saying it was part of "connecting the dots." A painful moment, since the 9/11 Commission just finished giving this administration grades of D and F in terms of preventing another terrorist attack --- and it has jack-all to do with wiretapping. This administration has cried wolf so many times using the national security excuse it has lost all credibility.

Posted on 22 Dec 2005

Porto Alegre Talk

by Miguel de Icaza

Update: My talk today in Porto Alegre will be at:

Auditório do Serpro:
Av. Augusto de Carvalho 1133 / 4º andar
Porto Alegre RS
Time: 18:30

Posted on 22 Dec 2005

Building a Rationale for a Dictatorship

by Miguel de Icaza

Nat pointed me to Bruce Schneier weights in on the new administration self-appointed rights:

This is indefinite dictatorial power. And I don't use that term lightly; the very definition of a dictatorship is a system that puts a ruler above the law. In the weeks after 9/11, while America and the world were grieving, Bush built a legal rationale for a dictatorship. Then he immediately started using it to avoid the law.

This is, fundamentally, why this issue crossed political lines in Congress. If the president can ignore laws regulating surveillance and wiretapping, why is Congress bothering to debate reauthorizing certain provisions of the Patriot Act? Any debate over laws is predicated on the belief that the executive branch will follow the law.

This is not a partisan issue between Democrats and Republicans; it's a president unilaterally overriding the Fourth Amendment, Congress and the Supreme Court. Unchecked presidential power has nothing to do with how much you either love or hate George W. Bush. You have to imagine this power in the hands of the person you most don't want to see as president, whether it be Dick Cheney or Hillary Rodham Clinton, Michael Moore or Ann Coulter.

Bruce has a blog with more data on the subject.

Posted on 21 Dec 2005

Robert Fisk on Iraq

by Miguel de Icaza

More on the fascinating chapter on Iraq, which gets better every page. The following quote appears after Robert describes the torture practices employed by the Saddam Hussein government and the routine elimination of his critics. He describes how various states preferred to ignore Iraq's human rights record and continued to supply weapons and funding:

Throughout the early years of Saddam's rule, there were journalists who told the truth about his regime while governments -- for financial, trade and economic reasons-- preferred to remain largely silent. Yet those of us who opposed the Anglo-American invasion of Iraq in 2003 were quickly accused of being Saddam's "spokesmen" or, in my case, "supporting the maintenance of Baathist regime"-- this from, of all people, Richard Perle, one of the prime instigators of the whole disastrous war, whose friend Donald Rumsfeld was befriending Saddam in 1983. Two years after Rumsfeld's initial approach to the Iraqi leader -- followed up within months by a meeting with Tariq Aziz -- I was reporting on Saddam's gang-rape and torture in Iraqi prisons. On 31 July 1985, Wahbi al-Qaraghuli, the Iraqi ambassador in London, complained to William Rees-Mogg, the Times editor that:
Robert Fisk's extremely one-sided article ignores the tremendous advances made by Iraq in the fields of social welfare, education, agricultural development, urban improvement and women's suffrage; and he claims without presenting any evidence to support such an accusation, that "Saddam himself imposes a truly terroristic regime on his own people." Especially outrageous is the statement that: "Suspected critics of the regime have been imprisoned at Abu Ghoraib [sic] jail and forced to watch their wives being gang-raped by Saddam's security men. Some prisoners have had to witness their children being tortured in front of them". It is utterly reprehensible that some journalists are quite prepared, without any supporting corroboration, to repeat wild, unfounded allegations about countries such as Iraq...

I picked this quote because it resembles what people always say about Robert Fisk on his coverage. The amateur psychologist in me knows that this is because Robert's reporting causes cognitive dissonance problems to some people.

Anyways, back to read, I just wanted to share this with those who are still reading. This book is fascinating.

Posted on 21 Dec 2005

Wednesday Links

by Miguel de Icaza

The Jesus General has a funny graphic, reminds me of Jack London's Iron Heel.

The Release of Mrs. Anthrax: So it turns out that the story on Mrs Anthrax was not what the occupation forces told us. Shocking. At the time of detention there was an article that raised the same questions.

The P.U.-Litzer Awards awarded to the foulest media performance in 2005. Funny.

Here I am George, Come and Get me: A Christian peace activist has a few words for the emperor. This is obvious, but I have been thinking about it: isn't it funny that those pitching the sanctity of Christmas are none other than the war-mongering Fox? Am I missing something?

Editorials on the new emperor powers that George has vested himself with: Bush Must be Held Accountable; on his attempts to stop publishing the news and keep it a secret; Republican Jesus weights in; Jesus General open letter: Defending our Values Brutally; Bush as Nixon; Fafblog's There is no War in Warrant.

ElBaradei's Nobel lecture transcript is now online.

Jamie has a bunch of great articles on his "Today in Treason News". Pay special attention to why impeaching Bush is a bad idea.

Posted on 21 Dec 2005

Porto Alegre

by Miguel de Icaza

We decided to escape the sordid Boston winter and are currently refugees in the southern hemisphere.

Am doing a Linux Desktop/Mono talk on Thursday at 5pm. I have no idea where it is yet though.

Posted on 20 Dec 2005

Iraq in Robert Fisk's book

by Miguel de Icaza

Doug pointed me to an online copy of Robert Fisk's chapter on Iraq that I mentioned last night.

The online copy is limited to the 1917 invasion. It is part of the various teasers that the Independent published in advance of the release of Robert's book. I strongly recommend folks to get the book for the rest of the goods.

Posted on 19 Dec 2005

Iraq's Past

by Miguel de Icaza

I bought my copy of Robert Fisk's The Great War for Civilization: The Conquest of the Middle East his latest book on the various conflicts in the middle-east. I will likely talk more about the book in the future as it is packed with gems.

I have been savoring this book for a while, not wanting to read it very quickly, I have paced myself and allowing myself sometime to research some of the stories and compare notes with other texts on the various events he describes.

Anyways, tonight I reached the chapter on the formation of modern Iraq. The stories, the anecdotes and the background information in here justify getting the book, even if you only read this chapter.

Iraq is a hot topic of debate and has been covered non-stop for the last couple of years but the information I found on this chapter is all fresh.

The chapter begins with the liberation of Iraq by the British troops in 1917; the proclamations of "we come here as liberators"; the early mistakes of the British invaders which would lead to an insurgency that they would not be able to control. The similarities with the current invasion are striking, down to 'we can not leave Iraq now, have to finish the job'.

It gets better and better on every page. I won't spoil the rest, but its a great educational read.

Posted on 19 Dec 2005

Christmas Fun

by Miguel de Icaza

This is pretty fun:

Some background for those not living in the US: for the past few months Fox News has managed a great campaign about how Christmas is under siege. The debate over water coolers across the United States revolves around important matters like what is more appropriate `Happy Holidays' vs `Merry Christmas'. Am not kidding.


Posted on 17 Dec 2005

Mono Debugger

by Miguel de Icaza

Martin has announced a new release of the Mono Debugger.

This is the first time that I have been able to use the debugger for a real application. It still has a few rough edges, but at least its working.

The documentation for the command line interface can be found here.

Posted on 16 Dec 2005


by Miguel de Icaza

Just got back from watching Syriana. Loved it.

Posted on 12 Dec 2005

Human Development Trends

by Miguel de Icaza

Various statistics of human development trends in flash-tutorial form here

Posted on 10 Dec 2005

Harold Pinter's Nobel Prize Lecture

by Miguel de Icaza

A transcript is available here.

Political language, as used by politicians, does not venture into any of this territory since the majority of politicians, on the evidence available to us, are interested not in truth but in power and in the maintenance of that power. To maintain that power it is essential that people remain in ignorance, that they live in ignorance of the truth, even the truth of their own lives. What surrounds us therefore is a vast tapestry of lies, upon which we feed.

Posted on 08 Dec 2005

Mono goes to Munich

by Miguel de Icaza

I will be in Munich this week. Drop me an email if you want to meet. My schedule is a bit compact, but if you are interested you can join me and others for lunch or dinner Wednesday, Thursday or Friday.

Posted on 06 Dec 2005

Jonathan Chambers Screenshots COM in Mono

by Miguel de Icaza

Jonathan has posted a screenshot of his COM support for Mono. The sample shows Mono launching Excel with COM interop.

Check Jonathan blog for more information on his effort to support COM and its variants in Mono.

Posted on 03 Dec 2005


by Miguel de Icaza

My friend Xavi which is a sports instructor and also a circus performer got interested in Linux and free software a few years ago. He decided to learn C#, Gtk# and create his first GUI application some time ago and has now shipped it.

His application is ChronoJump. Its interesting because he was the first user for the Gtk# port of NPlot.

He also built some custom hardware to take the measurements:

Some NPlot Graphs.

Web report generation.

Hardware prototype.

More screenshots are here.

Posted on 02 Dec 2005