Go forward in time to February 2005.
Two days after making pizza, we used the leftover dough to make another pizza-ish thing. One day Oralia and I were watching TV, and there was a program with a tour of French cuisine. The program's narrator had gone to Dijon and she was asking the locals about mustard varieties and how they could be used for cooking.
You spread the dough just like for a pizza, maybe a little thinner. You then spread a lot of Dijon mustard over it. Then you sautee sliced onions and tomatoes and put them on top of the layer of mustard. We added sauteed asparagus (they rule!) and mozzarella cheese. It turned out extremely good. As the mustard cooks it loses its power to make your nose implode, and obtains a delicious flavor instead.
Nat mentioned that recording the action on your desktop could be used to make better bug reports. What if the desktop started recording itself as soon as you log in? It could use, say, a circular two-minute buffer, and recycle itself when the buffer is full. You could then clip a section out of that recording to illustrate the steps that triggered a bug. And you could use it as a crude but desktop-wide replacement for Emacs's M-x view-lossage, which is tremendously useful when you say, "that's a cool function I didn't know! How the hell did I invoke it?".
Xalapa was cloudy and cold throughout last week, so this weekend we went to Veracruz. It was sunny and warm, and the sea was completely calm.
Oralia caught a nasty cold, though, so I've been giving her lots of tea with honey and lime juice to drink. I'll make her pee that cold out of her system, or else.
Steven Garrity compiled a nice list of the different (and inconsistent) save confirmation dialogs we use all over GNOME (check out the screenshots!). Related to that is bug #152850, about having automatic "File exists; overwrite?" confirmation from the file chooser when it is in Save mode.
Apple has this relatively new document on their software design guidelines. Good stuff in there. Also, they have a number of documents related to improving application performance. They are a good complement to our own performance section in developer.gnome.org.
Here's a good entry about the tools that Microsoft provides to create new language kits: locale information, keyboard layouts, shapers...
People have often talked about how the free software community is able to support "exotic" languages faster than Microsoft. But we seem to have only a bunch of scattered tools, scattered knowledge on which tools serve which purpose, and no well-defined list of steps one needs to take to support a new language/script/locale.
Two days ago we made pizza for the first time. We bought dough for French bread at the bakery. At home, Oralia made a great tomato sauce and then shaped the dough. For the toppings we used mozzarella cheese, artichoke hearts, sauteed asparagus and eggplant, peppers, mushrooms, bacon, and onions. We made two similar pizzas, one for that day and one for yesterday. It is by far the best pizza we've ever had.
Verbal, a man of impeccable taste, links to a good article on the irony of anti-consumerism. At the bottom of the article it says that one of its authors has a book subtitled Why Canada is as close to Utopia as it gets... we lowly Mexicans in lovely, sunny weather, will certainly and utterly fail to comprehend this book.
Mitch uncovered a bug in the file chooser, where you would call set_filename() on it, then map it to the screen, and the filename would not be selected. This is a regression, as that operation used to work. It turns out that my refresh-on-map fixes and some changes related to usability broke this.
The file chooser has turned into a delicate piece of code. There is relatively little code for the engine, and a lot of code to deal with all the subtleties of the user interface. The most delicate part of the code is its ::should_respond() implementation: this is the function that decides whether to terminate the dialog when you press Enter, depending on which widget has the focus, or what is selected. People still find things they don't like about its behavior.
So, I've started writing a set of automated tests for the file chooser. It's sad that we don't already have an architecture set up for this. In comparison, Eclipse has a fantastic automated test suite that goes through the GUI and everything.
Lenmex is a project to translate free software to indigenous languages in Mexico: Náhuatl, Zapotec...
GNOME Journal has an interesting article about having a liberal arts major use GNOME. This led me to think of Oralia's usage patterns.
Nested folders are not very clear. She's been learning how to make good use of them, after the initial "I'll just dump everything into ~/Documents" stopped being manageable. Often she'll type in a new document, hit File/Save, give it a name, but not pay attention to the default save location. Sometimes that will be ~/Documents, and sometimes the last folder she used in OpenOffice. Then she can't find the file. When I have to help in such a situation, listing everything under ~/Documents recursively and sorting by modification date usually lets her find her document easily.
Related to this is the fact that the recent-files list in the File menu is not very visible — she focuses on File/Open, File/Save, File/Print and ignores the other commands in that menu. Also, GNOME's System/Recent Files menu is practically invisible. What if the desktop always showed a list of the last 20 documents you have worked on?
OpenOffice has a bunch of usability problems. It frequently and magically switches to its default "Thorndale AMT" font even though the rest of the document has been set, by hand, to a more common font. Side note: when turning in her homework assignments, they have to be in Times New Roman; otherwise, her grade is lowered. Stupid instructors? Maybe, but OO.o switching to its own font out of the blue doesn't help, either.
She often has to make tables in her documents, which is a total pain in the ass. To make a table like this in OO.o...
| Table-wide header | |
| Side header 1 | Lorem ipsum dolor sit amet |
| Consectetur adipisicing elit sed do eiusmod tempor | |
| Side header 2 | Incididunt ut labore et dolore magna aliqua |
| Ut enim ad minim veniam quis nostrud exercitation | |
... requires creating a table of N rows by 2 columns, and then merging some cells or otherwise tweaking the borders for the parts that span more than one row/column. Try it in OO.o; it's painful.
I don't know what the right user interface would be for that. Perhaps there could be some easily-accessible tool that lets you toggle a cell's border simply by clicking on it. It would have some heuristics to see whether it makes sense to actually merge the cells adjacent to the border you clicked. Or something like that.
What pisses her off the most is not being able to watch or listen to certain media types. Her brother will mail her an AVI of the little nephew, and Totem won't be able to play it due to a missing codec — or it will just crash. Or she'll be googling around for specific music to take to her class, and she'll find a MIDI file. When she clicks on that file, it cannot be played because there's no sequencer installed.
I know codecs for proprietary formats are a big problem, but users don't care about that. "But it's an AVI file! You told me GNOME could play AVI files just fine!". If the media types that work out-of-the-box in Windows don't work in GNOME, we lose.
Printing. Sometimes, something gets fucked inside CUPS and it has to be restarted — by someone who knows the root password, who knows about /etc/rc.d, and who is far from being a "normal user". When CUPS chokes on certain print jobs, I often end up taking over Oralia's machine, printing again to a Postscript file, converting the PS into PDF (because, yes, "lpr thatfile.ps" makes CUPS choke again), and then printing the goddamn thing with Acroread. Which is proprietary, but so far has printed all PDFs just fine.
Mozilla printing (1, 2, 3). When it prints a scary page saying, "you must configure a Postscript level 3 to level 2 converter; use <big-scary-ghostcript-command-line>", users scream. And they scream loudly.
When you do something not particularly exotic in OO.o and save to an Office file (.doc, .xls, whatever), it will put up a scary dialog box saying, "some items may not be supported in the file format you picked". WTF is up with that? Especially when you loaded a Word file in the first place, tweaked some text, and re-saved it — clearly if it was able to import it, it should be able to save it back perfectly, right?
Did I save into a Word file or a Staroffice file?
"Some are just bugs". Yes, but try to get a non-technical user to use Bugzilla, or even worse, OO.o's bug tracking system. Go ahead, try it.
I've started reading this blog on Unicode. It's scary, funny, and informative at the same time.
Which reminds me, it would be great if someone well-versed in Unicode+Pango+i18n were to give a tutorial for hackers at GUADEC. Everyone knows that you must use the UTF-8 handling functions from Glib or whatever. But few people know about canonical decompositions, the bidi algorithm, grapheme boundaries, and all that exotic stuff. Want to submit a paper?
Thought of the day. Bad music is the one which I don't even want to own. Decent music is the one which I carry around on my laptop. Good music is the one for which I actually pause the music player when taking off my headphones to go to the bathroom, rather than just letting it play.
Michael Meeks is a father for the second time. Congratulations, Michael!
So, yes, I made the baked eggplant/zucchini/tomato thing. Oralia made salmon breaded with sesame seeds, accompanied with an aioli sauce with little pieces of celery.
First, sautee onions, garlic, and eggplant in olive oil; add salt/pepper. Add white wine and simmer for a bit. Before the eggplant is done, remove it from the sautee pan and spread it on the bottom of a baking dish.
Arrange sliced zucchini and tomatoes in alternating rows on top of the eggplant; boustrophedon is optional. Sprinkle with salt, pepper, thyme, basil, dill. Bake at 177°C for 30 minutes.
Finally, sprinkle with grated parmesan cheese and breadcrumbs. Bake for another 15 minutes.
It came out *really* good. Next time I'll omit the breadcrumbs and just add more cheese. The original recipe from the book didn't use wine and had savory instead of basil and dill. It also had peppers sauteed along with the eggplant, but we didn't have any at home.
This page has some cool ideas for drag-and-drop and related actions.
Some APIs come back to bite you in the ass. Bug #162617 is about the file chooser crashing if you have an unreadable directory with +x permissions. For example, consider a directory /foo with mode 711 that has another folder /foo/bar inside it, which you want to access. Part of the problem is the way GtkFileSystem is implemented. To effectively stat() a file, you first call folder = gtk_file_system_get_folder (fs, "/foo") on its parent folder, and call info = gtk_file_folder_get_info (folder, "bar"). However, the implementation of ::get_folder() as it was returned an error code if the folder is not readable. What it should do is return a folder object with no internal list of files, and unconditionally try to stat() the file you request when you call ::get_info(), rather than trying to pull out that information from its internal list of cached files.
Why go through so much trouble, you'll ask, when a simple one-shot API like stat() would be simpler? Well, having folder objects is convenient to the file chooser, and it works like that for historical reasons. It's obviously a leaky abstraction that couldn't deal trivially with some Unix corner cases without extra work.
For dinner today we splurged a bit: we made octopus tempura, then a tasty vegetable stir-fry over rice noodles, and then Oralia topped it all with a delicious rice pudding.
We found a very nice book about French cooking in the new public library in Xalapa. Tomorrow we'll be trying a recipe for baked zucchini and eggplant with cheese.
Oralia and I are back from a little vacation. We spent a few days in Veracruz and Puebla, and then the rest of the time in our beloved Mexico City.
One of the things that you don't realize when you live in Mexico City is just how dry the air is. Xalapa is above 80% humidity most of the time; Mexico City seems to be under 40% or so. Our noses became extremely unhappy over the first two days we spent there; afterwards, they were sniffly and tickly all the time. Amazingly enough, as soon as we arrived back to Xalapa, our noses felt better. I wonder how long it takes for your skin to get accustomed to a place.
Oralia's mom made tamales for New Year's Eve, and in her usual custom, they were quite delicious.
Go backward in time to December 2004.
Federico Mena-Quintero <federico@gnome.org> Mon 2005/Jan/03 14:42:12 CST