Covert Operations in Iran

by Miguel de Icaza

On Februrary 16th, in an interview with Noam Chomsky, the interview is one of Chomsky's best.

At one point he speculates about the potential strategy being applied to Iran:

[...] So it could be that one strain of the policy is to stir up secessionist movements, particularly in the oil rich regions, the Arab regions near the Gulf, also the Azeri regions and others. Second is to try to get the leadership to be as brutal and harsh and repressive as possible, to stir up internal disorder and maybe resistance. And a third is to try to pressure other countries, and Europe is the most amenable, to join efforts to strangle Iran economically. Europe is kind of dragging its feet but they usually go along with the United States.

This week Seymour Hersh publishes on the New Yorker some of his findings. The article makes the case that the US is now funding terroristsfreedom fighters in Iran to destabilize the regime (as speculated by Chomsky before). The article also happens to match some of Chomsky's observations.

For a quick overview you can watch this video interview with Seymour Hersh.


It’s very hard to predict the Bush administration today because they’re deeply irrational. They were irrational to start with but now they’re desperate. They have created an unimaginable catastrophe in Iraq. This should’ve been one of the easiest military occupations in history and they succeeded in turning it into one of the worst military disasters in history. They can’t control it and it’s almost impossible for them to get out for reasons you can’t discuss in the United States because to discuss the reasons why they can’t get out would be to concede the reasons why they invaded.

If you listen to Seymour's interview it seems that the strategy is going from "unimaginable catastrophe in Iraq" to "unimaginable catastrophe in the whole Middle East".

In the meantime, it turns out that the weapons that were presented a couple of weeks ago as being "manufactured in Iran" turned out to be manufactured in Iraq.

If that was not enough, the UN Calls US Data on Iran's Nuclear Aims Unreliable:

The officials said the CIA and other Western spy services had provided sensitive information to the Vienna-based International Atomic Energy Agency at least since 2002, when Iran's long-secret nuclear program was exposed. But none of the tips about supposed secret weapons sites provided clear evidence that the Islamic Republic was developing illicit weapons.

"Since 2002, pretty much all the intelligence that's come to us has proved to be wrong," a senior diplomat at the IAEA said. Another official here described the agency's intelligence stream as "very cold now" because "so little panned out."

For those of us too cynical to believe anything the Bush administration has to say on any matter, this is hardly news. But it is always nice to see them debunked in public.

Posted on 27 Feb 2007

Getting Ripped Off: A Consolidation Strategy

by Miguel de Icaza

Last week I described how international travel for an Internet addict can be very costly, 10 euros here, 12 dollars there 20 euros for 24 hours there and very soon you have paid a hundred dollars in a two-day trip on Internet access fees.

Now, instead of paying half a dozen people to get WiFi access, I have consolidated my "getting ripped off" with AT&T. Now they bill me an insane amount for getting "3G worldwide access".

Two problems though: "3G worldwide" actually means "3G in Boston, and 9600 baud modem speed in Europe". During the entire trip I could not get the "3G" light on the card to turn on, it consistently stayed in "2G" mode.

But just before you think "Well, GPRS/2G is not so bad", I want to point out that it took 25 seconds to load

Posted on 27 Feb 2007

Usability Interview with Anna Dirks

by Miguel de Icaza

Ted Haeger interviews Anna Dirks.

Anna leads the team at Novell that was in charge of improving the usability of the desktop. Her team launched Better Desktop, the Tango Icons and prototyped, tuned, improved, mocked-up and tested various elements of the usability elements in the SLED desktop.

Her interview is here in Novell's Open Audio.

She talks about the process used to design the new features of SLED and it also got a few hints on what is coming up for SLED 10 SP1 (pay attention to the physical weight of the Usability Labs).

Posted on 26 Feb 2007

Feedback requested: FOSDEM Conference

by Miguel de Icaza

This weekend am heading to Brussels to the FOSDEM conference. The last time I spoke there, Mono was in its infancy (2002). At the time the C# was about to be self-hosting on Linux, but was not quite there (0.8 and 0.9 releases).

Now, five years later Mono has gone through 60 releases and is made up of a few million lines of code and has spawned plenty of software projects.

The question is: What kind of things should I talk about in my two sessions at FOSDEM?

I have one general Mono session, and one session in the OpenSUSE track. Since Mono is so large, and there are so many interesting things being done with it, I find it challenging to find a good topic to discuss with a technical audience like FOSDEM.

