If you are using Mono from SVN you can use `xsp2' to try
Lluis' latest work on supporting ASP.NET 2 features: dynamic
menus, trees, master pages and the beginning of the grid
control are in now.

NPlot for Gtk#

I have updated NPlot/Gtk# to the latest version of NPlot,
the tarball is here

F-Spot smoother than ever

Larry has been doing a lot of work in making F-Spot
smoother, now it is possible to quickly browse through
pictures in full-screen mode. Also importing of images into
the library is faster than ever, F-Spot takes only a couple of
minutes to bring 6,000 pictures into the library now.

F-Spot

Photo Storage in Travel Times.

I got four gigabytes worth of compact flash cards and two
digital cameras for my trip to Istanbul and Beirut. The
problem is where to backup all this data.

I have seen that there is a plug for the iPod that
downloads compactflash images into the ipod. This is almost
ideal (I can use my old ipod). But are there other things I
should be looking at for backing up photos while traveling?

Mono Wiki Migration

On Nuclear War

There's a document called The
Essentials of Post Cold War Deterrence that was released
during the Clinton years by the Strategic Command, which is in
charge of nuclear weapons. It's one of the most horrifying
documents I've ever read. People haven't paid attention to it.

Next week I will be heading to the Turkish
Open Source Days in Istanbul. I will be talking about the
Gnome desktop and the Mono project there. The program for
the event is here

Since I was in the neighborhood, I decided to
swing by Beirut and Maria Laura is meeting me there a few days
after. The local Linux user group is setting up a small
presentation at the American University.

Mexico Politics

In Mexico the federal government is doing everything on its
power to avoid the most threatening candidate to the incumbent
party to run. They are doing this by using a loophole in the
election process which will prevent the candidate from running
for office. The story has been developing for a few
months, and a summary of it is available here.

President Fox and a judge from the supreme court have been
caught conspiring against the candidate (Andrés Manuel
López).

Love Erik

Erik added me as his buddy on the Amazon insta-ship program
so I do not have to pay for shipping and handling for 2-day
delivery.

New
York Times on their staged "Daily Show": "By my count,
"Jeff Gannon" is now at least the sixth "journalist" (four of
whom have been unmasked so far this year) to have been a
propagandist on the payroll of either the Bush administration
or a barely arms-length ally like Talon News while
simultaneously appearing in print or broadcast forums that
purport to be real news."

"The money that paid for both the Ryan-Garcia news packages
and the Armstrong Williams contract was siphoned through the
same huge public relations firm, Ketchum Communications, which
itself filtered the funds through subcontractors. A new report
by Congressional Democrats finds that Ketchum has received $97
million of the administration's total $250 million P.R. kitty,
of which the Williams and Ryan-Garcia scams would account for
only a fraction. We have yet to learn precisely where the rest
of it ended up."

Weekend

We finally released Mono 1.1.4 and Mono 1.0.6.
With this release we are recommending users to switch to the
1.1.x branch, as our automated testing and regression suites
are much better than they ever were on 1.0.6.

The runtime is faster, smaller, leaner and we have fixed
many bugs and architectural problems that were hard to
backport to 1.0.6.

Programmers that have only been using Mono, and have not
tested their code on .NET should keep an eye open for a few
problems that might be exposed with the stricter 1.1.4
runtime:

C# compiler is stricter when it comes to namespace
and typename resolution. Tomboy is known to not build
with it.

Marshalling: A few incorrect uses of marshalling
are now reported (Pointers can not reference marshaled
structures, you must use byref in your P/Invokes, this
affected F-Spot, but only marginally, F-Spot fallsback
into a slower operation mode).

If you create delegates and pass those to
unmanaged code as way to callback into managed land,
you must keep a reference to the delegate, or the
delegate will be garbage collected. This affected
some old Gtk# applications. You will receive a
warning message with the details to fix this problem.

The performance difference is very visible on web-based
applications. Our documentation system
for example is now instantaneous.

DB4Objects

We have also started distributingDB4Objects from Mono's web
site. For those of you that are missing ObjectSpaces, you
might find db4o not only interesting, but faster than what
ObjectSpaces could have been.

New Tool

We have included Paco's prj2make
on the latest release of Mono. prj2make is a tool that
produces Makefiles from Visual Studio or MonoDevelop
solutions. Specially convenient if you download some random
code from the network.

SHA-1 and SHA-224

This is the first release that ships with the security
sandbox infrastructure, Sebastien has the full story.

Last week SHA1 was broken. Because of this Sebastien is
trying to get users to vote for incorporating SHA-224 into the
Framework, see the details here.
Mono users can use the Mono.Security stack that ships with
this and more.

Installers for Mono

Installers: The folks at RawByte.com have been kind
enough to package Mono with an installer that
will work on all Linux systems. Many users love this,
specially those without Red Carpet or Yum, as they only have
to download a single binary and they get the whole system
setup: Mono, all the class libraries, Gtk# and XSP. Like our
Windows installer.

There are two downsides to using the installer: for those
using distributions with package management, the installer
wont register Mono on the system, which means that third-party
components that depend on Mono will still want RPM packages
installed (or people have resorted to use the --force
parameter for RPM). The second downside is that this ships a
Mono configured for the smallest common denominator, so speed
will suffer as Mono does not use the __thread-based local
storage and has to go through a slower (but backwards
compatible) system.

Hula

Hula's launch has
been very successful. The Hula Channel is very active: people
contributing patches, ports and various folks interested in
the dynamic web interface are hanging out there. There is
plenty of energy there.

We are planning on following Hula's plan to use MediaWiki
as the main page for the site, because updating the Mono web
site has always been a bit annoying.

Also, many people read Jamie's posting on Hula and
miss-understood that Jamie was actually praising Nat's final
direction on Hula, so there are plenty of comments along the
lines of `Jamie slams Hula' and `They are clueless, we are
not'.

