Friday, February 09, 2007

Core dump

Today I'm joining the rapid fire blogging squad.

Roberto is moving back to Italy and last Wednesday was his last day at the office. Roberto is one of my best friends at Trolltech so I was incredibly bummed out by his departure. The office won't be the same place without him. Plus who will help me hack on a prototype GLSL jit engine that I wanted to do some research on? (rhetorical question, I'd only trust him with that anyway) Roberto is also, by far, one of the best hackers who ever worked on KDE so I'm very excited to say that Roberto and Trolltech came to an agreement by which Trolltech will sponsor Roberto for two days of the week to work on KDE.

This has been a bug fixing week so I didn't have any time to work on WebKit. Last week I did manage to finish off integrating SVG into WebKit QtI also played a little bit with combining native Qt application rendering from within WebKit. One can embed a whole native Qt window inside an html frame and then control the Qt application from javascript (signals, slots and properties of the window and its children are dynamically exposed). Here's a native Qt application (my transform example) rendered inside the advertisment frame on cnn.com (sorry for the depressing image).

For the last two days I've been thinking about adding basic high dynamic range color support to Qt. QColor is already suitable for it and extending it wouldn't be a big issue. QColor's internal representation is a union of unsigned shorts. Basic HDR support requires 64bit, where every channel is a so-called, "half". Half values have 1-bit sign bit, 5 exponent bits, and 10 mantissa bits. It's a format used, among others, in OpenEXR and Cg. In fact OpenEXR project provides a C++ half implementation under a BSD-like license. Along a CIELAB colorspace support that I wanted to add to Qt for a while now, support for HDR would open a slew of new possibilities. On a silly, desktop level - imagine a desktop background the is light proportionally to the sun-light that you'd see for your currently configured timezone. On a more basic level HDR is pretty much essential for any kind of image processing/editing nowadays. I'll most likely write another blog dedicated to color-theory and things I'd like to fix/implemented in Qt that are related to it. Google returns hundred thousands of HDR images so if you'd like to see what people do with it, you won't have to look for long. One of my favorite examples is New York at night by Paulo Barcellos Jr that can be seen on fickr here.

During lunch at Trolltech there's only one kind of yellow cheese available. Climbing to the highest-levels of good-faith and stupidity I assumed the cheese would absolutely have to be vegetarian (many cheeses is still made with natural rennet, which is taken out of lining of young cattle's stomachs). Yesterday one of the people pointed out that it most likely isn't. Today morning I called Tine, which is the biggest dairy producer in Norway (and one whose cheese Trolltech buys) to ask them about the situation. The result was, that of course, the cheese is not vegetarian. If you're a vegetarian, do not eat cheese or any products containing it while in Norway. For me the bottom line is that for the last few months I've been having non-vegetarian cheese for lunch putting me right now in levels of pissed off/disappointed that I've never been at (you know that silly questions about graphics you wanted to ask me? you might want to wait with that a few days).

You might try to see if you can get imported Italian, French or English cheeses. Many of those countries' cheesemakers have switched to vegetable rennet substitutes for animal health concerns. Might be more expensive, but if the OH GOD DAIRYYYYYY craving in a definite need, then it's worth it, right?

Can you get rid of the needless 4-pixel border surrounding the SVG image and CNN website? Here's a magnification of what I'm refering to.

These excess borders occur all over KDE and Qt apps, especially where widgets are nested inside one another. Here's another example from Kubuntu's System Settings -- there are two problems: 1) each tab has its own border, when they should only have one combined border; and 2) there is a huge border at the bottom of the window that just shouldn't be there. Isn't there a way to combine borders of nested widgest into a discrete single-pixel border?

vegetarian yellow cheese... even in the country that is known for it (i mean holland here) it is very hard to get -- although the situation is changing for the better.

rennet is a by product. cows are not especially killed for it (that i know). if they would have to kill a cow for the rennet then the substitute (i heard some substance extracted from lemons) would most likely be cheaper so much more used.

being a vegetarian helped me a big deal in life, but choices like thes... for instance: i eat cheese, but i don't like to buy it; i walk leather shoes; and i know that in the bread we eat in holland often a some non-vegetarian ingredient is used (ever saw an ingredient list on a 'fresh' bread? it is supposed to be quite long these days); i rarely eat eggs and buy only the most biological ones, yet when other people serve me eggs i eat them no matter what.

you know many E-numbers can hold a non-vegetarian content?http://www.veggieglobal.com/nutrition/non-vegetarian-food-additives.htmhttp://en.wikipedia.org/wiki/E_number

someone told me that they can even use some ingredients in such small quantities that they don't have to be listed in the product.

i see it as an ongoing process, there is all shades of gray, we have to make up for our selves where to threshold it into black and white.

A vegetarian friend of mine told me that there are several danish cheeses you can find that are vegetarian. Such as Riberhus, Karoline's and Høst. If you can find those in Norway you should be safe, check arla.com

Regarding those 4-pixel borders, I believe what is going on is that when you place a layout within another layout, you want to set the inernal layout to have a 0 pixel margin (it defaults to a non-zero value). I see this all the time in my Qt programming where I set the margin's of internal QGridLayouts to 0. This is a big deal I agree. Without little touches like these apps feel bloated and unprofessional and elements visually appear t have non-uniform spacing.