I could do a general overview and give some high-level overview of what we are doing, but I feel that the FOSDEM audience is probably more interested in something more technical. So I should probably limit my presentations to two or three key topics.

Should I talk about what is available today, and what are people doing today, or should I talk about the future, and what we want to do?

Maybe the general session could be about the state of the project and where we want to go in the future; And the OpenSUSE session about the practical things that can be done today. Not sure.

What would you like to hear about?

Posted on 21 Feb 2007

Reflector 5.0

by Miguel de Icaza

Lutz Roeder has just released a new version of Reflector:

This time Reflector will work out of the box with Mono on Unix (no special handling or special flags) and will even detect the presence of your Mono libraries:

Recently, while implementing the second chunk of lambda expressions, I had to go through all the classes that derived from the Mono.CSharp.Expression and the Mono.CSharp.Statement classes to implement the "CloneTo" methods, and Reflector came in as a great tool to find those classes with minimal fuzz and without wasting any grep batteries in the process:

Reminder: the use of Reflector to look at third-party code is prohibited if you are planning on ever contributing to Mono. You are free to use Reflector to decompile Mono code though.

I would have blogged early this morning when the news came out, but I struggled betwen Consolas, Monaco and Tahoma for the screenshot. Solving the dilemma was only possible thanks to the extensive dinner discussion with Garrett and Jeff at Kashmir.

One great feature is the Reflector Analyzer to explore who exposes, uses, depends or inherits a given type:

There are no borders on the screenshots due to the way Compiz paints windows on the screen (a separate process paints the decorations).

Jackson has been fixing various issues in Winforms to improve the rendering. These screenshots are the result of his endless hours of work. Thanks Jackson!

Posted on 21 Feb 2007

Sierra Aircard 875, Cingular and SUSE Linux

by Miguel de Icaza

After being ripped off by hotels and airports for my Internet connections (with some places charging as much as 20 euros per hour, and your standard 10 euro per hour at CDG), I have purchased a 3G card from Cingular and a plan to use it internationally.

I followed the instructions on this blog post that covers another card on OpenSUSE 10.2.

With SLED 10 and the Aircard 875, the only difference is that I had to use a different vendor and product ID:

	# /sbin/modprobe usbserial vendor=0x1199 product=0x6820

Or alternatively dump that in the /etc/udev/rules.d/51-3g-datacards.rules file.

Once you configure the modem in yast as described in the above blog post, go to NetworkManager, and select the "modem0" serial connection. There seems to be a bug in NetworkManager, when the modem0 connection is active, the icon seems to go away (am guessing its not finding the icon for it, and hence the applet vanishes).

A few minutes later, you will be online.

Am still missing some tools to determine the upload/download speed, anyone have some good pointers?

Posted on 21 Feb 2007

Visual Basic Love

by Miguel de Icaza

Today we announced the support of Visual Basic.NET in Mono.

Visual Basic is still one of the most used languages in the Windows world, and with this release we hope to assist a large segment of the population to bring those applications to Unix with Mono.

Rolf developed the new compiler. The new compiler is fascinating because it is a VB 8 compiler (this means that it supports generics), but also because it is written in VB itself. This compiler was sponsored last summer by the Google Summer of Code (2006 edition).

The compiler on my laptop takes 12 seconds to compile itself (78,000 lines of code).

The new runtime (for 1.0 and 2.0) was developed by Boris Kirzner, Guy Cohen and Rafael Mizrahi at Mainsoft and just like the VB compiler it was written in VB, and it is made up of roughly 17,000 lines of code.

As some people have pointed out, the compiler and the runtime are not enough to run applications. A lot of the portability will be mandated by your API consumption. If your application is based on .NET 1.0, you should be ready to use Mono now. If you are using .NET 2.0, you will need to check whether everything your application needs is supported by using Moma the Mono Migration Analyzer.

Our 2.0 support these days for ASP.NET and the core is passable. It is not 100% there, but the ASP.NET Starter Kits should run, and so should applications like mojoPortal.

Posted on 20 Feb 2007

My Name

by Miguel de Icaza

I was reading Rolf's post where he complains that people never get his name right. I am used to it.

English speakers typically pronounce my name as "Mi-koo-elle", or "Mi-goo-elle", while the actual pronunciation is more like "Mig-elle".

Bonus Update: Also most English speaking people miss-pronounce "de Icaza" as "di-eye-kaza", but it is pronounced "the-eekaza".

Posted on 20 Feb 2007

Updated Main Menu

by Miguel de Icaza

