Font Rasterization -- from Maxim

by Miguel de Icaza

Maxim ---of AntiGrain fame--- has written a fantastic analysis of the various text rendering systems used in Windows, MacOS and Linux and proposes some solutions to this problem: Texts Rasterization Exposures -- An attempt to improve text rasterization algorithms using only publicly available information:

Joel Spolsky in his article "Font smoothing, anti-aliasing, and sub-pixel rendering" [1] compares Microsoft and Apple ways of text rendering and explains why windows people don't like Safari. Text in Safari looks too blurry and that must be why. I want to go further and sum up my experience and observations about it. I'm not an expert in digital typography, but I "have something to say". At least, some ideas may be useful for the GNU/Linux community.

Posted on 08 Jul 2007

Basic Tuning of Mono's ASP.NET

by Miguel de Icaza

Someone was asking the other day about raw PHP vs ASP.NET performance. I do not remember on which forum this was, but I found on JuanCri's blog a couple of simple tips that can improve the performance of your apps:

  • Disable ViewState on forms that do not require it (put EnableViewState="False"). You can set this on a per-control basis for a page, or for all the pages.
  • Use the output cache on pages that load data from databases.. From JuanCri's blog, set the <% @OutputCache Duration="60" VaryByParam="None" %>.

Posted on 08 Jul 2007

The Pentagon Papers: How They Were Released

by Miguel de Icaza

Mike Gravel tells the story on how he released the Pentagon Papers and his involvement in stopping the draft. He is a great story teller. His speech is also quite funny.

The entire episode from Democracy Now is available here. The Real Player stream is here.

I loved the last bit about how they managed to publish the papers. When they were running out of sources and it seemed like MIT Press would not publish it, Beacon Press decided to publish them: they had the money and were willing to go ahead with it.

The Gravel bit (alone) here:

Posted on 04 Jul 2007

Mono Meets Facebook

by Miguel de Icaza

R Tyler describes how you can integrate Mono applications in Facebook.

His solution uses Mono's ASP.NET, Mono's Facebook-Sharp and he creates a sample application: Weather#.

Weather# combines Mono, with SOAP webservices to retrieve the weather information and render information specific to your profile.

Check out his tutorial. It covers how to use MonoDevelop to create ASP.NET applications.

Posted on 04 Jul 2007

Strong Words

by Miguel de Icaza

Someone uses better, accurate, and stronger words to succinctly describe Bush's presidential pardon from yesterday.

Posted on 03 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

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

Google and HMOs

by Miguel de Icaza

A couple of weeks ago, I was reading when I found a link to the Michael Moore new movie Sicko playing at 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

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

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/
==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

« Newer entries | Older entries »