Being very interested in politics, I see this phenomenon as
an interesting window into the human soul: if these very smart
technical people have problems understanding a post like that,
what does that say for people trying to discuss and debate the
finer points of public policy?

Paolo has an interesting post on the memory
footprint that Gnome applications incur when using Mono.
The following table shows the memory usage, Virtual Memory and
Resident Set Size for various runtimes running the same simple
Gtk+ based application:

Runtime

VSIZE

RSS

Writable Mapping

Plain C

10,568
KB

4,728 KB

.935 MB

Mono 1.1.4+

18,912
KB

8,200 KB

4.350 MB

Python

15,092 KB

9,164 KB

Mono 1.0

31,776 KB

9,916 KB

Perl

17,032 KB

10,028 KB

Kaffe 1.1.4PRECVS7-1

41,452 KB

11,136
KB

22.000 MB

Java HotSpot Client 1.4.2-01

218,612 KB

13,208
KB

174.000 MB

The important number to look at is the RSS, the VSIZE is
just useful as a reference.

Paolo explores the memory consumption from Mono, as well as
a few problems with small libraries.

Update: Paolo provided the numbers for Kaffe and I
included his writtable mappings column.

Other observations

Paolo commented a few more things today online.

Gtk+ 2.0 has grown quite a bit (Accessibility, Pango), here
is a contrast of Gtk 2.4, 1.2 and Qt. Sorted by RSS:

Runtime/Toolkit

VSIZE

RSS

Writable Mapping

C/Gtk+ 1.2

4,716
KB

2,168 KB

.483 MB

C/Gtk+ 2.4

10,568
KB

4,728 KB

.935 MB

Perl/Gtk 1.2

10,684
KB

5,424 KB

2.208 MB

C++/Qt 3.3.3

14,700
KB

6,900 KB

1.360 MB

Perl/Gtk 2.4

17,032 KB

10,028 KB

Ahead of Time Compilation

Note that in the numbers above, Mono was running in
Just-in-Time compiler mode. One of the things that we have
been working on in Mono in the 1.1.x series is improving the
produced code for precompiled code. Expect the numbers for
our next release to be even closer to C.

The new file format that Zoltan created is designed to
maximize the pages that can be shared by using position
independent code (PIC). By using PIC code various running
Mono applications will share the same pages in memory and only
a few pages for each library must be mapped in read-write mode
and updated.

This PIC code is typically slower than code that is JIT
compiled by Mono. The tradeoff that we are making is that
users that run more than one Mono application will benefit by
having the Mono applications share more code.

But if performance is more important than memory
consumption, users can pass the -O=-aot flag to the
Mono runtime. This will disable the use of the Ahead-of-Time
compiled code.

The documentation for the new file format lives in
mono/docs/aot-compiler.txt

This article was aimed at folks that are consumers of Mono maybe even
contributors of patches and documentation. My approach when
collaborating with Kevin Shockey was to give departmental developers a
way to build the latest and greatest. These are the folks that may have
even reported a bug to the list and gotten a reply like:

"Is fixed on SVN".

The twist on this witting is that the build approach does not use MS
.NET Framework, rather uses Mono to build Mono. We will later put out a
set of modified instructions to uncomment a couple of lines that we
suggest creating on the user's .bashrc file to enable the build using
csc.exe rather than mcs.