Thursday, December 27, 2007

Christmas Vacation Hacks


There's been discussion about Evolution not handling some brokenly rfc2047 encoded message headers recently, so I ported some workaround logic from GMime to Camel yesterday. I think this should turn a lot of frowns upside down when Evolution 2.22 is released. The new rfc2047 header decoder in Evolution is now more accepting than Thunderbird's decoder[1], so I hope this will satisfy everyone.

The new rfc2047 decoder will now handle the following cases:

  • encoded-words embedded inside other tokens (e.g n=?iso-8859-1?q?a=EF?=ve)
  • encoded-words with LWSP in the encoded-text section (e.g. =?iso-8859-1?q?Look ma! there's spaces!?=)
  • some encoded-word tokens with unencoded special chars in the encoded-text section (such as ? marks and other specials - obviously this can't always work if a special sequence occurrs)
  • encoded-word tokens with no LWSP between them
  • no longer aborts if the encoded-text cannot be completely converted to UTF-8 from the charset provided, instead it will attempt to find a more suitable charset to use for conversion and/or replace invalid byte sequences with a '?'
This should fix all of the more common broken-mailer cases, or at least all of the ones that are worth even bothering to try and work around.


Did some digging and discovered how to document more things using gtk-doc, so GMime's documentation has been getting improved. All of the public functions in GMime now appear in the documentation (I had forgotten to add some of the newer API additions to the gmime-sections.txt file) as well as began writing documentation for each of the doc sections (which I hadn't known how to document previously).

You can find up-to-the-minute GMime documentation here as I continue to chug away at expanding it.

While porting GMime's rfc2047 decoding logic to Evolution, I discovered some areas I could improve in GMime too.

1. After having ported my GMime decoder logic to Camel, I was curious to see how Thunderbird handled broken rfc2047 encoded headers and so had myself a peek at mozilla/netwerk/mime/src/nsMIMEHeaderParamImpl.cpp and noted that my new logic in Camel would handle everything that Thunderbird would handle and more.

I also took a peek at KMail's rfc2047 header decoding logic and discovered Evolution is now more flexible than it as well (again, Evolution now handles everything that KMail's decoder handles and more).

Saturday, December 15, 2007

35 MPG

According to an article in the NY Times, the US Senate has passed a bill to force cars, small trucks and SUVs to achieve an average 35 miles per gallon by the year 2020. Unknown to me, apparently the current bar is at 27.5 mpg for the year 2008, but I can't help but chuckle at that one - perhaps I'm misinformed, but I don't think the average SUV sold today, in 2007, achieves 27.5 mpg or anywhere close to that. Cars, maybe, but not SUVs or small trucks.

Despite my doubts that auto manufacturers will actually adhere to this new standard, lets hope that they at least improve significantly over what they can do today.

In frustrates me to no end seeing so many SUVs on the streets of Cambridge/Boston and the neighboring areas. In my own unscientific estimation, close to 40% of the non-work-related vehicles driving around the city are SUVs and I have to wonder... why?

Is there some off-road driving that needs to be done in the middle of the city that I'm simply not aware of? Maybe they need to drive across the Boston Commons to avoid traffic?

Are these people driving off to the Great Outdoors on weekends and for some reason need an SUV? Like in those SUV commercials where young couples go off and drive through mountain ranges and settle on some cliff to have a picnic while enjoying the view of nature?

If those couples really enjoy nature so much, you'd think that instead of getting an SUV, they'd have bought a (cheaper) car, driven to a parking lot near some hiking trails, and hiked through the wilderness.

If everyone bought an SUV and tore up the wilderness every weekend to "get away", there'd be nothing to get away to after a few years. Everyone would just be driving to SUV parks (kinda like trailer parks, except even trashier).

Thursday, December 6, 2007


Just released gnome-volume-manager-2.22.0 - a bit early for GNOME 2.22, but seeing as how I rarely ever hack on this project anymore, I figured I should actually release a new version (last release was 2.17.0 from presumably a year or more ago).

This new release adds integration with ConsoleKit for detecting whether the user is local and whether or not he/she is active at the console.

The other major change it includes is the ability to execute autorun.exe and autorun.inf files on cdroms so long as wine is installed on the system.

I implemented this feature toward the end of the summer because I had attempted to help my grandmother migrate from Windows95 to Linux. Unfortunately, while she was OK with the GNOME desktop itself for the most part, she wasn't comfortable using OpenOffice (she wanted Microsoft Office 97) and she wanted to use the proprietary versions of Mahjongg/Sudoku/etc games that she was used to running on her old Windows95 machine. As I began to show her how to install/run Windows software under Linux using wine, I realized that the process could be a whole lot simpler/intuitive than it was by making gnome-volume-manager auto-magically run autorun.exe and autorun.inf files under wine for her when she plopped the cd into the drive.

...and the rest is, as they say, history.

Code Snippet Licensing

All code posted to this blog is licensed under the MIT/X11 license unless otherwise stated in the post itself.