Ted Haeger discusses the changes done recently to the Main Menu. Link to the video:

I love the main menu that Anna's team designed and Jimmy implemented. The KDE folks then improved upon the design and on this new iteration some of the ideas from the KDE design are incorporated.

The code is available from Gnome's SVN

Update: Someone at the office told me story of how the "Search" input box at the top of the main menu ended up at there.

In the early days of the main menu the search bar was at the bottom of the main menu, similar in spirit to Vista, but this prototype existed before Vista integrated it.

Garrett created a "Gnome Desktop" with HTML and Javascript a few months back, and they used this HTML-based desktop to quickly try out many ideas with different people.

During the routine usability tests that are conducted in the Cambridge office, one of the tasks that was part of the test was something along the lines of "Find the document that contains foo". But people would not use the built-in search, they did not notice it on the main menu. Instead people went to the file manager and started opening file by file to find the document.

When the search was moved to the top, the subjects in the usability tests immediately started using it.

Then Vista released their first menu with search integrated at the bottom of the menu. I have been wondering if the guys in the Vista team had conducted any similar tests with their start menu.

Joel posted a few months ago his complains about the logoff functionality in the Vista menu. The developer involved in implementing that bit for Vista then blogged about it and followed up here:

Then someone from the MacOS team weighted in and described the process used at Apple.

From Ted Haeger's video you can see that logout/shutdown also got redesigned with the new menu. I do not know the story behind how it got implemented (there are now two options: shutdown/logoff in the menu) and both bring up two dialogs with further options.

It would be interesting from someone on the Novell Desktop team to blog about that process to complement the Vista and OSX postings.

Posted on 18 Feb 2007

Gnome Bittorrent Client

by Miguel de Icaza

Alan McGovern has created a fantastic BitTorrent client library in C#. The effort was part of last year's Google Summer of Code. Alan continued to tune it and implement many of the protocol extensions after the SoC was over so it is now a very complete.

We have a very early Gnome UI that was created last year, but it has not been updated very much, and it could really use some work to get it updated.

The library these days is quite mature and the command line client works well, but we really ought to have a Gnome UI.

There is also a case to be made for a simple and clean UI for Bittorrents.

The library, as well as the simplistic UI can be downloaded from here (tarball is here).

A Winforms UI should also be possible, and am sure our friends in the Windows world would appreciate it.

MonoTorrent Update

Alan posted some updates on the current state of the library:

uPnP support has been enabled in MonoTorrent using Mono.Nat. So all you people with uPnP routers no longer have to worry about manually creating the port mapping in your router. It'll all be done automagically (all going well ;) ).


Disk writes are now fully asynchronous, but now will automatically throttle download speed if you are downloading faster than your harddisk can write. So you won't ever get 100s of megs of ram being used and 100% cpu usage when exceeding your write speed.

Upload and download speed calculations have been improved drastically (ish) for torrents. What i did before was calculate each individual peers upload and download speed, then sum up that for all connected peers to see a torrents overall download rate.

Posted on 17 Feb 2007

Compiler Updates - C# 3.0

by Miguel de Icaza

Progress on the C# 3.0 front.

Marek Safar has started blogging. Marek has been a contributor to the Mono C# compiler for a long time and has made the compiler very pleasant to use (fixing bugs, improving errors and warnings and doing some large changes).

Today Marek checked in his code to add C# 3.0 Extensions Methods to the compiler. More about it on his debut blog entry.

In the last couple of weeks I implemented the parsing support for C# 3.0 lambda expressions and coded the support for explicitly typed lambdas. Today I added support for overload resolution in lambda expressions.

Implementing lambda expression support in the compiler was challenging and incredibly fun.

Parsing Lambda Expressions: The first problem was that the grammar for describing the parameters in a lambda expression caused a lot of conflicts with our yacc-based parser. For example, this is a valid lambda expression:

	type var = (x, y) => x + y;

The above is problematic because a parser would not be able to tell when it finds the first open parenthesis if it was a parameter list for a lambda expression, or if it is just a parenthesized expression).

I originally feared that lambda expressions would force us to rewrite the parser from yacc into a hand-coded parser.

But I came up with a cute solution: when the tokenizer sees the first parenthesis, it starts a minimal hand-coded top-down parser that will parse the lambda parameter list plus the optional arrow, and depending on the result return either a OPEN_PARENS or a OPEN_LAMBDA_PARENS token.

