Go forward in time to August 2003.
After waking up today, I rose too fast and got dizzy. So I just let myself drop on the bed again and I started hearing a rushing sound not unlike hundreds of rattlesnakes together. I then realized that it must have been the sound of blood circulating near my eardrums, as the sound had a pulse to it, timed to my heart's beating. It was very relaxing and I didn't want the sound to go away. It disappeared slowly after a few minutes.
It's my 27th birthday today. Oralia got me a lovely pair of pants and new shoes! I can finally put my old, tattered sneakers to rest.
Duncan was doing GnomeCanvas bindings for C# today, and all the stupid little API inconsistencies are popping up one by one. What a mess we made years ago of that potentially beautiful widget.
I guess the important thing about the canvas is that it taught us the importance of high level APIs, with structured drawing being the specific example. It also taught us that complex widgets like ETable should not be based on heavyweight, generic engines like the canvas; the only benefit ETable got out of the canvas was double buffering, which is really easy to do by hand, and is a moot point anyways in GTK+ 2.0.
Things we fucked up:
The coordinate system. There are item coordinates, world coordinates (which are really item coordinates for the root canvas group), and display coordinates. There are disparate functions to convert between them. In a sane system there should be only display coordinates and item coordinates, with a single affine transformation to go back and forth between them. In GnomeCanvas we had three coordinate systems because we never removed the "pixels_per_unit" concept borrowed from the Tk canvas; rather than having an affine transformation to map the root item's coordinates to the display, we had a single zoom factor and a special case to handle it.
Using GtkObject arguments (now GObject properties) to set and query canvas item attributes rather than having explicit functions. The first error with the canvas that every programmer makes is to do gnome_canvas_item_set (box, "x1", 10, ..., NULL); and it crashes because that 10 should be 10.0 and the compiler can't check for that. Initially I thought having explicit functions would be API bloat; however, it turns out that canvas items don't have that many properties after all.
Mainly, thinking we had a good API for the libart-ized version one day before the gnome-libs API freeze. We landed a bunch of code and got bit in the ass once we tried to implement real stuff with it.
Had breakfast with Ricardo; it is great to see him again. We made a couple of pretty good cheese omelets and chatted while his million dogs ran around the kitchen table, begging for attention. Or bacon.
On Saturday Hadess helped me install xine-lib and Totem. I can finally play DVDs on my aging laptop.
Yesterday we went to watch The Magdalene Sisters with my dad. Quite a good movie, and as always it was a pleasure to chat with my father afterwards.
I think I nailed the Bonobo/Evolution focusing issues. This feels good; the code is really clean and we don't have the sort of horrid hacks that were necessary under GNOME 1.4. Committed the Bonobo patch and sent the Evolution ones for approval.
Now, tomorrow I need to look into EggMenu and EggToolbar to see if they have everything that Bonobo would need for GNOME 2.4. Bonobo should have to do nothing at all except proxy Egg stuff over CORBA; all the machinery should be in Egg.
Michael Meeks and Julia had their baby! I hope little Hannah does well.
Coincidentally, Michael kindly sent us a copy of Knuth's 3:16 and it arrived today.
Dentist in the morning. Drill drill drill for half an hour, then temporary plastic crowns. They are starting to hurt as the anesthetic subsides.
In the afternoon we went with Yosh and Bit for tacos al pastor at our favorite place. One cannot impress the tourists anymore; Yosh had already had such tacos in California. Fortunately, he says the ones here are much better.
On Friday we watched Bowling for Columbine at the Cineteca Nacional, which for once seems to be getting movies before the multiplexes do. It's an excellent documentary, and for me it puts a lot of things I saw while in the U.S. into perspective. While I lived there, which was years after the Columbine shootings, every week or two there would be a story in the news about some crazy kid shooting a couple of classmates. The scary thing is that I was starting to get used to such kind of news. In Mexico we only heard of the Columbine shootings because it was a major story, with many people killed; you never heard about the shootings with one or two victims.
Yesterday morning Oralia was in class, so I had plans to do useful things like:
Instead, I went downtown to get a stupid new modem to replace the one that got fried in the voltage drops a week ago. To make the trip less annoying, I stopped by the San Juan marketplace and got some good mozzarella from the friendly cheese vendors there — they'll feed you with bread, cheese, and wine while you decide what kind of cheese to buy.
As I was coming out of the overcrowded and overwhelmingly loud computer marketplace, our volcano Popocatépetl spit some ash, which became a fine layer of nastiness all over Mexico City. Fortunately there was some rain afterwards that washed most of it away. When the ash started falling, people got reasonably freaked out and they managed to buy all the mouth and nose coverings they could find from every pharmacy.
Today in the morning we went to Coyoacán for breakfast. In a music store we found Horacio Franco's new CD of Bach music; he took Bach's violin sonatas and partitas and transcribed them to baroque flute, and the result is simply amazing. He has to arpeggiate simultaneous voices in fugues and chords, of course, and it is a wonder that even the Chaconne from the 2nd partita is playable at all.
Later we went to visit my mother, and back home in the evening we watched A Clockwork Orange while eating canned lychee fruit.
Owen gave me some good tips about in-process focusing with BonoboSocket, and I've been playing with his suggestions. It looks like some quasi-egregious hacks are in order to fix things, just like the last time, but fortunately GTK+ seems to be doing the right thing this time.
Oralia and I have been sleepy and irritable all week; we are just not used to waking up early so that she can get to her teacher's course on time. It's getting easier to wake up every day, but the tiredness is still there.
Searching for a panel applet suitable for this tutorial I stumbled over a screenshot of an applet implementation of the old fifteen pieces game for another desktop environment.
"Another desktop environment"? This makes my day.
On Friday we went to the Cineteca Nacional to watch Les Glaneurs et la Glaneuse, which is an amazingly beautiful documentary. The most inspiring part is that of the guy who gleans at marketplaces by day, and at night teaches immigrants how to read and write. It is amazing to see how much perfectly good food is discarded by supermarkets and the rest of society.
When I worked at RHAD Labs, I went to Atlanta to visit my friend Luis while he was studying there. One day we went to a Burger King, got our meals, and took them to Luis's house. When we got back home we discovered that they had given us an incorrect order, so we went back to the BK. The guy at the counter took our bags of food, threw them into the trash, and gave us our correct order. We were pretty outraged and asked him why the hell he did that, and why he would not give that food to a homeless person instead. "Company policy", he said nonchalantly. When we asked if he would give us the bags back so that we could give them to a needy person on our own, he refused. From the movie it seems like it is the same everywhere.
On Saturday I went downtown to get a new power supply for our home computer. I also found an SMC wireless access point for $1170 pesos, not a bad deal at all considering that an Airport goes for about $3000 here.
Compay Segundo died yesterday. Sad, sad, sad.
I have no idea of why bonobo_socket_focus_in_event() is not being called, and this is biting my ass really hard.
Around Tuesday's blackout there were some rather evil power fluctuations that managed to fry our home computer's power supply, as well as the respective power supplies of our cordless phone, modem, and microwave oven. I can get generic multi-voltage power supplies from the street vendors near our home, but I'll have to go downtown for the computer's unless I want to get ripped off.
On happier news, Oralia started her English Teachers Course on Monday, and we are both pretty excited.
Last night we watched Finding Nemo, and it is totally adorable. Cinemex, in their usual wisdom, just showed the original English version in *two* fucking theaters out of maybe 30. (Why not watch it in any of the other big multiplex chains? Because they suck in their attention to the little details, and that's something Cinemex has done right.)
Two days ago we watched Dame tu Cuerpo, which was a lot of fun. It's good to see that Mexican cinema can pull off a good movie out of an overused theme.
It feels good to fix a mostfreq bug in a package you use every day.
Yesterday's blackout was quite a pain in the ass, lasting from about 18:00 to 03:00 in the morning. Today morning we had another one starting at 09:00 and ending at 10:00. Apparently yesterday afernoon's rainstorm made a mess of large parts of the city.
I've been debugging GTK+ and bonobo focusing in Evolution, again, and it is discouraging to see that so many things regressed between 1.2 and 1.4.
My bicycle has a flat tire; the rubber is cracked and something eventually managed to put a hole through it. I need to get a new tire this week, sigh.
I got two new optical mice today, one for my desktop box at work and a nifty little cordless USB mouse for my laptop. I used to have a ball mouse on my desktop, but the mechanism would get full of gunk really quickly. I'm in heaven now.
Bleah, long blackout in the afternoon.
As of today Oralia and I have been married for two years. I could not be happier!
My uncle Ricardo invited us for lunch at his and Sonia's house. He cooked some delicious Japanese food: gyoza, yakitori, sauteed asparagus and cabbage, and miso soup. We talked a lot about London, as they were there years ago for their doctorate studies.
In the evening we went to a bookstore and got our anniversary present: a really pretty edition of Homer's Odyssey.
A large exhibition of Josef Koudelka's photographs is coming to Mexico, and opens next Wednesday! I'm thrilled.
Tonight we went to the Mexico City Theater to watch a stage version of William Blake's The Marriage of Heaven and Hell. The music is by Jorge Reyes, and it was pretty good. The acting was fine, but the actors could really have benefited from stronger voices.
Last Saturday morning we went to the San Juan marketplace downtown, which is where chefs go in the early morning to buy really fresh produce, fish, and meat. We found a really good cheese seller; we got Parmesan, a delicious Roquefort, and some French cheese made in two layers separated by ash. We'll have to return once we decide on what we want to cook with exotic ingredients; it is really easy to go crazy in that marketplace if you don't know what you want — everything looks so scrumptious.
Catnap in Dublin (photo by Oralia):
Last night we went to watch Ripley's Game. John Malkovich is completely adorable, even if the rest of the movie is not as neat-looking as the previous Tom Ripley movie — it seems there have been quite a few movies made from these novels; we'll have to see the older ones.
Today I spent a good part of the day tracking down a funny bug. In the Evolution mailer, Control-t toggles threading on the message list. Also, anywhere within the shell Control-Shift-t creates a new task for your task list. However, with Caps Lock turned on, Control-t was causing a new task to be created rather than toggling message threads.
So I rebuilt my bonobo with debugging information, then GTK+, and after having my laptop swap its guts out while running gdb on the whole mess, it turns out that there is no bug there. Owen gave me a tour through the GTK+ accelerator and keymap code, and it turns out that the culprit is the piece of shit GKB applet and its broken keymaps.
Now, the thing is, I use GKB because a) it comes with GNOME, and b) it lets me switch to a Spanish keymap easily. But this is the third time I've been bit by a similar GKB-induced stupidity. The first time was when hitting Shift-F1 through Shift-F10 didn't generate just that, but rather F11 through F20. Like my keyboard has F11 through F20 keys to begin with. The second time was when it was generating something completely bogus instead of Shift-Tab, which one uses for changing focus.
There's this new thing called gswitchit, which everyone is raving about, and I'm very disappointed about GNOME 2.4 not having it in its list of modules. Compiling absolutely necessary packages by hand these days just feels so old.
I'm really enjoying reading Peter Shaffer's Equus. Why did I not read any plays after reading Arthur Miller's Death of a Salesman years ago, which was also great?
Maybe bugs repeat themselves, just like history. It was one or two years ago that I fixed a bunch of focusing bugs in Bonobo and GTK+ 1.2 for Evolution. Now, Evo for GNOME 2.2 seems to have very similar problems. They are not as obvious as the original bugs because the underlying code is better. Still, it is discouraging to see that these things need fixing all over again. It is tricky code and there are way too many layers involved; if we did manage to get it right once, why is it broken again?
To quote The Bug Count Also Rises, "the bugs are infinite".
I got pissed off about having to maintain the monthly archives of my activity log by hand, so I wrote a chunk of elisp to do it automatically when I save the file. It also gives me permanent links to individual days, so I guess now I'm as cool as the blogging cabal wants me to be.
Go backward in time to June 2003.Federico Mena-Quintero <email@example.com> Tue 2003/Jul/01 17:40:12 CDT