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"  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
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:
Posted on 08 Jul 2007
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.
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
R Tyler describes how you can integrate Mono applications in Facebook.
Weather# combines Mono, with SOAP webservices to retrieve the weather information and render information specific to your profile.
Posted on 04 Jul 2007
Someone uses better, accurate, and stronger words to succinctly describe Bush's presidential pardon from yesterday.
Posted on 03 Jul 2007
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
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
A couple of weeks ago, I was reading reddit.com when I found a link to the Michael Moore new movie Sicko playing at video.google.com. 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 video.google.com.
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.
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.
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.
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
Check Everaldo's blog for more details.
Posted on 29 Jun 2007
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/vgpreload_memcheck.so) ==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