Implicit Typed Parameters: The second challenge was implicitly typed parameters. Unlike anonymous methods which require the type of the parameters to be specified, lambda expressions do not require them, so it is possible to write code like this:

	delegate string rets (string s);
	delegate int reti (int i);

	Foo (rets s)
		Console.WriteLine (s ("hello, "));

	Foot (reti i)
		Console.WriteLine (i (10));
	Foo (x => x + "world");

The complication is that the lambda expression 'x + "world"' needs to be probed for validity against `reti' and `rets', this means that x can be either a string or an int.

For this to work, I added a cloning infrastructure that would clone blocks and expressions and attempt to resolve each expression without side effects until a valid lambda expression is parsed.

Return Rules: Finally, the last interesting bit was the implementation that allowed code blocks or expressions to return values. The body of a lambda expression can be either a block or an expression.

The problem with expressions is that depending on the delegate type, we might or might not be interested in the result of the expression (void return, no interest; typed return, interest).

I believe I have a quite elegant solution in the form of the ContextualReturn statement. This is a Statement that is pretty much a copy of our "Return" statement implementation. The only difference is that it would become a "return-with-value" if there is an expected return type and would become a "expression-statement; return" in the case that this was a void return.

Posted on 15 Feb 2007

Jon Lech's on Music

by Miguel de Icaza

Jon deconstructs the arguments from Steve Jobs recent letter:

Steve takes as many poetic licenses as necessary to portray himself as the David battling the Goliath.

Jon has more on his DRM blog.

Am all for abolishing DRM .

Posted on 07 Feb 2007

Packages for Mono on the Nokia 800

by Miguel de Icaza

Jarosław Pendowski wrote me to say that he has created proper packages for Mono on the Nokia 800 and the Nokia 770.

His preview packages are here

Jarosław is looking for feedback on what else to package. Please comment on his blog.

I personally think that we should have all the assemblies shipped in units and have proper dependencies. So if an application uses Gtk# and XML, only the dependencies required are installed (System.xml, gtk-sharp*.dll and family).

If an application needs Windows.Forms and System.Data, only those and its dependencies get installed, but there would be no need for example for Gtk# in that case.

Posted on 05 Feb 2007

Mono on the Nokia 800

by Miguel de Icaza

I have good news for everyone that has been asking about how to get Mono on the Nokia 800,

Michael Dominik has posted a HOWTO document to build your own version of Mono from source code on the Nokia 800.

This is still a developer package to get things going. Ideally someone that understands the Debian packaging system could do the right packaging. My knowledge of Debian packages is limited to the fact that they use the ".deb" extension.

Posted on 04 Feb 2007

Mono in Games

by Miguel de Icaza

I have talked about Otee's Unity3D in the past. A company that is building a game runtime and development environment.

Their game runtime provides physics, 3D rendering, audio streaming and execution of developer provided code. Developers can write code in C#, Boo or Javascript, the code gets compiled into CIL, and the Mono runtime turns that into native code, so your javascript is actually compiled down to x86 code.

The guys at Unity have a few interesting updates:

Global Conflicst/Palestine: Global Conflicts is about to be released. This game is not a point-and-shoot game, in this game you play a journalist and its your job to interview the players in a conflict.

CNN interviewed the game developers here and discussed the game:

WolfQuest: A network based game in which you are part of a wolf pack.

A video for the wolf-hunting game.

Libraries: Starting with Unity 1.6 it is now possible to use externally developed libraries, in the past all the code had to be bundled and managed inside Unity.

This will be incredibly useful to have game widgets that can be reused across multiple games (on-screen keyboard entry, scores, buttons, scrollbars and all the rest).

BigBrainz: an educational game vendor is moving their games development to Unity.

More: Unity's updated gallery has many other games and applications (including the new Freeverse games for the Mac):

We are currently trying to find a collaboration with the Otee guys so the Unity runtime is available for Linux. What we would want is that every game produced with Unity would run unmodified in Linux.

Today they offer a great "Build for..." button in Unity that today generates game executables for Windows and Mac. Either as standalone programs, or as "web plugins". What we want is for them to be able to add Linux to the mix.

I would personally love to see MonoDevelop running with Gtk+/Quartz so that game developers could use a more advanced IDE than the current text editor that they are using with Unity.

Update: Otee is hiring.

If you live in Denmark, and you have experiences with games, low-level coding and consoles, you might want to apply to their job posting. They are looking for Nintento Wii developers.

Posted on 03 Feb 2007

Spain, Badajoz, Madrid

by Miguel de Icaza

