I just committed some code in libopenraw that allow displaying digital camera RAW files in eog (or anything else using GdkPixbuf). The colors and the gamut are still off, that's because I only perform the demosaic.

Just to be clear, I haven't changed a single line of code in eog. It is the stock version from openSUSE 10.3.
AbiWord 2.6.3 is a nice cleanup release; make sure you get it!
[ Release Notes | ChangeLog | Download ]
“[…] the mission is to get the technology in the hands of as many children as possible” - Charles Kane. It’s good to see some clarity coming from the OLPC camp.
Clearly, it is AbiWord’s lack of videos like this that keep it from being the dominant word processor “in the industry.” We don’t have an equivalent, but I can fix that pretty easily.
I was in Extremadura last Friday on the Festival Tecnologico at Santos de Maimona, Extremadura, Spain. It has been great to see again their vision in open source. For those of you who do not know, Extremedura is the poorest region in Spain. They missed the industrial revolution all together; thus since the beginning of 2000 politicians have been trying to ensure that Extremadura does not miss the information society revolution as well.
I arrived to the event on Thursday evening. Olga drove me one hour and half (thanks so much) from Seville airport to Santos de Maimona. At night, we had dinner in a traditional and home-run restaurant with Olga, Alex and Tony from Fundation Maimona and Jose María Figueres, ex-president of Costa Rica and a wise man. My first dinner ever with a president or ex-president of a country. The conversation was focus on regional and rural development and information society issues. It was like been on a club of the Economist readers.
Next day the conference started. I had the opportunity to listen to Carlos Castro Castro (I actually helped to translated one of his articles into Catalan back in 2003). He talked about the strong commitment of the Extremadura government towards open source, materialized, among other things, in the Linex distribution.
Arround 14.00 the panel about open source and business started. My presentation was mainly focus on highlighting the possibilities that open source offers to companies and what Openbravo can provide as solution. I had lunch with a couple of people and some of the ideas interesting comments were made:
· Many people still thinks that an ERP in just an advanced accounting program. This is obviously far from reality not only from a functionality point of view also for the effort that an ERP solution requires to be implemented.
· Some people are abandoning home-grown solutions and looking at Openbravo as product and platform to build their next generation of solutions instead of investing in their own product (I blogged about this time ago).
Next stop is Galicia. I have a close relationship with Galicia since my book Software libre. Tecnicamente viábel, economicamente sostíbel e socialmente xusto (in Galician) was published two years ago. I'm going to be talking on the 14 of May at University of Vigo. Keep tunned in our site more details.
Just released a bug fix version of exempi. Version 2.0.1 address issues with error handling and some building issues on non-Linux systems.
This is likely to be the last 2.0.x release. 2.1.0 is on its way.
The winning Google Summer of Code applications for AbiSource have been announced. The AbiWord developers show strong support for the emerging OOXML ISO standard by the selection of 2 winning proposals about improving AbiWord’s OOXML import and (currently non-existent) export filters.
This year’s winning entries are:
PS. Please don’t flame me to death. We don’t particularly like or dislike the OOXML format itself. It was a joke. Funny.
Interestingly, we did receive quite a few applications about improving OOXML support, while we got zero OpenDocument related proposals. Apparently the support for the OpenDocument ISO standard isn’t strong enough in the F/OSS community to actually make an effort to improve support for it. Even when paid. Food for thought.
Just because I won't be at LGM 2008 to show this in a corner, here is a teaser screenshot:
It is still pretty much a work in progress, and is not actually up to the point where I can use it. Some keywords: XMP, digital camera RAW, non-destructive, asset management, GNOME, C++
Some miscellaneous topics:
That's all for now
@Jason: First of all, stop bashing Red Hat. Red Hat had nothing to do with any PackageKit design decisions. It makes you look silly.
Second of all, software distribution on Linux is horribly fscked. Yes it is. There is a reason that you can’t find any Linux binaries on AbiSource’s download site. We’ve tried and tried again, it is broken. Yes, even your fancy .deb/apt-get/synaptic stuff. We had software distribution solved in Windows land 5+ years ago, and Linux still can’t do it cross-distribution.
Now, for the first time in years we might actually get a good working tool that makes things like installing a dictionary from AbiWord *doable*. Hello, this is 2008, and installing a dictionary is still hard for normal users and developers alike. We have to deal with it on irc and via e-mail every single day, so we have a clue how bad it actually is.
So, what’s your solution to this all? Whine that PackageKit currently does not look at fd 0 so you can slam the user a VTE in the face to totally confuse the crap out of him. If showing a terminal is so precious to you, then how hard can be to whip up a patch to do just that? It can’t be more than 10 lines of Python. If that patch does not get accepted upstream, you can always put a custom patch in the PackageKit .deb.
Now stop the stop energy please.
Howdy folks! Thought I’d give an update on the AbiWord on Ubuntu work. I’ve put up packages on my PPA, and as of version 2.6.2-0ubuntu0~ppa17 is in “final shape” - that is, I’m reasonably pleased that I have all packaging issues resolved. We managed to get an MIR approved to bring in the headers for AbiCollab into Hardy if AbiWord itself gets in, so those builds have both TCP and Jabber/XMPP (Loudmouth) collaboration support, where the TCP one is a more polished and also compatible with Windows! Now, the remaining steps to get Abi 2.6 into Hardy is to get libwv-1.2 promoted to main - this used to be included in the Abi tarball, so I’m hoping this step is pretty straightforward - and the actual sponsorship of my AbiWord packages into Hardy. Here’s hoping it goes well! If you’re running Hardy and want to check out Abi 2.6 before it hits the regular repositories, just check out my PPA: https://launchpad.net/~abiryan/+archive I’m also gonna see what I can do to put up a backport to Gutsy and perhaps Feisty, but no guarantees there, just check it out
Owing to my current location in Valencia, Spain, the host city of the second Guademy conference, I’ve been able to register and go! If I know you and you’re going, send me a ping, and hopefully we can meet up there and say hey!
Oh yeah, and I’ll give in…
Manzanita:~ ryan$ history|awk ‘{a[$2]++ } END{for(i in a){print a[i] ” ” i}}’|sort -rn|head
82 cd
73 ls
63 ssh
30 sudo
23 (censored web site update script)
18 svn
14 killall
12 python
10 ps
9 mkdir
and
ryan@hardy-vm:~$ history|awk ‘{a[$2]++ } END{for(i in a){print a[i] ” ” i}}’|sort -rn|head
42 cd
38 dpkg-buildpackage
32 sudo
28 apt-cache
24 dch
20 ls
17 dput
10 svn
8 dpatch-edit-patch
8 ca
Interesting - I’ll let you guess which terminal I worked on the AbiWord package in…
AbiWord 2.6.2 is roughly what 2.6.0 should have been; 2.6.1 was scared, so we didn’t release that one :)
[ Release Notes | Download ]
Why not? After it seemed like only the lack of a package(r) was keeping Abi 2.6.0 out of Hardy, it became clear that wasn’t a good enough reason. Thus, I set about to get together a nice package of AbiWord 2.6.0, based somewhat on the original Ubuntu packages, but fixing as many packaging bugs as possible and simplifying as I went.
The result: My source package creates only an abiword, abiword-plugins, and abiword-plugins-gnome package (gone are the days of abiword-gtk, abiword-gnome, abiword-common) Furthermore, unless there’s a good reason for a plugin to not be included by default (good reason being defined as needing more dependencies), it’s been included in the regular abiword package. (This means that abiword-plugins only has the grammar and math plugins. Nothing is in abiword-plugins-gnome right now, since I haven’t poked around long enough to get the gnome-office stuff going yet.) Yes, this means ODT is in the main package, as is Microsoft Office OpenXML import and AbiCollab.
Oh, and by the way, that screenshot was taken while in an AbiCollab session with an AbiWord 2.6.1 prerelease build running on Windows. ![]()
I finally released exempi 2.0.0 The changes from previous versions are only for endian detection (I let autoconf do it) and some missing includes.
Now I'll branch, keep the 2.0 branch for eventual fixes, and master will stick for 2.1.
Appalled as to why almost no-one seems to be bothered by the death of the Declaration of Human Rights as we know it.
Tomorrow Wendy will finally get a PET scan to see what is causing her fever. She has had a constant fever ranging from ~38C to ~38.8C for about 6 years now (amongst an increasingly large number of other issues, suchs as inflammation of her eyes). The University Medical Centrum Groningen has been rocking so far, throwing all their technology at it to find the cause of her problems. Something our local hospital would and could not do. So next is the PET scan, which is typically used to 1) find cancer 2) find inflammation. Naturally we hope for the latter; not finding any problem would, as weird as it sounds, be a dissapointment. When they find something, they’ll try to biopsy it to determine what is actually going on.
(April 01, 2008 05:42 PM)
(March 30, 2008 11:15 PM)
It has been a few months since I showed up at the vocalist's jam session at Tarantos in Barcelona city center. Fantastic as usual and after having a good time, the session ends up arround 2am. I walk to pick up a taxi to get home, obviously getting the usual drugs and sex offers for which la Rambla has become famous in the recent years.
I manage to jump into a taxi and I find a touch screen in the passager's sit. I try to use it but it does not work.
Me: What is this mate?
Taxi driver: It is an advertisement thing. I get paid for having this installed.
Me: It does not seem to work.
Taxi driver: Let me reboot it for you.
(This is when I start to think how great software is nowadays)
Reboot starts and a little linux mascot shows up in the left corner of the screen and a Knoppix based system starts booting. Four euros of taxi later, the machine is finally initialized. It uses an old hardware and boots from CD. I can then use the application. It is not bad but there is very little content.
The system is called the Taxi Channel and it is an advertisement platform with some contents. A little research on the Net seems to indicate the service is operated by Taxicom and it is already working on a few taxis in Barcelona and Valencia.
Linux is definetly getting everywhere these days :)
No I won't be presenting a Gtk+ HelloWorld, but just the valgrind output of one. It actually does not matter what program.
==28869== Syscall param rt_sigaction(act->sa_mask) points to uninitialised byte(s) ==28869== at 0x40007F2: (within /lib/ld-2.6.1.so) ==28869== by 0x483A7A2: sigaction (in /lib/libpthread-2.6.1.so) ==28869== by 0x5562321: google_breakpad::ExceptionHandler::SetupHandler(int) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x556242D: google_breakpad::ExceptionHandler::SetupHandler() (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x55626D7: google_breakpad::ExceptionHandler::ExceptionHandler(std::string const&, bool (*)(void*), bool (*)(char const*, char const*, void*, bool), void*, bool) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x5561DE2: gtk_module_init (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x41AB1EC: (within /usr/lib/libgtk-x11-2.0.so.0.1200.0) ==28869== by 0x46472E9: g_cclosure_marshal_VOID__PARAM (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x463A918: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x464D9EC: (within /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x464F63E: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x464F988: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== Address 0xbec4e5f4 is on thread 1's stack ==28869== ==28869== Syscall param rt_sigaction(act->sa_mask) points to uninitialised byte(s) ==28869== at 0x40007F2: (within /lib/ld-2.6.1.so) ==28869== by 0x483A7A2: sigaction (in /lib/libpthread-2.6.1.so) ==28869== by 0x5562321: google_breakpad::ExceptionHandler::SetupHandler(int) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x5562445: google_breakpad::ExceptionHandler::SetupHandler() (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x55626D7: google_breakpad::ExceptionHandler::ExceptionHandler(std::string const&, bool (*)(void*), bool (*)(char const*, char const*, void*, bool), void*, bool) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x5561DE2: gtk_module_init (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x41AB1EC: (within /usr/lib/libgtk-x11-2.0.so.0.1200.0) ==28869== by 0x46472E9: g_cclosure_marshal_VOID__PARAM (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x463A918: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x464D9EC: (within /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x464F63E: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x464F988: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== Address 0xbec4e5f4 is on thread 1's stack
Apparently this is a known bug.
Also when quitting, --leak-check=full is revealing:
==28869== 2,048 bytes in 1 blocks are definitely lost in loss record 143 of 184 ==28869== at 0x4022AD8: malloc (vg_replace_malloc.c:207) ==28869== by 0x55623E5: google_breakpad::ExceptionHandler::SetupHandler() (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x55626D7: google_breakpad::ExceptionHandler::ExceptionHandler(std::string const&, bool (*)(void*), bool (*)(char const*, char const*, void*, bool), void*, bool) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x5561DE2: gtk_module_init (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so) ==28869== by 0x41AB1EC: (within /usr/lib/libgtk-x11-2.0.so.0.1200.0) ==28869== by 0x46472E9: g_cclosure_marshal_VOID__PARAM (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x463A918: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x464D9EC: (within /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x464F63E: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x464F988: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x463ECC0: (within /usr/lib/libgobject-2.0.so.0.1400.1) ==28869== by 0x463B68E: (within /usr/lib/libgobject-2.0.so.0.1400.1)
Hint: this is not in Gtk+.
Hint2: neither is it because it is written in C++
I have been using Gtkmm a lot for a personal project.
I discovered that you can pass boost::bind to Gtkmm signals (that use sigc), thanks to the magic of templates.
Something like that:
m_selection->signal_selected
.connect(boost::bind(&LibraryMainView::on_selected,
m_mainview, _1));
Why? Because I'm more familiar with Boost.Bind and for me it looks more flexible. Also because you can pass a shared_ptr<> to it, unlike with sigc::mem_fun.
A new linker for GNU binutils, gold, targetting ELF, has been announced. It is apparently 5 times faster to run than the regular GNU ld. It is written in C++, and Tom Tromey praise it for its performance and its coding style.
Off course it is still pre-release and will probably need a lot of testing as well as being ported to new target architectures, as it currently only support i386 and x86_64.
And I actually need to give it a try.

10 years ago, almost, Mozilla was released as Free Software under the NPL. It was supposed to be Netscape 5. I built it on a K6-200 with 64MB of RAM which was powerful at the time (running Debian)
Yesterday, I finally rebuilt it for the second time, using the Firefox 3.0b4 code base. I'm not sure how much code is in common either. The build was smooth and, by far, much easier than OOo. Actually the fun part is that in some configuration OOo leads to building xulrunner :-)
Now let's learn XPCOM the hard way.
[despertaferro httpd]# cat access-default.log| grep gbrainy-0.53.exe | wc
12661 250825 2729558
This is not funny if you think that the file is 70Mb and the machine where I have my homepage hosted was already receiving lots of traffic.
So, I decided to move the Windows build to SourceForge (they have better infraestructure) and release a new 0.61 build. All the information of the new location is available in the gbrainy's Windows page.
... and none of my circuits are functioning properly.
Version 0.6gbrainy 0.6 is available for download from:
* Implemented difficulty levels: easy, medium and master
* Complete revision of the texts
* 1 new calculation game and 3 new logic games
* Bug fixes
Gary Gygax passed away today. R.I.P. For those who don't know who he was, Gary Gygax invented a game, and a game concept in 1974: Dungeons & Dragons and the concept of Roleplaying Games.
The last few days I’ve been feeding the bug that annoyed me the most in AbiWord to Martin. One bug every day before I went to bed. Since Martin is about 18000 KM away, he had the whole evening to fix it. Nothing (well, if you only consider geekdom land) beats waking up and seeing a commit message in your IRC logs that kills your most hated bug! I wonder how long Martin can keep this up :-P
Rock on, AbiWord 2.6 will be neat!


I think that this time I can say "I told you so".
In 2005/09 I posted this to rant about the use of hidden and undocumented MacOS X API in WebKit.
In 2008/02, the Mozilla folks post this, this and this where they denounce that issue.
The difference is that at that time I didn't bother to provide data like performance comparison, probably because I decided that it was someone else problem.
To add the these post, Microsoft actually got sued, back in the early 90s, for using undocumented APIs in order to be ahead of their competition in the space of... office applications. And Apple employees still continue to drink the KoolAid claiming that one need to file a bug... or that these are not API bit SPI (sic)[1].
This is just one of the many frustration I no longer get by choosing only Free Software.
[1] actual justification given to me at one point
(February 29, 2008 03:18 AM)
(February 26, 2008 05:49 AM)
John Perkins should know - he was an economic hit man for an international consulting firm that worked to convince poorer countries to accept enormous development loans - and to make sure that such projects were contracted to U.S companies. Once these countries were saddled with huge debts, the American government would request their "pound of flesh" in favours, including access to natural resources, military co-operation and political support.I really enjoyed this book but I have to admit that I have mixed feelings about it. In one hand, many of the things that its author explains sound perfectly right and are aligned with what you probably have read in many other books (No Logo, the World is not for sale and so on), or more generally, about Latin-America history in the 80s. In the other hand, unfortunately, he provides very little evidence or data to backup most of his points.
Confessions of an Economic Hit Man is the story of one man's experience inside the intrigue, greed, corruption and little-known government and corporate activities that the U.S. have been involved in since World War II. The message is clear, unless these clandestine activities are stopped, they will have dire consequences for our future.
Sometime you have to check for different versions of a packages with pkg-config because of new APIs. I had to query the lazyweb and I ended up finding something. Here is the configure.ac snippet I wrote:
GNOMEVFS_VER=0 PKG_CHECK_MODULES(GNOMEVFS, [gnome-vfs-2.0 >= 2.14], [ GNOMEVFS_VER=214 ], [ PKG_CHECK_MODULES(GNOMEVFS, [gnome-vfs-2.0 >= 2.12]) GNOMEVFS_VER=212 ]) GNOMEVFS_CFLAGS="$GNOMEVFS_CFLAGS -DGNOMEVFS_VER=$GNOMEVFS_VER"
Something I haven't seen often is that PKG_CHECK_MODULES allow found and not found action blocks (yes this is in pkg-config main page). The default not found action is to fail.
The above code works as follow: check the highest version you need, if not found check the one you can eventually go away with. Define a symbol with a numeric version and pass it to the modules CFLAGS.
Then in the code do:
#if GNOMEVFS_VER >= 214 ... #endif
It is the season apparently. Last week I moved inside Novell from the OOo team to the SLED Desktop team to work on Gnome.
Today, I managed to get single-frame images working properly, including scaling them (which most of the built-in GdkPixbuf loader plugins don't get right, FWIW). What's left is:
Unfortunately, this won't ever have progressive loading, since I don't believe that GDI+ supports that.
Anyone who's interested in checking it out and contributing, the code is in GNOME's SVN, under the gdpi-pixbuf-loader module.
Starting to realize more and more how much different would be Obama's America from the Bushistan we know today.
I bought in a little bit after the bubble had started to burst. Luckily, I was smart enough to seek out a relatively low fixed-rate mortgage that was affordable (my mortgage costs me less than what I was paying in rent, before considering interest-related tax deductions).
I deeply sympathize with the people who were misled into thinking that they could afford their adjustable-rate, sub-prime mortgages. In a lot of ways, I'm a bleeding-heart liberal, and I can't stomach the thought of millions being kicked out of their homes. Especially those who were tricked into thinking that they could afford the houses they bought.
Whether these "let's bail people people out" plans might be what's best for the country, I can't say for sure. What I do know is that it hurts those people who were betting against the mortgage market. It engenders animosity in me, a fixed-rate borrower, toward people getting off easy on their sub-prime ARMs. And, simply put, plans like this one reward foolishness.
Rob's right - Mrs. Clinton's proposal is heavily biased toward borrowers. Without a doubt, borrowers acted irresponsibly, and should be made to see the error of their ways. But I can't feel bad for the originators. For over a half-decade, they handed out sub-prime loans like they were candy. No credit or proof of employment? No money down? No problem. Here's $400 grand. Enjoy your "jumbo" no-doc loan.
These originators knowingly acted irresponsibly, and shouldn't be surprised when the houses they've foreclosed on are worth less than the loans they issued. It was the originators who should've known that these people couldn't afford their loans. It was the originators who should've more accurately appraised the housing assets they were purchasing. And it was the originators who shopped around for underwriting companies to classify these untold sub-prime loans as "good debt", so that they could sell slice, dice, repackage, and re-sell them to mutual funds. Their irresponsible lending practices directly caused the bubble that's come back to bite them.
What Rob misses is that the lenders are going to get "short-changed" anyway, and rightly so. They should have had no reasonable expectation that the majority of these loans would pay out at the higher, adjustable rate. Their option isn't between getting the higher rate vs. the teaser rate, because millions of people are defaulting just as soon as they hit the higher rate. Their choice is between getting the teaser rate vs. what they'd get from selling a foreclosed property that's worth far less than the loan they originated. But maybe the market should be left to its own devices to decide what return these lenders should get on their investments.
And since we're talking about bail-out plans, it's worth mentioning that the lending institutions already got a bail-out in the form of a enormous cash injection, lowered interest rates, and new federal underwriting rules which allow the feds to buy bigger loans from these lenders, thus passing the debt and risk from the lenders onto the taxpayers.
The people who are really getting screwed are the ones who own this repackaged "good debt" in investments like mutual funds and responsible people who might legitimately need a loan to start a business or purchase a car, but can't get one at a reasonable rate due to the "credit crunch". And there's no plan out there to help us.
At the end of the day, the irresponsible originators get a big bail-out. It looks like irresponsible home-owners are about to get one too. And it looks like responsible people like me get a weakened dollar and a big drop in their mutual funds' value. Enjoy.
Long time no blog, mostly because I had nothing to say beside the usual rants.
This week at Novell it is hack week, and I decided to spend a good amount of time to put libopenraw into a better shape, mostly in the area of extracting and decompressing the CFA[1] data (the RAW data).
Recently I got my first major outside contribution for libopenraw as support for Minolta MRW files. Thanks Bradley, you rock!
So far this week I have done:
So far the file very well supported are:
(February 14, 2008 10:26 AM)


Powered by Planet!
Last updated: May 09, 2008 08:50 PM
Copyright (C) 1998-2005, the AbiSource community. All rights reserved.
AbiSource, AbiSuite, and AbiWord are trademarks of Dom Lachowicz. All other product names, company names, or logos cited herein are property of their respective owners.
Site feedback to webmaster@abisource.com