Go forward in time to September 2006.
Next year during GUADEC, try not to laugh at innocent passerbys.
Cecilia González, my WSOP student, has totally hit the nail on the head. Evolution takes progressively longer to switch to one of its components (mail, calendar, contacts, etc.) because of a completely non-obvious bug in libbonoboui. Each time you switch components, Bonobo updates the menus and toolbars in the main window in Evolution. Menu items which remain static (File/Quit, Edit/Cut) don't need to change at all, but their keyboard accelerators get added again. This causes the global list of keyboard accelerators to grow without bound, making Evolution slower every time. Some menu items got their accelerators re-added seven times!
This is Cecilia's latest plot. The horizontal axis is the number of times you do a switch between components; the vertical axis is the time it takes to switch. Blue dots are the times previous to Cecilia's patch, and pink dots are the patched version.
Going to Paris is an extremely expensive way of eating good tartlettes de fraise. So, two weeks ago we spent Saturday morning making them from scratch.
I made the crust while Oralia made the custard filling.
When the crust is baked and cool, you put in the custard, the strawberries, and confectioner's sugar for the glazing.
After a little more baking to melt the sugar, you let the tartlettes cool down. They were really good! Next time we'll have to make both the crust and the filling a bit thicker; the former was a bit thin, the latter a bit too liquid.
A lovely emerald bug that visited us the other day. This is where you finally understand that a tripod is really useful for macro shots.
The Summer of Code is over, and Manu Cornet, my ass-kicking student, has finished his work for the One Laptop Per Child project.
Manu did three things:
A great analysis of how the laptop's display will affect theme engines. The laptop does not have a traditional RGB LCD like the ones in consumer laptops; this one is a super-bright, low-cost, low-power LCD with very interesting color characteristics. Along with this, Manu wrote a patch for Xephyr to do color swizzling: Xephyr is an Xnest replacement for the 21st century, and color swizzling is the kind of staggered grid of color pixels in the laptop's display.
A torture test for theme engines, and a benchmark. This is one of the long-standing tasks in the sanity checklist for theme engines, and I'm really happy to finally see it done. Manu's program has two parts: one that tortures each of the methods in a GtkStyleClass (the theme engine code), and another one that can serve as a benchmark to see how fast themes can draw their different components.
A patch to make the GTK+ text cursor stop blinking after a few seconds, to reduce power consumption. This was also Manu's introduction to the GTK+ internals.
I'm really happy with the way Manu has worked. His theme torturer and benchmark will help us make GTK+ and Cairo screamingly fast.
How Office 12 displays recent files, and makes them bookmark-able with push-pins. We need this.
Our performance-list is abuzz with discussion on benchmarking GTK+ and Cairo. Check it out! The main tool being used is Manu Cornet's torturer for GTK+ theme engines. Manu is my student for the Summer of Code.
She has a breakdown of the component-switching process, and it indicates that bonobo_ui_util_set_ui() is the function which gets slower each time it gets called. It looks like it has linear growth, getting slower each time it gets called. Note that e_menu_activate() also gets slower at a linear rate, but it doesn't take up as much time as the bonobo_ui_util_set_ui(). The other functions go up and down.
Sysprof shows something suspicious going on inside Bonobo or GTK+:
Why is gtk_widget_add_accelerator() using 7% of the time? This should definitely not account for such a large chunk of the time. Are accelerators getting added repeatedly to the same widgets?
Everyone cheer, for Sergey made libxklavier not keep unneeded translations in memory!
How to remove a small nest of wasps. Take a 5-centimeter ball of cotton, and soak it in rubbing alcohol. Grab the ball with kitchen tongs. Put fire to the ball. Carefully take the flaming ball of death under the nest of wasps (take care on the way to the nest; the alcohol will drip on the floor or on your basket of dirty laundry, and it will set fire to a new bath towel). Move into the nest quickly: wasps that are lingering around will get their wings burnt immediately, and they will fall to the ground. You can easily stomp them there. Others will fly away and not come back until later. Wait until the nest catches fire and is burned to a crisp. You can scrape it away later.
Today we burned 5 such nests scattered around the outside of our house: three in corners under the roof tiles, and two hidden behind the window shutters.
Today is Oralia's last day of vacations before she returns on Monday to her high school of death. In her usual fashion, she went totally crazy and made spicy fish balls for the main course and then flan for dessert. They were incredibly good!
Seen in the Boston cow parade, the Oil Cow.
Every time I open and close an Evolution mail composer, it leaks about 300 KB. On machines with more contacts, or with contacts that have images, it can leak many megabytes each time. Hans Petter, the unstoppable fake Mexican, has a fix!
Next year, GUADEC 2007 will be held in the Conservatory building in Birmingham, UK. One of the rooms for talks has a piano and timpani. People are suggesting that they be moved away during the talks, but this would mean missing a wonderful opportunity! Think of it. If you want to highlight an important point in your talk, you hit one of the timpani and BOOM, people listen. Or you you could do your talk in piano-bar style, with bad jokes and everything.
Has everyone read the old Silicon Graphics report on why their software is so slow? It is from 1993, and it shows that we not only reinvented the wheel, but also reinvented their mistakes. My favorite quote:
There are too many daemons. In a vanilla 5.1 installation with Toto,
there are 37 background processes.
DSOs [shared libraries] were supposed to reduce physical memory usage, but have had just the opposite effect, and their indirection has reduced performance.
Go backward in time to July 2006.Federico Mena-Quintero <email@example.com> Thu 2006/Aug/03 10:42:58 CDT