Am going to Badajoz, Spain to the Free Software World Conference.

I will be in Madrid on Monday and Friday nights, if people want to get together, drop me a line. I was thinking dinner at Rias Bajas with Juantomas, Roberto and Ismael.

Posted on 03 Feb 2007

Terror in Boston

by Miguel de Icaza

Bruce Schneier discussed the Non-Terrorist Embarrassment in Boston.

For hours of fun, check Sadly No!'s coverage of the response from the paranoid districts in the blogosphere.

Joe has the best T-Shirt material in his office. Joe, we want CafePress T-Shirts!

YouTube interview with the guys, the reporters got pretty upset here.

It is hilarious, they refuse to answer any questions that are not related to hair "Am sorry, that is not a hair question". Then a reporter asks if they are afraid about their hair if they go to prison. The answer "That is a very good question".

Posted on 01 Feb 2007


by Miguel de Icaza

Yesterday Stephen Colbert's had the editor for some jingoistic web site, and one of the comments that he made caught my attention. He said something along the lines of "We have no problem against the Iranian people".

And I was reminded of Bush's statements from 2002:

The United States has no quarrel with the Iraqi people; they've suffered too long in silent captivity. Liberty for the Iraqi people is a great moral cause, and a great strategic goal. The people of Iraq deserve it; the security of all nations requires it.

There might have been "no quarrel", but it does not seem that Iraqis got a great deal out of this.

A well timed cartoon appeared on Reddit today:

Since the US seems to be in a path to extend the war to Iran (Condoleezza Rice seems to be avoiding a direct answer to Senator Webb), the following excerpt from from 2003 seems relevant:

The government of Iraq, and the future of your country, will soon belong to you.

The goals of our coalition are clear and limited. We will end a brutal regime, whose aggression and weapons of mass destruction make it a unique threat to the world. Coalition forces will help maintain law and order, so that Iraqis can live in security. We will respect your great religious traditions, whose principles of equality and compassion are essential to Iraq’s future. We will help you build a peaceful and representative government that protects the rights of all citizens. And then our military forces will leave. Iraq will go forward as a unified, independent and sovereign nation that has regained a respected place in the world.

The United States and its coalition partners respect the people of Iraq. We are taking unprecedented measures to spare the lives of innocent Iraqi citizens, and are beginning to deliver food, water and medicine to those in need. Our only enemy is Saddam’s brutal regime --- and that regime is your enemy as well.

In the new era that is coming to Iraq, your country will no longer be held captive to the will of a cruel dictator. You will be free to build a better life, instead of building more palaces for Saddam and his sons, free to pursue economic prosperity without the hardship of economic sanctions, free to travel and speak your mind, free to join in the political affairs of Iraq. And all the people who make up your country --- Kurds, Shi’a, Turkomans, Sunnis, and others --- will be free of the terrible persecution that so many have endured.

The nightmare that Saddam Hussein has brought to your nation will soon be over. You are a good and gifted people ---the heirs of a great civilisation that contributes to all humanity. You deserve better than tyranny and corruption and torture chambers. You deserve to live as free people. And I assure every citizen of Iraq: your nation will soon be free.

George W Bush
President's Message to the Iraqi People
April 10, 2003

Ignoring the political angle (the lies and deception of the administration) there is still an issue of execution.

These people have drank their own kool aid, they almost seem unable to accept that they should stop digging the hole they are in. It feels like the government is in the hands of Jim Jones and they are doing anything in their power to convince people around them to follow them.

It seems that war with Iran will happen.

My prediction based on the news from the past two weeks is that they will either provoke the Iranians to get their casus belli or an appropriate incident will be manufactured.

History of Iran

Patrick Cockburn's Occupation: War and Resistance in Iraq book contains a colorful popular saying.

The popular saying was something along the lines of Iraq was a religious country ruled by a secular government, while Iran is a secular society ruled by a religious government.

I found "All the Shah's Men: An American Coup and the Roots of Middle East Terror" a fascinating read.

The 1953 CIA coup on the democratically elected and populist Mohammad Mosaddeq had repercussions that went beyond 1953.

The overthrow of Mosaddeq and the appointment of the Shah lead to the the Savak repression police. This in turn lead to 1980's Islamic Revolution and the Hostage Crisis, which would lead to the funding of Saddam's war against Iran (the motives for the war, the lies and deception used to push Iraq into the war are described in great detail in Robert Fisk's "The Great War for Civilization" book).

Posted on 01 Feb 2007