A friend was trying to get some of her laptop's function keys working under Ubuntu, and that reminded me that I'd been meaning to do the same on my Vaio TX 650P.
My brightness keys worked automagically -- I suspected via the scripts in /etc/acpi -- and that was helpful in tracking down the rest of the information I needed. But it still took a bit of fiddling since (surprise!) how this stuff works isn't documented.
Here's the procedure I found.
First, use acpi_listen to find out what events are generated by the key you care about. Not all keys generate ACPI events. I haven't get figured out what controls this -- possibly the kernel. When you type the key, you're looking for something like this:
sony/hotkey SPIC 00000001 00000012You may get separate events for key down and key up. It's your choice as to which one matters.
Once you know the code for your key, it's time to make it do something. Create a new file in /etc/acpi/events -- I called mine sony-lcd-btn. It doesn't matter what you call it -- acpid will read all of them. (Yes, that means every time you start up it's reading all those toshiba and asus files even if you have a Lenovo or Sony. Looks like a nice place to shave off a little boot time.)
The file is very simple and should look something like this:
# /etc/acpi/events/sony-lcd-btn event=sony/hotkey SPIC 00000001 00000012 action=/etc/acpi/sonylcd.sh
Now create a script for the action you specified in the event file. I created a script /etc/acpi/sonylcd.sh that looks like this:
#! /bin/bash # temporary, for testing: echo "LCD button!" >/dev/console
Now restart acpid: service acpid restart if you're
on karmic, or /etc/init.d/acpid restart on earlier releases.
Press the button. If you're running from the console (or using a
tool like xconsole), and you got all
the codes right, you should be able to see the echo from your script.
Now you can do anything you want. For instance, when I press the LCD button I generally want to run this:
xrandr --output VGA --mode 1024x768
Or to make it toggle, I could write a slightly smarter script using xrandr --query to find out the current mode and behave accordingly. I'll probably do that at some point when I have a projector handy.
If you just let things happen in a collaborative project with design/artwork needs, you will likely see a few people creating proposals that mostly cover the same ground. They all will base there work on their own assumptions regarding various aspects of the project. This might not even happen consciously, but be more about gut feeling.
The same applies to other collaborators providing feedback. Everyone has an opinion on matters of design. People talk a lot of what they like or don’t like, seldom giving reasons.
This way there is no shared idea of what should be achieved and how to judge proposals. No common ground for collaboration.

A collaborative project should have a documented mission statement/vision/set of goals. You need to define where you wan to end up, before you can take care of getting there. Otherwise you rely on chance alone. This is especially important for artwork, because it shouldn’t be about individual taste or the latest fashion, but rather be constructed to help further the goals of the project.

Even making some people unhappy is better than having no direction.

You should work from a mission statement, a project briefing, towards defining your audience, the desired tone and your message. This will be your measure to decide what is and isn’t appropriate regarding design and artwork.
Your audience, your users might be quite different from your collaborators.

There’s also the aspect of breaking a big problem down into a set of smaller ones. This helps with covering every aspect and detail. As far as there is subjectivity, it’s much better to deal with it in small parts instead of at once, for the entire design.
I’ve finally soldered on the LEDs for the Cylon DorkShield I designed and got built in a recent DorkBotPDX PCB run. I’m having trouble with the programmer, but I got the shield mostly working:

I never blog recipes. But while I was making rouladen today, I remembered when I first tried to make it, and discovered that the recipes on the web were all for something entirely different than the delicious rouladen my mom used to make. Mom got the recipe from a German babysitter named Betty who used to take care of me when I was little. It was fantastic and I haven't had anything else like it anywhere, so I asked Mom for the recipe, adapted it a little for my crockpot, and have been enjoying it ever since.
Apologies for the lack of precise quantities. This is how we do recipes in my family, and I'm not great at following precise instructions anyway, and in any case, the recipe originally came from Mom watching Betty make it once.
Flank steak - lay it out flat.
Mustard - whatever kind you have lying around. Paint a thin layer onto steak. I personally hate mustard, but it doesn't taste like mustard in the final dish so it's okay.
Bacon - maybe 5 pieces. Cook to not-quite-crisp, to get rid of some of the fat. I cut off some of the fat too, but I'm weird that way. Lay strips on top of mustard.
Bread crumbs - Sprinkle on top of bacon. A little or a lot, as you wish. Enough to leak out when it's rolled, as it thickens the sauce nicely.
Roll steak up and secure with skewers or string. Watch the grain and roll it so that when you slice it, you'll be slicing across the grain. This will seem weird and wrong and you'll want to roll it up the other way because this way you'll end up with a long skinny thing that doesn't fit in the pot. It'll taste just as good either way, but it'll be a lot easier to eat if you roll it up the right way.
Brown steak a bit in small amount of oil, any kind ... maybe use a little of the bacon grease.
Onions, sliced - I don't like onions, so I leave them out.
Tomato sauce - one regular-sized can. Pour over steak. Add a little water too, up to about 1/3 can, if you want more sauce.
Salt, pepper, spices as desired. I add a little cinnamon, to make it taste more like Grecian Chicken (another tomato-sauce recipe where googling gets entirely the wrong result, and if I ever find it I'll be sure to blog it) or like the chicken tikka masala at Bollywood Cafe (which has no resemblance to tikka masala anywhere else, but is wonderful). I usually toss in a couple of bay leaves too, and whatever else I feel like adding that day.
Cook in the crockpot maybe 6.5 hours on high, longer on low. Also works fine simmering in a pan on the stove -- check it about 2.5 hours but expect it to take 3 or so. It doesn't hurt to baste occasionally, or add water if it starts to look dry (in the crockpot that usually isn't needed).
In the last hour or two, toss in:
Raisins - maybe a double handful (a couple small boxes).
When it's done, it should be falling-apart tender.
Serving: Cut small rounds, ladle sauce over them, and serve with noodles or bread.
Enjoy!
I’m writing this blogpost from Boud’s kitchen. After 10 days of the Krita hackfest I feel quite dizzy. What I was doing?
According the action plan, this two weeks could be spent on some unfinished business. So we decided to work futher on the Adobe Photoshop brush integration. I fixed the type of the brush internally. Photoshop brushes for Krita consist of the alpha-map and the presets of the Photoshop’s brush engine. I ported the GIMP plug-in which loads the bitmaps in the abr brush. But the presets were not parsed.

Frob wrote the python script which I mentioned previously in my blogpost. Frob and Alexandre Prokoudine are working on reverse engineering of the Photoshop’s resources like brushes and gradients. And their work includes also parsing of the brush engines presets. So I ported the script from python to Qt/C++ for Krita. The last step is to integrate the script. That was not done yet.
Then I arrived to Deventer, the Netherlands. Dmitry Kazakov was waiting for me at the airport and we went together to Deventer from Amsterdam. The weekend was gone so fast. We discussed a lot of issues together with Peter Sikking, interaction designer. That was very very interesting for me. I also met other Krita hackers I haven’t met yet like Adam or Vera. It is nice to be together, because you can be very productive.Together with Dmitry we fixed a bug in few minutes. It would take much more time if we would do it like a Report Bug -> Assign -> Fix.
Week 6 was the hackfest for me, Sven, Cyrille and Boud here in Deventer. We decided to give a try to 1/4 computation of the brush mask to have faster painting. This time it was implemented correctly. Before I tried to copy the 1/4 of the mask to the other parts of the mask. This time I decided to compute the brush mask with bi-linear interpolation. I spent 2 days on it fixing some artefacts that started to occur. Final measurements showed that the 1/4 computation is more expensive then the function itself as this time the arctan2 was not involved. Also other benchmark with arctan2 involved showed that the code is equally fast as the version without the interpolation. Maybe some bigger brushes will be faster but I need to investigate. The code is in trunk, we just need to find it’s usage.
Another optimization was for flood fill tool. Write benchmark, valgrind, identify the bottlenecks, try to fix them, do it few times and I was done. Cyrille helped me a lot, he is very good developer and he had always some good advices how to get the speedup. Finally I managed to make flood fill run 3.5 times faster.
Here is table and you can see how time dropped:
Start of the optimization
1. 5,921 msec
2. 5,752 msec
3. 5,574 msec
4. 3,581 msec
5. 1,711 msec
End of the optimization
The flood fill is still quite slow in the Krita. I tested on 4096×4096 pixel image. The performance problem now is that there is difference function used in the flood fill algorithm and the function convert the pixels to LAB. I suppose that in GIMP it is probably done on RGB 8-bit colorspace. But in Krita there are many colorspaces and the best way to do the difference is on L channel in LAB as Cyrille told me.
Then we were in Amsterdam in the Blender studios. We met Ton Roosendaal and the Durian project team. It was exciting for us. I managed to talk with Angela, the Durian artist from Canada. I had nice chat with her, lovely person. I also managed to talk with Ben, the artist who tried Krita and he also produced some art with it. I was in Amsterdam for the first time. I managed to see arrogant Amsterdam bikers, nice architecture and the cannal. We had long but nice walk around the town.
At the hackfest we discovered more performance issues. So I spent some time on smudge brush. I started with simple fixes and I started to work on some complicated issues. I’m writing bitBlt function for our fixed device. Fixed device is used for brush masks and it is faster then using paint device with tiles as the brush masks are usually small and they does not require tiles and undo. We need more function for bitBlt when the selection is stored in fixed device. So far I the smudge is 1.42x faster.

Krita guys also started to work on various stuff that Peter Sikking proposed, e.g. we have a new widget and scratch box so I had to fix paintops also. Also I rewrote the deform brush. I’m trying to unify the brush engines in Krita and I wanted to add some new features to old brush engines, so rewrite was needed. The code was almost one and a half year old. I did a lot of work on brush engines also. Usually many fixes etc, but that is for other blogpost maybe later.
I would like to thank Boudewijn and Irina for taking care of us. The home-made food was “best thing ever” as Vera would say. I had nice time with the Krita team at Rempt’s house. Thank you for inviting me!
Busy week, I’m really tired and I’m looking forward for some rest and my home.
I think it was at the end of 2007 that I started to slowly get involved with Ubuntu related artwork after most of my previous efforts had to do with the Linux Audio scene.
Considering myself a member by my acts since a while, I only now got around to apply for it formally. It was found to be a clear case, making it a nice experience

Have a look at my Ubuntu wiki page to see my contributions, or my blog for lots of graphics, some music and not too many words
This is an ultra-conservative bugfix release.
This fixes a regression in MyPaint 0.8.1, where temporary layers did not disappear, eg. when picking brushes from the canvas.
I'd always wanted to do an Ignite speech. I always suspected the kicker would be format: O'Reilly's guidelines specified PowerPoint format.
Of course, as a Linux user, my only option for creating PowerPoint slides is OpenOffice. Historically, OpenOffice and I haven't gotten along very well, and this slide show was no exception. Happily, Ignite needs only 20 slides ... how hard can that be, right? Most of my slides were very simple (a few words, or one picture), with one exception: I had one simulation I wanted to show as a video. (When I give this presentation on my own machine, I run the simulation live, but that's not an option on someone else's machine.
First I wrestled with Open Office to create the non-animated slides. It was harder than I'd expected. I just loved having to go back and un-capitalize words that OO kept helpfully re-capitalizing for me. And the way it wouldn't let me change text format on any word that triggered the spellchecker, because it needed to show me the spellcheck context menu instead. And the guessing game clicking around trying to find a place where OO would let me drag to move the text to somewhere where it was approximately centered.
And when I finally thought I had everything, I saved as .ppt, re-loaded and discovered that it had lost all my formatting, so instead of yellow 96 point centered text I had white 14-point left-aligned, and I had to go in and select the text on each slide and change three or four properties on each one.
And I couldn't use it for an actual presentation. In slideshow mode, it only showed the first slide about one time out of six. The other times, it showed a blank slide for the first 15 seconds before auto-advancing to the second one. The auto-advance timing was off anyway (see below). Fortunately, I didn't need use OpenOffice for this presentation; I only needed it to create the PPT file. I ended up making a separate version of the slides in HTML to practice with.
But I did eventually have all my static slides ready. It was time to insert my movie, which I had converted to MPEG1 on the theory that it works everywhere. With the mpeg added, I saved one copy to OpenOffice's native format of .odp, plus the .ppt copy I would need for the actual presentation.
Then I quit and opened the .ppt -- and the video slide was blank. A bit of searching revealed that this was a long-known issue, bug 90272, but there seems to be no interest in fixing it. So I was out of luck if I wanted to attach an MPEG, unless I could find someone with a real copy of PowerPoint.
Next idea: convert my 15-second video to an animated GIF.
But how to do that? Google found me quite a few web pages that claimed
to give the recipe, but they all led to the same error message:
ERROR: gif only handles the rgb24 pixel format. Use -pix_fmt rgb24.
So what? Just add -pix_fmt rgb24 to the commandline,
right? But the trick turns out to be where to add it, since
ffmpeg turns out to be highly picky about its argument order.
Here's the working formula to convert a movie to animated GIF:
$ ffmpeg -i foo.mpeg -pix_fmt rgb24 foo.gif
This produced a huge file, though, and it didn't really need to be 1024x768, so I scaled it down with ImageMagick:
convert -depth 8 -scale 800x600 flock-mpeg.gif flock-mpeg-800.gifwhich brought the file size from 278M down to a much more reasonable 1.9M.
Happily, OpenOffice does seem to be able to import and save animated GIFs, even to .ppt format. It has trouble displaying them -- that's bug 90272 -- so you wouldn't want to use this format for a presentation you were actually going to give in OpenOffice. But as I mentioned, OpenOffice was already out for that.
If you do this, make sure all your static slides are finished first. Once I loaded the animated GIF, OpenOffice slowed to a crawl and it was hard to do anything at all. Moving text on a slide turned into an ordeal of "hover the mouse where you think a move cursor might show up, and wait 45 seconds ... cursor change? No? Okay, move a few pixels and wait again." Nothing happened in real time. A single mouse click wouldn't register for 30 seconds or more. And this was on my fast dual-core desktop with 4G RAM; I don't even want to think what it would be like on my laptop. I don't know if OOo is running the animations continuously, or what -- but be sure you have everything else finished before you load any animations.
I never found out whether my presentation worked in real Microsoft Powerpoint. As it turned out, at the real event, the display machine was a Mac running Keynote. Keynote was able to import the .ppt from OpenOffice, and to display the animation. Whew!
One curiosity about the display: the 15 seconds per slide auto-advance failed on the animated slide. The slide showed for 30 seconds rather than 15. I had written this off as another OpenOffice bug, so I wasn't prepared when Keynote did the same thing in the live presentation, and I had to extemporize for 15 seconds.
My theory, thinking about it afterward, is that the presentation programs don't start the counter until the animation has finished playing. So for an Ignite presentation, you might need to set the animation to play for exactly 15 seconds, then set that slide to advance after 0 seconds. If that's even possible.
Or just use HTML. The great irony of this whole story is that some of the other presenters used their own laptops, so I probably could have used my HTML version (which had none of these problems) had I asked. I will definitely remember that for the next Ignite! Meanwhile, I suppose it's good for me to try OO Impress every few years and remind myself why I avoid it the rest of the time.
While Bassam’s been editing the animatic in the sequence editor, we’ve been feeding him with boards and exploring a little with some concepts. A few days ago Pablo did some great designs for the train, and lately we’ve been doing some for the station.
Edited: Added the train concepts.
In the process of editing we found troublesome bug in the sequence editor where animation data gets linked to newly added sequences – this seems to be connected to old deleted strips. In an attempt to avoid this he’s been using a python script I wrote ( based on a suggestion by Colin Levy) that renames all strips with new unique names. This is a stopgap until we report the bug…
sequences rename script.py
(don’t worry, we’ll submit a bug report- it took us a while to figure out exactly what was triggering the bug, but we think we can make it repeatable now)
Last weekend I was at the Krita sprint, to work with them on defining their product vision. And hey, while I was there anyway, I could also help them with some UI first aid. Krita could simply not continue without having a vision. Without a clear definition of what they are trying to achieve, the project was threatening to go nowhere, at an ever-slower pace.
Now, I would hate to see that happen. Similar to the Beatles and the Stones, the animosity between free/libre graphics projects is blown out of proportion by the fans. The Jagger, Richards, Lennon and McCartneys of GIMP and Krita get along just fine.
GIMP definitely does not try to be the graphics application for everyone. So there is plenty of room for other applications to address user needs that GIMP does not want to cover. And although GIMP, Krita and other apps may have quite a bit overlapping functionality, their product visions may be different enough to prevent them from being direct competitors.
Even then, I would not have been upset if a large overlap with GIMP had been the result of Krita’s vision. I was simply curious to find out what it was. So I offered my services and got to play Mr. Wolf for a weekend.
These days I have have some criteria for doing pro bono jobs like this. Is it going to be fun? Is my work going to be appreciated? Am I going to work with some great people? Do I look forward to the travel and the location? It better be good. The Krita sprint ticked all the boxes.
Hospitality was great and the location could not be farther opposite to ‘air conditioned conference room at the airport hotel.’ Working in the living room of an old house in the middle of the historical town centre is a treat. I had never been in Deventer, but it turned out to be almost an open‑air museum of a cute, old Dutch town.
Our vision session was on Saturday morning and it felt very much like when I started working with GIMP: OK, it’s a graphics application but what are they trying to achieve? The impact of this was demonstrated the night before, when the Krita team was discussing some of their UI problems and I realised that without a product vision I simply was not able to help them in a meaningful way.
So on that morning we sat down and I explained to them that I was there as the interaction consultant and not as the‐man‐from‐GIMP; that I always do this method at the beginning of all my projects, starting as a complete outsider; that it is their vision, because Krita is their life; but also that their vision has to be formulated through the eyes of users (they don’t care that Krita is written in C++, for instance).
Then I set them off with the three magic questions—what is it, who is it for and where is the value?—and moderated the session from there on. I made sure that we got definite answers on all the questions, even when having to make a choice was no fun. I also made them realise how much hard work there was involved with stating to support certain user needs.
Before I travelled to Deventer I was both anxious and curious about the Krita–KOffice situation: a paint app with natural brushes as part off an office suite? The discussion of this took its time, stretching our session beyond lunch.
Essentially, all I had to do was show them that there were only two options (make sense of Krita being part of KOffice, or leave) and insist that they did not dodge the question. It turned out that Krita was already on a path of severing ties with KOffice and we reflected that in the vision by not mentioning the latter at all.
After the session I wrote up the vision, short and sharp, I like it that way, so it can be used as a tool in the project. After useful feedback by the Krita team and a final adjustment, it was ready for prime time:
‘Krita is a KDE program for sketching and painting, offering an end–to–end solution for creating digital painting files from scratch by masters.
Fields of painting that Krita explicitly supports are concept art, creation of comics and textures for rendering.
Modelled on existing real‐world painting materials and workflows, Krita supports creative working by getting out of the way and with snappy response.’the Krita product vision, as written by ps
I am really happy how coherent their vision turned out to be. Funny enough, there is about zero overlap with the product vision of GIMP.
Krita’s maintainer, Boudewijn Rempt, did an excellent write‑up of the far reaching implications of this compact vision. After he published it, he remarked that he could feel how carefully the words had been chosen and placed by me. Yes: nothing is a coincidence in there, it all fits together like an intricate puzzle.
The product vision was immediately placed on the Krita website, signalling what was already going on at the sprint: thinking, designing and working in a new, clear context.
Suddenly there was a clear basis for deciding which plugins should be removed from the standard distribution and moved to a online repository of user‐installed options. The vector tools are receiving a hard look at the moment, now that the focus is so solidly on painting from scratch.
With a product vision, I was able to help them with many a UI topic. We worked on the pop‑up palette; brush engine parameter input; the overall activity of setting up a brush, just right; brush presets, managing and using them; a strategy for dockers and dialogs on screens small and large.
I brainstormed UI ideas; rejected many bad UI solutions from a passel of other paint and pixel apps; made concrete solutions; outlined direction for big issues; connected the dots between related UI issues; concentrated on what it should feel like to work with Krita; I showed how even within the compact scope of the vision, plenty of diverse use has to be supported.
One thing I emphasised was to move away from ‘how would I like it’/input of a few users/looking at other apps for UI solutions. That is not the way to create UI, I’m afraid. Instead, the Krita guys should build up an understanding of the activity of many users that fit their vision and always make solutions for a hundred thousand of them.
It was interesting to see for me that solutions that I am working at for GIMP would not be fitting for Krita. This is not only a matter of having different visions—although it suffices. I noticed that also the different as‑is situation creates different context and leads to different UI solutions.
Wrapping up, I want to thank the Krita team for the great cooperation during the sprint weekend. At times it was quite intense, but always in a positive atmosphere. It is very gratifying for me to see in Boudewijn’s and Cyrille’s blog how they are charging ahead with their new‐found élan.
In honour of the recent discussions on foundation-list, I would like to resend everyone to this piece by Dan Spalding, which I’ve mentioned previously. It had a huge influence on me, and hopefully will on others too.
As a teaser, here’s an extract of the target audience:
Consensus decision making is a model of the society we want to live in, and a tool we use to get there. Men often dominate consensus at the expense of everyone else. Think about the man who…
- Speaks for a long, loud, first and often
- Offers his opinion immediately whenever someone makes a proposal, asks a question, or if there’s a lull in discussion
- Speaks with too much authority: “Actually, it’s like this…”
- Can’t amend a proposal or idea he disagrees with, but trashes it instead
- Makes faces every time someone says something he disagrees with
- Rephrases everything a woman says, as in, “I think what Mary was trying to say is…”
- Makes a proposal, then responds to each and every question and criticism of it – thus speaking as often as everyone else put together (Note: This man often ends up being the facilitator)
It’s rarely just one man who exhibits every problem trait. Instead it’s two or three competing to do all the above. But the result is the same: everyone who can’t (or won’t) compete on these terms – talking long, loud, first and often – gets drowned out.
This is a result of society’s programming. Almost no men can actually live up to our culture’s fucked up standards of masculinity. And our society has standards for women that are equally ridiculous. In one way, we both suffer equally. That’s why we all yearn and strive for a world where these standards – which serve to divide us and reduce us and prop up those in control – are destroyed.
In another way these standards serve those who come closest to living up to them. Sure, we all lose when a few men dominate a meeting. But it’s those men who get to make decisions, take credit for the work everyone does, and come out feeling more inspired and confident.
Like I said, Dan’s piece opened my eyes to my own bad behaviour, and also enabled me to improve as a meeting/round-table/discussion facilitator. Hopefully a reasoned reflective analysis of their behaviour by the most disruptive elements of foundation-list will also have a similar effect on them. I certainly hope so.
During this week, Boudewijn is hosting Sven, Lukas and me for a Krita hackfest, dedicated to bug fixing, performance, UI improvement. Among the major improvements brought by that week are improvement in the memory consumption, thanks to a collaboration between Dmitry and me, where I did some tracking and experimentation, and he found the actual problem. This fixed has allowed us to go from 2 minutes of drawing to exhaust my 2GB of memory, to make it possible to paint for more than 30 minutes, there are still some issues that need to be found and fixed. In the area of performance, Lukas have improve the performance of the flood fill by 60%, and I have reduced the time needed for some gradients by six (the other types did not seem to have the problem), unfortunately those improvements are not really visible, for some reason Krita currently spend a lot of time recompositing the image. While Boudewijn and Sven have been working on a scratchpad, as a new way to test new brushes settings, and working on a widget to input value that should be simpler when used with tablets, after Boudewijn’s call for help someone else has offered to help us with that.
Yesterday we went to Amsterdam to meet the Blender’s guys. Since most of us has never been to Amsterdam before, Boudewijn took us for a long walk in Amsterdam’s street (or should I say canal), which started in the overcrowded area around the central station, that we left as soon as possible to walk in more quieter area:

Then at the end of the walk we arrived at the Blender institute:

Where Ton took us on a visit of the Studio, and then we assisted to their weekly update, where all the members of team show what they have been working on, their difficulties and how to solve them. After the meeting, we went to a restaurant, as an opportunity to know each other, and to learn more on how their work, and in hope that one day Krita can be useful for them.

Tomorrow, I will go back home in Göteborg.
A well in Virginia (yeah, the one in the United States) measured a 2-foot drop during the Chilean earthquake in February. Apparently, the “regular sine-wave variations are due to the effect of lunar tides on the Earth’s crust”. I find that almost as intriguing as the quake effect.
WOW! I’m really speechless: this monday, Blendiac and WifeofBlendiac arrived! Last time we saw it was a year ago, but time flies
We are having some great times together, and I’m learning a lot from them.
I want to thank everyone who has contributed to make this possible, I take you all into account, I wish I had more connectivity in order to personally thank everyone but sadly even for posting this I had to wait till today because the website partially loaded and connection speed and bandwidth is nearly non existent.
But that won’t stop me to appreciate every tiny bit of effort that the Blender community put on me, that definitively compels me to give more of myself
From sponsorship support (that is huge for me
) to students support (oh, those are very appreciated because it means a lot of sacrifices for them) all around the world that’s something really beautiful.
The fresh papers and Blender videos I have received represent also an incredible amount of resources.
Blendiacs are very nice friends and I bet they’re like the rest of the huge Blender community: altruism, friendship, humbleness are the first words that came to my mind thinking of them and all of you
Anything that I can accomplish pales compare to this gesture. This feeling of family is what makes Blender community deserves the best 3D software ever
I will take the opportunity and send you via Blendiac several high quality video timelapses of particle fluids, they’re very needed
Thanks a lot ot everyone.
Farsthary
One of the dangers of having a real interaction designer look at your application is that they are apt to suggest that some special widget might make your app much nicer, much more efficient, much more usable. And they are right, of course. Which sucks because writing a custom widget that respects the application style is not fun, at least not in Qt, but I haven't seen any toolkit that makes it fun.
And a custom widget in this context is not a form with two or three existing widgets in a layout and some signals to connect them.
So let's look at the widget Peter suggested we use instead of KDE's or Qt's spinboxes and sliders. The needs are clear: we need a numerical input widget that shows visually what part of the total is enabled. Mouse wheel, tablet tilt and drag need to decrease or increase the value, clicking somewhere in the widget needs to set the value to that level. It should show the value as numbers inside the widget. Spinbox arrows and behaviour would be nice. It should have double and int support. And finally, it should have an option for exponential or segmented behaviour (1 - 10: stepsize 1, 10-100, stepsize 10, 100-100 stepsize 100).
So, what we are creating is a sort of legitimate bastard child of a progress bar, a spinbox and a slider, all in one area. Something that looks a bit like this, but less like a progressbar:
Well... Sven has spent half a day on this, I've spent a day on it... I guess this is not our forte. There doesn't seem to be much documentation on the topic of creating widgets from scratch. I've also been looking for exising Qt implementations, but haven't found anything. So... If there is anyone who knows where I can find a widget like this, or who would like to help Krita by implementing it, please, please, please tell me!
The alpha 1 version had a bad bug - not saving texture images - making it not a good test build. Here is the fixed version!
While Bassam’s been away we’ve been playing with concepts for one of the sequences in the movie. It’s been quite entertaining. Hmmm. The idea is to flesh it all out for storyboarding so we might move quicker into production. It’ll be a nice challenge.
Have we mentioned there’s Pun club on Thursdays at noon? We’ve also been doing improv acting on Wednesday nights.
Pablo did the nice colourful ones.
Adding a new feature is usually considered easy in the open source world, and then it is taken for granted. Removing a feature, on the other hand, it is a different story. It is not about making Krita less useful, au contraire, it is about making the best for our vision. But why remove a feature, they don’t disturb, or take too much space. They still come in the way and clutter, and what is the point of a menu entry, if you are never going to use it ?
We have mentioned in our blogs entry (by me in Krita meeting 2010 – day 1 and by Boudewijn Rempt’s blog) on last week-end Krita meeting, that we had now decided for a vision oriented toward painting.
Where does that leave photography ? Well clearly, it is out. And honestly, between Gimp (especially with their work on 2.8) and Digikam, there is not really much room for an other linux photography application to prosper. Since Krita was always more oriented toward drawing and painting, and photographic features were available mostly because “we can”, and there is no high-end application for drawing and painting on linux, the logical conclusion, for us, was to focus on where we can be the best, and the most useful.
The logical conclusion is to remove the features that are not useful for painting. This include many of the photographic plug-ins, like tonemapping, bracketingto-hdr, lens correction, noise reduction filters. As well as a set of artistic filters, but that are mostly useful to transform a picture in something that looks like a painting.
And anyway there are better tool for that job, like the excellent Qtpfsgui, in action below on Deventer’s mill:

I started a discussion on the subject on Krita’s mailing list, which triggered a bit of a uproar. Especially from people who have used Krita for photographic editing. Live with it, use Gimp or Digikam, or install the removed plugins from the future extension website, write your own, just do not count on us for that, we are going to be focused on other features.
Since it would sadden me to kill forever some of those plug-ins, and also while we do not want to support photographic features, or features that are of no interest for painting, we also do not want to prevent people to have or use those features, they will simply not be part of the default distribution. We are going to setup a new website where those extensions will be hosted, hopefully with “nightly” build (more like regular build) to keep them buildable, and synchronized with git/hg, where a tag would trigger a new release automatically. In essence a revival of the krita-plugins project.
I seem to have destroyed my Ubuntu system with too much experiments. It is running, but stuff crashes, especially UFRaw. So I have to repair that before I can do the next show.
Yesterday was the second day of the krita meeting 2010. It was oriented toward technical discussions, and UI design discussions.
In the technical area, I and Dmitry had a long talk on how to improve the filter API, to make it both easier to write effect filters, retain performance and ensure that it is less buggy with respect to selections and masks. In meantime Lukas was teaching Vera how to implement new painting operation, so that she can work on a water color brush engine.
When it came to the UI, we talked about what to do with painting op presets preview, and it was decided that it would be more useful for the user to have a scratchpad where he can make his own testing of the current settings, rather than having a computer generated preview. Boudewijn is now working on implementing exactly that. We also discussed painting presets management, it is going to be very basic for 2.2, with just a list name and a preview (either computer generated or made with the scratchpad). And later we would like to have tags, search by tags.
And between two discussions, we were working on bug fixes, polishing features, etc… All the small details to make Krita an even better application. And now is the hack week, with Boudewijn, Lukas, Sven and me.
Don't worry -- tomorrow I'll do a Last Week in Krita for krita.org, but it's so long since I last blogged about Krita personally, and besides, I need to think-think before writing down dot story and krita.org story about the Krita sprint. (Short version: it's a blast -- not everyone could come, but we have seven great people and me in one room and working together and having fun and being productive.)
So... Cyrille has already let the cat out of the bag: Peter Sikking joined us this sprint to help us define a clear vision -- and stayed on afterwards to help us with our various and manifold usability and interaction problems. I think most people in the libre graphics world will know Peter from his work on the Gimp and OpenPrinting.
Well, our vision session wasn't characterized by any real friction, but it still took many hours. In the end we arrived at a real and coherent vision. Cyrille already blogged it, but it's still worthwhile to post it again: (I also put it up on krita.org.)
Krita is a KDE program for sketching and painting, offering an end–to–end solution for creating digital painting files from scratch by masters.
Fields of painting that Krita explicitly supports are concept art, creation of comics and textures for rendering.
Modeled on existing real-world painting materials and workflows, Krita supports creative working by getting out of the way and with snappy response.
Now this is a really short statement, and as any short statement it deserves some careful parsing. Let's go through it, because it shows what the Krita team -- seven of them were present in Deventer -- has decided they want to create.
Krita is a KDE program. That means we're a program, not just an experiment, and it most importantly means we're part of the KDE Software Collection, and that we are proud of it. It's also important for what it doesn't say: it doesn't say KOffice. Now Krita is very clearly built upon KOffice technology, which sometimes gives us a lot of advantages, and at other times is, frankly, a bit of a burden. Our use of KOffice technology is not going to change for now. But we are trying to be a KDE program for sketching and painting, not an office program for working with raster images. I feel it's good to have that clear and in the open: it is something we have been struggling with for years in our minds.
"Sketching and painting": these are different but very related things. Sketching is freeform, exploration-oriented, not process-oriented. Painting is directed, goal-oriented, process-heavy. But there is enough overlap that it's important to support both, otherwise, we wouldn't be end-to-end. "End-to-end": an artist opens Krita, starts working on his ideas, and finishes their creation. And their creation is a file: not a printout. Other apps are better in reproducing the work on paper. Not our job, in other words. And "by masters" -- that means that Krita is not going to hold your hand until you've learned enough to graduate to another application. We feel that if we focused on beginners and intermediate users, we would punish users who learn to use Krita really well.
Note also that there's a full-stop after this sentence: so we don't intend to support photo collage, photo manipulation, graphical production work (make 300 pictures glossy, for instance), icons, animated smiley gifs, web mockups.
Then we are making a bit more explicit what areas we are interested in, and that is a commitment: maybe not immediately, but throughout the development of Krita, we want to explicitly support artists working on concept art, cartoons and textures. That means that if we need special features tailored to those endeavors, we will want to include them and make them as good as we can, or preferably better.
Finally, we're making a promise: we want to make working with Krita a good experience: if you are a trained artist, Krita will not alienate you. If you want to work without all this computer-folderol around your painting process, we want to make that possible. We're taking an artist's process as our guideline. And we want to achieve a good performance -- on master-level hardware, of course.
There are, after all, some physics laws, and you're not going to get a 20,000 x 5,000 multilayer image in a netbook. We are still discussing the minimum screensize, since I have a 1024x768 tablet pc that I cannot replace quite yet...
Now this is my personal explanation of the vision statement: read also Cyrille's blog.
Oh, and it seems that Canada has won the hockey think in Vancouver -- which makes our Canadian Krita hacker Vera very happy!
And Dmitry made a photo of me that I recognize myself in:
Hm... Guess I should have used Gimp to crop it :-)
I’m never sure when my commits to Linux actually make it into an official release. Luckily, since releases are tagged, I can use “git tag --contains COMMIT” to find them. So, in a stunning display of inefficiency, here’s what I use to find my commits:
git log --author='Kees Cook' --pretty=oneline | \
while read commit name; do \
echo $(git tag --contains $commit | head -n1): "$name"; \
done
Which lets me know where my code is with respect to releases:
v2.6.33: x86, mm: Report state of NX protections during boot v2.6.33: sysctl: require CAP_SYS_RAWIO to set mmap_min_addr v2.6.32: proc: fix reported unit for RLIMIT_CPU v2.6.31: modules: sysctl to block module loading ...
Didn’t manage to write anything during the London UX hackfest as it felt more appropriate to steal some family time for that. Revitalizing, that’s what it was.
I haven’t had much time to focus on GNOME work lately. The people who made that work fun either moved on to other projects or suffered from the same lack of time. During the past week it was great to see many GNOMErs share the same design principles and being motivated to push things forward. My interest in gnome-shell shot up 1000% after talking to Jon & Jeremy.
The ever-cheerful thos walked me through the release process so I’ll be taking care of releasing gnome-icon-theme more often than we used to. 2.29.0 is out so people will finally start seeing the fruits of our long lasting labor.
The UI design sessions were awesome but we also got some visual design work done. I’ve talked to everyone about how necessary the widget-theme-color-aware symbolic icon style is and the reactions were overly positive. We’ve started on the essentials with Hylke and illustrated how these might fall in place for network manager for example:

We’ve also brainstormed some ideas for the window decoration and widget themes. Arstechnica has more details.
Big thanks to everyone making it happen. Check out the London set for more photos.
UPDATE!! Very simplified survey with far less questions and only check boxes (except for the country name)! very fast to fill! your help will be decisive for this project (if you have friends, you can tell them about this), and I will publish the results!
http://surveys.polldaddy.com/s/590F36F513B55ADE/
Here is also a petition to sign for the commercialisation of a small stirling engine vital for my project (I’ve contacted them for price ranges, no reply yet)
Hi, this is a friend of Farsthary.
I support (one of his sponsors) and help him manage the blog and I write from time to time documentation for you (cf. volumetric tutorial), and now he has exceptionally allowed me to use today his blog with many daily visitors because I need your help for a survey very important to me (I live in a small village, so I can hardly go and ask enough people in the street):
I am studying solar energy, and I have thought about a robust solar concentrator for household energy production: this will produce both heating and electricity, with temporary energy storage (a few hours) when the resource is not available anymore. The system will be secured and non-intrusive. This product will be easily removable (in case the house or the garden is not yours)
If you don’t mind, could you please take 2 mns to answer these questions as comments (just each letter with a few words) and ask some friends about this, this would be a huge help for this project.
If you don’t have an answer for every question or if you don’t feel like typing, you can let some answers blank: I’d rather have incomplete answers than no answers at all (moreover, the absence of answers at a question is also somehow an answer in a poll…)
1 ) country you live in?
2 ) very sunny? (you can also give an indication about the usual amount of cloudiness: every day, every weeks..)
3 ) available outdoor surface (square meters)
4 ) type: a) garden (%) b) roof (%)
5 ) how much of these surfaces are you ready to use for electric/heat production?
6 ) how do you roughly divide your energetic consumption between electronic devices, cooking and hot water?
7 ) peak consumption (kW)?
8 ) financing: a) you pay b) somebody else pay, but that person/establishment sells most of your electricity or consumes most of your heating during many years
9 ) how much of your energetic consumption do you want with renewable means (%)?
10) how much are you ready to pay for the product that suits your needs compared with standard photovoltaic panels for a similar electric consumption? (or how many years will you willingly let somebody else sell your electricity/heat?), the more the better your product is:
remember: this product will have differential advantage compared with photovoltaic, so even at the same price it cannot be put on a par
11 ) In case of the absence of the sun, how much time would you like the product to supply energy?
12 ) are your interested by an upgradeable, multipurpose product (water desalinization, organic waste valorization…)? you can give here your suggestions
13 ) how many people around you would you be interested by this kind of product according to you?
14 ) would you like to be contacted to be part of this adventure?
a BIG THANK in advance for those who will take some minutes to reply!
P.S: I will publish the results if I have enough feedbacks (about 50 answers in one month?)
Update (2 days later): the current participation rate is 0.3% (relative to the blog popularity), which is good if one considers that this article is out of subject.
Currently the user needs (big thank to those who have taken the time to reply!) and the possible characteristics of my idea relatively match (relative to the physical possibilities and prices ranges) but more answers are welcome to have statistics ideas!
Hi, this is a friend of Farsthary,
Some months ago, Farsthary was speaking about OpenCL, an open and multi-platform programming language (still maturing) that harnesses the computing power of all the available computing devices (cpu, recent graphic cards (ati, nvidia)…), allowing to have the power of a small cluster in a single computer.
Indeed, recent graphic cards allow general purpose computing instead of only graphical operations, and are perfectly suited for massively parallel operations..
If your program is not bound by memory transfers and capacities, you can expect a 5-10 folds speed-boost (single precision) for a recent graphic card compared with a standard quad-core for roughly similar prices (around 100$) and power consumption (100-150W).
As this is only a matter of months before Farsthary begins to investigate this, here is a procedure for those who want to set up their environment to test OpenCL source codes. I will give you the one which works with my system (ubuntu 9.10 32 bits, Ati 4770) , will try to update for other systems latter:
* download and install the last catalyst drivers for OpenCL support: in the terminal:
sudo sh ./ati-driver-installer-10-2-x86.x86_64.run
..and follow the instructions
* download the last SDK kit (you must register before (free), you can also check there if your graphic card is an OpenCL device), extract it in your home directory (ex: /home/farsthary for him) and compile it (type “make” in the terminal once you are in the uncompress folder). Hence, you have the OpenCL libraries, but your system is not yet aware about this (so if you run OpenCL code, no devices will be detected). For that, you have to follow the installation notes (Win, OSX, linux)
For my system (32 bit):
export ATISTREAMSDKROOT=’~/ati-stream-sdk-v2.01-lnx32′
export ATISTREAMSDKSAMPLESROOT=’~/ati-stream-sdk-v2.01-lnx32′
export LD_LIBRARY_PATH=$ATISTREAMSDKROOT/lib/x86:$LD_LIBRARY_PATH
If you load an OpenCL program, it will look for the OpenCL libraries in the default system folder, so you will create symbolic links between these folder and your SDK folder with the libraries. First create appropriates folders:
sudo mkdir /usr/lib/OpenCL
sudo mkdir /usr/lib/OpenCL/vendors
Then create the link
sudo ln -sf ~/ati-stream-sdk-v2.01-lnx32/lib/x86/libatiocl32.so /usr/lib/OpenCL/vendors/libatiocl32.so
You can now test OpenCL samples, such as the didactic examples from the great David Bucciarelli (aka Dade, Luxrender developer). As an example, download SmallptGPU2 (for windows user, the executable is already included), which is an unbiased raytracer example which uses all the available OpenCL devices. First, you need to install some additional libraries (BOOST Threads: look for and install libboost-thread1.40-dev in Synaptic). Then you must edit the Makefile: rewrite the path variable with yours:
ATISTREAMSDKROOT=/home/farsthary/ati-stream-sdk-v2.01-lnx32
..and rename the boost library (-lboost_thread-mt-1_38_0) by “-lboost_thread-mt) if the compilation fails.
.. and compile it (“make”) and lauch it (“./smallptGPU”): at start-up, the soft detect my OpenCL devices and their properties in order to share the computational load. In my case this prints:
OpenCL Platform 0: Advanced Micro Devices, Inc.
OpenCL Device name 0: AMD Phenom(tm) II X4 925 Processor
OpenCL Device type 0: TYPE_CPU
OpenCL Device units 0: 4
OpenCL Device name 1: ATI RV770
OpenCL Device type 1: TYPE_GPU
OpenCL Device units 1: 8
So two computing devices, and my graphic card (RV770 = ATI 4770) is equivalent in this case to an octocore processor (120 stream units per processor in this case)
If the CPU alone works (2.8 GHz) , around 840 samples (12 rays per sample) are performed per second
With only the graphic card (processors at 750 MHz (no memory limitations)), around 4500 samples/s. So this is as if I had 5 additional Phenom II 925 in my rig!
Here are examples of area of Blender which would quickly benefit from such a technology:
* physics, as most of the algorithms do massively repetitive tasks, perfectly suited for stream processors:
- Newtonian physics, SPH: the Bullet library created by Erwin Coumans and used in blender is currently rewritten to take advantage of OpenCL thank to the support from AMD.
- Smoke simulor: Daniel has told that he was interested in porting his implementation to OpenCL.
* Surface calculation: very fast subsurface modifier, useful for high quality animation previz (cf. checking for mesh intersection, expressions)
* Rendering of course, but this would require a lot of manpower for significant speed-up:
But don’t forget: good algorithms come first (cf. V-Ray outperforms many competitors who are on more powerful plateform), then hardware.
As a naive example, if you want to calculate the sum of the numbers from one to n, the naive algorithm uses a loop (more than n calculations), while the good algorithm is base on the math: n(n+1)/2 (a few calculations cf. Karl Gauss)).
regards
UPDATE1: for the windows version, just install the last Ati drivers and the sdk, and follow the foregoing mentioned installation note (the document explains the steps for all the different systems). If you want to compile everything on windows, the process is more tedious (not difficult, but more steps if you are not familiar about this) as you have to set up a lot of stuffs. You can look on google about mingw for linux-like compilation under window. However, the OpenCl example from Dade already contain the windows binary, so you don’t need to compile the program. As long as you have the OpenCL drivers properly installed, you will be able to launch future OpenCL-tweaked build from Farsthary.
UPDATE2: I don’t have a configuration with nvidia card to test with, but here is the link with fresh drivers, SDK and informations.
Today was the first real day of the Meeting, we met again in the basement of the Church to be in a place without any possible distraction, and to discuss the vision of Krita, and what we want Krita to be.

We decided to focus on painting, sketching, comic books and texturing. As well as making an application for high-end painters. The question of how much the digital painting should mimick real-world painting, and based on our experience of watercolor in 1.6 that was so advanced that it would simulate the drying itself, we decided that real world should be an inspiration, but that there is no point to make digital painting exactly like real world, if you want real world, you can just take a real brush and paint. But it does not mean that we should take inspiration in real physics, when it makes sense, like for color mixing.
In the end, it took us more than two hours to define the following vision:
Krita is a KDE program for sketching and painting, offering an end–to–end solution for creating digital painting files from scratch by masters.
Fields of painting that Krita explicitly supports are concept art, creation of comics and textures for rendering.
Modelled on existing real-world painting materials and workflows, Krita supports creative working by getting out of the way and with snappy response.
It does not mean you cannot use Krita for something else, or develop plug-ins that solve a problem that does not fit the vision. But it means that we are going to be focused on implementing that vision, and that the default of the application will be oriented toward that vision. And when we have to make choices, we will look at the vision and see which decision makes more sense for the vision.
After the lunch, we took a digestive walk in Deventer streets:

Then we discussed about finding GSoC ideas, that would help to implement our vision, and concluded that a new transform tool and a good UI to access ressources was the two main ideas we needed. Then everybody went back to his computer, to fix bugs, to discuss UI ideas, and just to make Krita “the best application ever” (Vera’s tm).
I’m at Deventer, we are having Krita sprint. I’m trying to implement some new stuff in Krita and I can’t :’( Tablet stopped to work for me in Krita and basically in Qt. I don’t see tablet events (qt example in widgets/tablet does not show anything), so no pressure, no tilt, just mouse events.
I have Fedora 12, Qt 4.6.2. linuxwacom was replaced by xorg-x11-drv-wacom, so there are no utilities like wacdump or xidump now.I removed old configuration lines in xorg.conf. They were needed long time ago, I used to setup my tablet according wacom tablet. I depend on the evdev now. The tablet work in mypaint and in Gimp. I have pressure support there.
I don’t have tablet pressure in Qt example in qt4/examples/widgets/tablet nor in Krita.
Cyrille proposed to check this command:
xlsatoms | grep -i wacom 303 Wacom Tablet Area 304 Wacom Rotation 305 Wacom Pressurecurve 306 Wacom Serial IDs 307 Wacom Strip Buttons 308 Wacom Wheel Buttons 309 Wacom TwinView Resolution 310 Wacom Display Options 311 Wacom Screen Area 312 Wacom Proximity Threshold 313 Wacom Capacity 314 Wacom Pressure Threshold 315 Wacom Sample and Suppress 316 Wacom Enable Touch 317 Wacom Hover Click 318 Wacom Tool Type 319 Wacom Button Actions 430 Wacom Stylus 431 Wacom Cursor 432 Wacom Eraser
So it looks ok. Have you got idea how to fix it? It seems that it is Fedora issue, other Krita developers
have working tablet support out of the box in the OpenSuse. I checked if the tablet support is compiled in Fedora, it is.
Krita hackers are offering me CD of OpenSuse. I like my Fedora, I don’t give up so far…Please, help if you can
Sven Langkamp has also this same problem as I do, he is also on Fedora 12 these days.
Update 28.2.2010:
I filled bugreport for Fedora https://bugzilla.redhat.com/show_bug.cgi?id=569132
Also for Qt http://bugreports.qt.nokia.com/browse/QTBUG-8599
UPDATE: It works now with some patch. Fedora will ship some update soon. Thanks to Thomas Zander for the patch and Fedora guys for providing me test build!
The Tube Project’s Team wants to share with the community an video that show how is the life at the Nerdodrome and at Northampton. We are very happy working here toghether and we’re sure that you will figured that out after seeing the video!
So, that’s it! Check the video and make a comment!
We had a issue with the soundtrack of the video, in the first version I put a song without taking care about the copyright and license of it. So Fateh advice me that I should try to look for copyleft music on the internet, and I must say that it’s wasn’t an easy task!, but in the way to find the song we found a lot of sites and resources related to free music or copyleft music.
Here’s a few links that we want share!:
Jamendo
musicleft.net
nomag
sounds, loops, effects and more:
freesound.org
And again, thanks to The Art Punk Band to share the song that we use in the video.
Also we must say that all the video was edited in the blender 2.5 sequence editor.
Seems to be problems with Live Streaming so, here’s the link to download the video in .ogg format (Ogg/Theora). Only 4.2mb.
behind_the_chaos
Je viens de finaliser aujourd’hui les présentateurs pour l’inauguration de Ignite Lyon. Les sujets sont assez diverses, du vache à lait à l’informatique bio en passant par la course à pied et l’art libre. Pour ceux qui sont plus du tendance entrepreneur, nous avons également des présentations sur la démarche commerciale ou créer sa première boîte jeune.
Voici la liste des présentateurs pour ce premier Ignite Lyon en order alphabétique, sauf modifications de dernier minute:
Avec une salle qui prendrai autour de 100 personnes, les places risquent d’être chères, même si l’entrée est libre!
Je vous suggére vivement d’être à votre place dans la salle D101 de l’Université Lyon 2, Quai Claude Bernard, à l’ouverture des portes à 18h30 jeudi prochain le 4. Les festivités commenceront vers 19h, jusqu’à 20h30 à peu près, avec une pause pipi au millieu.
Vous pouvez également vous inscrire pour manger un bout après l’événement au Chevreuil, ou nous allons nous retrouver quor quelques boissons raffraichissantes à partir de 20h30.
Vous pouvez trouver plus d’informations sur le site Ignite Lyon. A la semaine prochaine!
Today right after breakfast with Lukas and Boudewijn and one of his daughter, we got an electricity cut. So when Dmitry arrived from his hotel, despite heavy rain, we decided to go out for a walk in the city, to discover the charm of the city under rain:

Boudewijn explained us about the past of the city, and also which building was going to be demolished, and what nice house has been replaced by an ugly one. We walked a long many nice streets like this one:

Below is a church that was build by the city inhabitant that were denied access to the cathedral, now it is used as a concert hall:

Then we arrived at the market place, where a krita developer took a picture of a krita developer taking a picture of an other krita developer:

Upon our return to Boudewijn’s house the electricity was not back, but Vera had arrived, so we headed to the nearby Church basement which had electricity but no Internet connection. I first tried to work on making OpenGTL’s API nicer to use, while Lukas worked on importing ABR brush from recent photoshop version with the help of Vera, Dmitry worked on layer stack recomposition, while Boudewijn tried to fix a thread bug that seems to only happen on Vera’s computer.

Now electricity is back in the house, Peter and Sven have arrived, and we are finally connected again, and are planning to go in a pizza restaurant in the evening. And now Adam has arrived too. So we are all there now.
Part 2 of my 3-parter on configuring Ubuntu's new grub2 boot menu covers cleaning up all the bogus menu entries (if you have a multiple-boot system) and some tricks on setting color and image backgrounds:
After being blocked for three hours at Göteborg’s airport due to bad weather condition with heavy snow fall. I was genuinely impressed by KLM paying us a meal and give us a reduction for the next ticket, which covers almost a quarter of the price of my ticket, while they clearly weren’t at fault on the delay. After we managed to take-off, the remainder of the travel went smoothly. After arriving in Deventer, a cute little town east of Amsterdam, I tried to make good use of N810’s GPS to find my way to Boudewijn’s house, but never got a fixed and had to rely on my orientation sense. Now we are waiting for the arrival of Dmitry and Lukas.
In an attempt to force an exec to totally stall so I could attach gdb to a process that does a setuid transition without freaking it out (i.e. can’t launch “sudo gdb …”), I briefly played with process priority, scheduling, and CPU affinity (pinning a process to a CPU).
So far, the best attempt at stalling the process was to set CPU affinity, set its scheduling policy (IDLE), drop the priority value fully (19), and then run a CPU hog with the same CPU affinity with a very high priority (-20).
Staller: sudo schedtool -a 0 -N -n -20 -e /tmp/spin-cpu
Stallee: schedtool -a 0 -D -n 19 -e /usr/bin/sudo -s
The hope was to then run “sudo gdb /usr/bin/sudo $(pidof sudo)“, but it seems that this still isn’t enough to make the exec of sudo totally stall while the “spin-cpu” process is running — it certainly executes more slowly, but I want it to stop.
I have this feeling like I’m missing something obvious about how to accomplish this gdb session sanely. I wonder if I can get gdb to switch targets across a child exec, i.e. run gdb as root on a program that fully drops privs, but then execs sudo. Guess it’s time to go read the gdb manual some more…

Ivanka and I had a great discussion on Monday at the GNOME London UX Hackfest about how what free & open source tools / integration we need for a good FLOSS usability data capture workflow. While I still have to document them properly, you can get a sneak peek at our notes from this discussion in a whiteboard photo I took:
One of the wishlist items that came up is if there was a way we could set marker points within our large and long usability test video files, in order to be able to document and skip to points of interest within the file quickly, and also so that we would be able to export small and short clips of video to be able to share widely. You see, not only is it timely to view an entire usability test video – they are very large and unwieldy, and expensive to host which makes it tougher for us to share the great data we’re gathering. For example, the markers I’d love to set up in a usability test video file would be to indicate where test task 1 started, where test task 2 started, so on and so forth. I’ve been talking with super-hacker Bastien Nocera about how marker-setting might possibly be achieved in a totem plug-in. For him, it may kill two birds with one stone as newer video file formats have a notion of chapters within the file and totem does not currently display them.
There’s more ideas I’d like to mock up here (including a full-screen variation of the mockup) but I’m leaving for the day so I wanted to make sure I shared what I got for now.
Also, the markers on the timeline are not going to be possible – although I would love a way to have the ticks highlight to show the markers selected on the right on the timeline itself – but there is no ‘active’ or ‘highlighted’ mode for the tick widget if I understand correctly. :-/
Anyway! I would love to hear your ideas.
This is how I’m used to blog posting and receiving comments on said posts operating, for the most part:

This is how I feel like my blog has been working out lately:

I don’t think I can be as diligent in responding to comments to my blog anymore. It’s making me feel really unhappy and constantly attacked. I do not understand what outcome people who post comments like this expect.
I am really quite unaccustomed to this kind of behavior at this scale. I am really against censorship in principle, but I think I’m probably going to have to put all comments on my blog under moderations because of this. I really wish I didn’t have to though. Please be more thoughtful when you post comments to people’s blogs.
Thanks to the community feedback I fixed yesterday an initialization bug in my patch that was causing blender crashing on new particle systems when the emitters haven’t had previously assigned materials. I also changed a few things a bit to be more consistent with future changes
here’s the corrected patch:
Jahka will soon work on this and he’s already given green light to me, so the whole feature will be soon in trunk! Yay!!!!!! It’s very important to test this feature now before Jahka starts reviewing it so I could tune it to make his task easier and bug free
Here are the current builds:
* OSX (Intel) : Thanks Tkroo!
* Windows: Thanks David and Spacetug!
Cheers Farsthary
This morning Charline from Canonical presented a report on an empathy usability test she’s completed. These are rough notes split into topics:
The on-board experience in empathy confusing. There’s one status for multiple accounts, but sometimes accounts don’t share the same status.
Ideas:
Overall users were anxious because their own information was not being displayed in empathy and they felt a lack of control over it.
They expected to find all the information concerning them in one place and the information concern others accessible through their names. They didn’t see aggregate information about people.
They didn’t understand how to chat with two people at the same time. “If you can add an individual contact, you should be able to add a group in the same way.”
The technical challenge here is every service has different concepts of group chat. Some have ad-hoc group chat, some have an inflexible concept of rooms. What if the two users you want to chat with together are on different networks. If one friend is on MSN and one is on Jabber – then it’s not possible.
To create a group, people try to invite others to a room. The Skype application uses the concept of a room really well.
User: If I have the same contact with many different accounts, I could group them under the same group? The system should indicate if I can treat all my contacts in the same way or if there are some things I can’t do depending on which account.
I tried to create a group and I can’t create it – is it because they’re from different accounts? So I can’t put them together?
I can’t see which people can be treated the same way and which can’t be.
People weren’t sure what they’d be searching – all the conversations you had forever? Or would you be searching for a specific person? They had to try it a few times to figure out what kinds of results they would get. They liked the feature where they could see conversations on the calendar, but confused about what to expect at first.
The conversation view is a time-focused view. We wonder if they would want a more people-centric view.
Charline will be making the slides available shortly.
I'm finally getting caught up after SCALE 8x, this year's Southern CA Linux Expo.
A few highlights (not even close to a comprehensive list):
The UbuCon and Women in Open Source (WIOS) were both great successes, with a great speaker list and good attendance. It was hard to choose between them.
Malakai Wade, Mirano Cafiero, and Saskia Wade, two 12-year-olds and an 8-year-old, presenting on "Ultimate Randomness - Girl voices in open source". Great stuff! They sang, they discussed their favorite apps, they showed an animated video made with open source tools of dolls in a dollhouse. Lots of energy, confidence and fun. Loved it! I hope to see more of these girls.
I liked Nathan Haines demo of "Quickly", an app for rapid development of python-gtk apps. It looks like a great app, especially for beginning programmers, though his demo did also illustrate the problems with complex UIs filled with a zillion similar toolbuttons. (I'm not criticising Nathan; I find UIs like that very difficult to use, especially under pressure like a live demo in front of an audience.)
Happily, the UbuCon and WIOS scheduled their lightning talks at different times (though UbuCon's conflicted with WIOS's "How to give a Lightning Talk" session). So lightning talk junkies enjoyed two hours of talks back to back, plus the chance to give two different talks to different audiences. Hectic but a lot of fun.
I was a little disappointed with the Git Tips & Tricks panel; I wanted more git tips and less discussion of projects that happen to use Git. I liked Don Marti's section on IkiWiki; it looks like a great tool and I wish Don had had more time to present.
I liked Emma Jane Hogbin's useful and interesting talk on "Looking Beautiful in Print", full of practical tips for how to design good flyers and brochures using tools like OpenOffice.
Diana Chen, who got introduced to open source only a year ago at SCALE 7x, gets the award for courage: she gave a talk on "Learning python for non-programmers" using a borrowed laptop that I'm not sure she'd even seen before the presentation. Unfortunately, the laptop turned out to be poorly suited to the task (no Python installed? Dvorak keymap?) so Diana struggled to show what she'd planned, but she came through and her demos eventually worked great. I hope she wasn't too discouraged by the difficulties, and keeps presenting -- preferably with more time to practice ahead of time. The room was absolutely packed -- they had to bring in lots more chairs and there were still a lot of people standing. There's obviously a huge amount of interest in beginner programming talks at this conference!
Shawn Powers' talk, "Linux is for Smart People, and You're Not as Dumb as You Think", was as entertaining as the title suggested -- an excellent beginner-track talk that I think everyone enjoyed.
I'm not going to review Sunday's program, because I was busy obsessing over my own "Featherweight Linux" talk. I'll just say that SCALE is a great place to give a talk -- the audience was great, with excellent questions and no heckling and, most important, they laughed when I hoped they would. :-)
I didn't get to spend much time on the show floor, but it looked active and fun.
The Linux Astronomy folks had a fantastic display, with a big table with a simulated Martian landscape and a couple of robotic rovers exploring it and a robotic telescope driven by a milling machine program, as well as computers exhibiting a selection of Linux astronomy, science and math-teaching software.
ZaReason had a booth, and my mom was able to get info on how to get a spare battery for her laptop. (Can I take a moment to say how cool it is to be wandering around a Linux conference with my mom, who's carrying her own Linux netbook?)
An Ubuntu/Canonical table was testing people's laptops for compatibility with the next Ubuntu release. (There may have been other distros tested as well; I wasn't clear on that.)
Engineers Without Borders, Orange County looked really interesting and assured me that not all of them were in Orange County, and there's activity up here in the Bay Area as well. Definitely on my list to learn more.
Linux Pro magazine was giving out copies of Linux Pro and Ubuntu User, both fantastic magazines packed with good articles.
One notable feature of SCALE is the low price. This conference is very affordable, which means there are a lot of hobbyists, beginners and even people just considering trying Linux. They've offered a "Beginner track" for several years, though not all the talks in that track are really accessible to beginners (speakers: here's your chance to propose that great beginner talk the other conferences aren't interested in! Help some new folks!) There's a lot of energy and diversity and a wide range of interests and knowledge -- yet there's still plenty of depth for hardcore Linux geeks.
Overall, a fantastic conference. The SCALE organizers do a great job of organizing everything, and if there were any glitches they weren't evident from the outside.
Here’s just a quick summary of notes from the discussions I was in yesterday at the GNOME London UX Hackfest:
Yesterday jimmac and hbons worked on Moblin icons, with the idea we could use the style for GNOME OSD (on-screen display, e.g., when you change your system volume, the big speaker icon pops up) and possibly the panel / applet icons.
Why use the moblin style? It’s much quicker to put together than the high-res icons (it can take 15 hours straight to do one of these); the Moblin style requires much simpler artwork. The style, because of its simplicity, could potentially be good high-contrast / accessible icons as well.
How do you get the Moblin icons?
git clone git://git.moblin.org/moblin-icon-theme
We’d like complete coverage but won’t have it immediately. We should have a fallback – the Ubuntu folks suggested using a suffix for naming/calling icons from apps. E.g, if an application that wants to use this style they need to explicitly ask for it, if it doesn’t exist it falls back to the normal icon. (I’m not 100% sure how accurate my notes are here.)
One issue with the style is that it doesn’t work for every background color. There are a couple of potential solutions here:
One other challenge is they don’t work at smaller sizes right now; we potentially have to adapt them for smaller sizes. Since screens are getting more dense these days, we could consider doing 22×22 or 24×24 as the small size?
There is a single Inkscape SVG with all the icons, and a script renders the individual icons. It takes 20 minutes though; it’s inefficient.
What work needs to be done to make this happen for GNOME?
The mailing list gnome-themes-list might be the place to continue the conversation.
John from Canonical showed us some mockups he had done to try to simplify Nautilus. We discussed them a bit. Here are some random notes from the discussion:
Two main features that would make life easier:
Garrett and jimmac use Dropbox for this today, but it is not open source and is capped at 2 GB.
John showed us Canonical’s Use Case Mapper, which will hopefully be open-sourced at some point so GNOME designers can use it. It interfaces with Google docs at the moment.
The template it uses in Google docs is public.
Both of these gems are from Garrett:
Hope these notes are useful for you.
This is just a brainstorm, no hard and fast rules being set here. A bunch of the designers here at the GNOME London UX Hackfest got together yesterday to talk about Nautilus, and after talking about Nautilus those of us left had a bit of bigger-picture view discussion (mostly Garrett and I at the whiteboard with hbons & jimmac listening as they worked on awesome icon stuff). Us GNOME designers see each other on pretty much an annual basis for the past few years either at usability hackfests, GUADECs, or GNOME Boston Summits, and we end up having variations on the same ‘big-picture’ vision for GNOME. Somehow, we never end up really fulfilling that vision, and the climate changes slightly every time (for example, microblogging I think is a big difference this go-around that wasn’t as much of a consideration in previous iterations of the discussion).
Why does this keep happening? I think we go back home and work in individual silos again – and when we meet next it’s difficult work I think to resolve the different perspectives behind the progress we’ve made over the past year. It seems we then keep trying to redo the vision, maybe with the notion that this time will be the time we’ll figure out how we can all work together. I think though, not only are the tools for us to work together non-existent (there are some that have cropped up over time that help; e.g., Garrett and jimmac collaborate a lot using Dropbox) – but necessarily we’re working for different organizations that have different focuses and our free time is limited.
So what if we drew out a loose map of the big-picture vision, and as we necessarily work within our silos, pin that work to some piece of that vision map and fill the map in together each time we meet so we have an idea of how we’re progressing? Then it’s easier for our separate pieces coalesce in a more coherent manner when we get together and we can make forward progress together and feel like we are designing together more.
Anyway, here is a snap shot (nice and clean thanks to Garrett’s whiteboard photo Gimp tip) of our whiteboard from a rough stab at laying out some potential components for this vision:
Here are the components:
Some other random ideas generated from this discussion:
For some of these, there are already pieces in GNOME that will help make them possible. However, they aren’t integrated as a coherent whole yet. This list is not to say that anything that already exists in GNOME today is meant to be thrown out or done over.
Anyway this is just a random brain dump but I wanted to make sure it was captured and shared. Sorry it’s not more polished.
Any ideas on where this should go or how this framework should be constructed?

Recently I had the opportunity to look at effort estimates for a big (about 4000 function points) software project. The interesting thing was that there were already quite elaborate specifications, so in theory that would be a good basis for an estimate. The estimates were done by three different parties:
Both the business analysts and the developers made relative estimates instead of absolute estimates in for example hours. What I had expected was a reasonable correlation (0.90 or higher) between the three estimates. This turned out to be quite different. Lets first have a look at a graph that plots the value of the estimations from the consultancy firm against the business analysts:
On the horizontal axis you can see the estimates in function points. On the vertical axis are the estimates from the business analysts in an arbitrary (but relative) unit. As you can see from this graph the correlation is pretty poor. In fact, when you do regression analysis, the correlation is only 0.73. This means that about 50 % of the estimates of the business analysts can be explained by the estimates from the consultancy firm. The consultancy firm at the same time claims about 15 % accuracy in their estimates.
When we look at the difference between the business analysts and the software development team we see a similar picture:
There are a lot less data points here because the development team only estimates those user stories that they will pick up in a next iteration of 2 weeks. Again the correlation between the two estimates is pretty poor: 0.71. So once again only 50 % of the estimates of the development team can be explained by the estimates from the business team, assuming there is a linear relation between the two.
If we correlate the estimates from the development team with the consultancy firm we get similar data. What worries me most is that the approved budget and lead time will be based on the estimates of the consultancy work which apparently bears hardly a relation with the effort that the development team has to invest. The estimated effort could easily be 100 % of more wrong. Guess who is going to be held responsible for that…
When an exception is thrown and not catched in a Qt application, it get catched by Qt’s event loop, and the following message is displayed in the console:
Qt has caught an exception thrown from an event handler. Throwing exceptions from an event handler is not supported in Qt. You must reimplement QApplication::notify() and catch all exceptions there. terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
In other situations, std::bad_alloc is replaced by the name of the exception. The problem is that if you now want to know where it happens in your program, the backtrace points to where the exception is rethrown by Qt’s event loop, which is not where the error happens.
I first had this problem a few days ago when implementing multi-layers support in EXR, since the exception name was specific to OpenEXR, I just grepped the code and deduce where the error occurred. But this is not very convenient when the error is generic, like std::bad_alloc which can be thrown just anywhere. And as it turned out by Qt itself in ‘qBadAlloc()’. The solution suggested by Maelcum on IRC is simply to set a breakpoint in the function __cxa_throw, which is a function of the C++ standard library that is actually doing the job when the keyword throw is used (at least with the GNU stdlib++, no idea if it is valid with other standard library implementation). And then you get a backtrace that point to the problem.
I thought I would share this tip in case, in some day, you find yourself with an uncaught exception in a Qt application.
Konstatin Dmitriev (aka Zelgadis) is the leader and main animator, designer and director of the Morevna Project, the first 2D Open featured Movie in the world. This project is an special case of study. Using only Free/Open Source Software it has the aim to create a featured film. In the production pipeline there are used several well known tools: Pencil for rough drawings and animatic shots, Synfig for animatic composition and vectorized 2D animation, Blender for final composition, special effects and 3D environment in some scenes, Gimp/Krita for coloring and shading conceptual keyframes and gnu/make and vorbis-tools as helpers for the project render.
Without any external financial and with only the help of some friends, he has created a very interesting project that will be a total success.
All the project sources are released under Creative Commons license so anyone is welcome to contribute. As all the sources of the project are available, he has settled a git repository to control all the changes of the project and from which easily any one can retrieve all the files and just ‘make’ the whole animation if the proper tools have been installed. Also, for project management he has created a wiki and maintains a blog for the main news of the Morevna Project. Even more, he has created his own universal packaging for the main production tools (pencil, synfig, blender) to be sure that all contributors have the proper tool available.
Konstantine is also a very active member of Synfig community and I am personally a fan of all what he does. His enthusiasm, persistence, nice humor, and all his knowledge, make him a valuable partner to care of. I’m proud to have him as friend.
He has moved and installed the wiki, forum and joomla databases that holds Synfig Project into the new host (tuxfamily.org). Even more, he has created some DLP macros that are helping to reorganize the wiki and to help to translate it in any language, in an easier way.
In a few words, he is exceptional.
Hi all
Here’s at last the first public patch of the Particle Fluids engine , this means that this still doesn’t have particle surfacing included because it’s still a work in progress but the engine is pretty useful in its current state and particles can be rendered via splatting or using point density for more advanced volumetric particle effects (remember my pouring moss tests?) and finally you could use instanced particles to whatever you want , including metaballs, though those are not replacement for the upcoming particle mesh surface
I just sent the patch to Jahka for his expert review and commit, and once integrated in its final GUI form Stephen and me could start writing down documentation of the many features it have. I have included also two quick .blend test files to figure out of the settings
I love Open Source , I love blender and I fall in love with the Blender community
and since I have received a lot of help from you as Blendiac and WhifeOfBlendiac and ChildOfBlendiac will visit me soon what better present to give back to the community?
CORRECTED PATCH:
The main actors of this achievement are Stephen, Jahka and your servant: Farsthary
I will enjoy this part: Feedback
Cheers to all and THANKS!
PS: in the future the engine may change a bit because I’m researching ways to speed up simulations by data structures other than the kdtree currently used
I’m posting my photos of the GNOME UX Hackfest on Flickr so check them out. I’m putting the tag ‘gnome-ux-hackfest’ on them.
This morning at the GNOME 3 UX Hackfest in London, Willie Walker gave us some tips for ‘painless’ accessibility.
First he reviewed the three main types of access users need us to support:
These users use devices such as:
For head-tracking and eye-tracking, they hover over an area to cause a click. Some of these users can’t use keyboard or mouse at all. They may use a button/switch to interact and translate to keyboard.
You need to think about users who cannot use the keyboard at all.
These users use devices such as:
A big category of users who cannot use the mouse are users who are completely blind. Since they cannot tell where on the screen the mouse is, they can’t use it. These users rely on keyboard access
To make sure you’re accounting for these users, try unplugging your mouse and see if you can use your interface:
Users in this category:
GNOME handles the presentation of content for users who are visually-impaired:
Here’s some tips for GNOME designers and developers to help ensure your design is more accessible:
Calum asked Willie a really good question – how do assistive technologies handle dynamic UI elements? As Willie explained, we handle it okay but we could do better. Some common dynamic UI elements are progress bars, or monitoring graphs (eg the CPU usage monitor), or checkboxes that disable based on selections elsewhere on the screen. For the latter case – dynamically-disabled elements – when they are disabled, they are not accessible until the selections on the screen enable it again, so this case is handled okay. For progress bars and graphics, one thing we can do is announce every time it changes, or we can put some time constraints in there for announcement – announce every 3-5 seconds, for example. For progress bars in particular, we have a progress bar setting for orca: announce updates (yes or no.) This enables orca to announce every so many seconds the current status of the progress bar. For example, for a download progress bar: “10 percent. 25 percent. 73 percent.” We could handle these better, though.
Willie put together a great Accessibility Smoke Testing Plan that you can run through to see how your UI stacks up for accessibility. The five steps summarized (please read Willie’s plan for the full version of these!):
Well, first of all, I’m gonna to introduce my self: I’m Pablo Lizardo from Argentina, to be more accurate I’m from here! sooo far away!! As Fateh and Bassam told in the latest post, I was accepted as intern to “work” for the next 3 months in this awesome project called “Tube”
I came just six days ago, so all is new for me, luckily all the people in the team and at the hampshire college are great and really kind. So there wasn’t problems with the adaptation time. Before I start talking about the project, I want to make a special mention to Bassam, Fateh and Jarred who give me all I need, and are always asking if there’s all going right!
Well, do I’ve mentioned that the town/city (Northampton, MA) is really beautifull? i think not! All the buildings and houses are like the movies
Another little thing to mention is that all has a lot of patience with me , because my english is really bad XD, I guess that get laughs at my back!
But i think that i’m learning a lot, so i think that in … 3 months I’ll be ready to communicate with english people
Lets talk about important things! The food is really strange, I miss the argentinean food! but I must adapt to this new forms of eat! I feel lucky because I came with Yerba Mate.
From the first day I start to work in the Nerdodrome,It’s a very nice place where a lot of cool things happen!, There’s also a project called Caldera which is produced in the same place, fortunately here we have a lot of new computers to do all the work together without disturb to anybody.
In the project, I’m mostly dedicated to draw some boards for the animatic. So I’m doing a lot of 2d stuff, sometimes i have things to do in 3d but not too much. I don’t have problem with that because I love to draw and make sketches!
Here’s some images that I did in this few days. Keep on touch for more blog updates!
- Pablo
Download the Video! (37.8 MB, 19:53)
Download the Torrent!
(Mobile version tomorrow)
The German word “Therrorie” was coined by a kid in a Physics lesson of my late colleague Helmut Mohr in Hamburg. It is what it sounds like – and today’s video is full of it. No GIMP, no images, only the blackboard and me talking. Please consider this as a WARNING.
We had a lively discussion in the forum about the theory behind making images, circling around the term “dynamic range”. There is a big difference between light and dark parts of our world, often more that a camera can catch. And nearly always more than fits onto paper or a computer screen.
The process of squeezing this big range into the small output range is called Post Processing. Either you do it via RAW anf GIMP – or the smart chip in your camera does it while saving your iage as JPEG. What I forgot to say – if you do it, you can redo it. The RAW file still exists. If the chip does it, the RAW file is discarded and you are stuck with the version of the image made by the chip.
I got a lot of information about this subject from a wonderful paper by Karl Lang at Adobe(R). Worth to download and read, even if you decide to skip the video this week.
The TOC
02:04 Orders of Magnitude
04:00 How much light is in a scene? (Dynamic range ramp up)
06:00 There is no black and white
06:30 Dynamic range of a scene
06:50 Dynamic range of LCD and prints
08:50 Dynamic range of the camera
09:50 Exposure = slide the dynamic range
11:05 Post processing by the camera
12:15 RAW -> GIMP -> print
13:00 Slides and egatives in analog photography
15:05 A source at Adobe(R)
15:15 8 Bits – a problem (sometimes)
17:10 Why is it possible to make images? Because our eyes are no camera and our brain no computer.

“Meet the GIMP” by Rolf Steinort is licensed under a Creative Commons Attribution-No Derivative Works 3.0 Germany License.
Permissions beyond the scope of this license may be available at http://meetthegimp.org.
This is a conservative bugfix release.
A memory leak has been fixed that was keeping all layers ever visited in memory. Layer names are now loaded correctly. When saving PNG, layer visibility is now handled correctly. Other minor bugs were fixed, and the GUI has been translated into Korean.
So what happened last week? Except that Slovakia upset Russia in Hockey at Vancouver, Slovakia is also fixing Krita performance thanks to the donors, from all around the world, who made that possible. Enough about nationality, let’s talk about what happened.
The plan for the last week was to optimize iterators. We use tiled buffers for our memory management. You usually need undo function in the image processing application and storing the whole image is not a good idea. You rather break the image into tiled parts, rectangles and you store and restore them. But affects the whole application, you have to iterate pixels in filter, you have paint with the brush and that means to composite one image over another image. So basically iterators are very important for Krita. Its speed is priority of course.
We knew, from the measures I did first week, that fetching those tiles is a slow process. That’s why we have a rectangle iterator which iterates the image tile by tile. But sometimes you need to iterate the image in lines. E.g. in the filters or under some special conditions when you need the access to the pixel before and after in the same line.
That’s why we have a line iterators, we have a vertical and a horizontal iterator. I was optimizing the line iterators. Instead of fetching the tiles every width/height of the tile, we now pre-fetch the tiles to some buffer, lock them and work with them, til we can skip to the next row of tiles. The tiles are 64×64 big by the way. Another important thing is that Krita is threaded and one thread is doing a projection updates (the final image you see in Krita) and other can work on some other stuff like painting or filtering. So we have to lock&unlock the tiles. I patched the vertical and the horizontal iterator.
![]()
We managed to get speedup like 1.28x til 6.21x faster iterating. Cyrille Berger then suggested that we have quite complicated structure for iterators with many function calls, so let’s try a new API for iterator with less function calls. So my task was to code or better said port the horizontal iterator to the new API. The iterator is ready for testing. According the benchmarks, the new iterator is 1.5x faster then old API. Also Cyrille added a lot of custom magic to it so that it is faster. We are closer to the data manager speed, which limits the speed of iterators.
On Monday I also fixed the abr brush so that we can paint with abr brushes, but the work is not finished yet. This week I will work on it and also I will try to use the new iterator in KisPainter for compositing and explore the time results. Then at the end of the week I fly to Netherlands, where we are having our Krita sprint in Deventer, in Boudewijn’s home. I will spent 11 days there with other Krita hackers. So a lot of coding in front of us. We will be visiting the Blender team also. I’m looking forward to it!
So far we make progress, Sven Langkamp made me happy saying that the speedup for painting even with some filters is amazing now compared to what it was before. Also the artist, Ben Dansie, from the project Durian, the Blender project of the open movie, used Krita for making some art. Cool, isn’t it? Now back to rediscover your Krita code ™.
Last weekend, Casper Boemann and Boudewijn Rempt visited Thorsten Zachmann, the KPresenter maintainer for some dedicated and focussed work on KPresenter. Not so much to discuss issues and set out future paths, but to do some high-bandwidth design and development, on bugs, but also in particular on one big missing feature in KPresenter: animations.
KPresenter, being a KOffice application, is a dedicated ODF application. ODF defines that animations are to be saved in the SMIL format (Synchronized Multimedia Integration Language). And while there was already some code that implemented animations, loading and saving was not implemented at all.
Casper and Thorsten got the basic design and implementation were done this weekend, for loading, saving and animating. Of course, there are tons of animations in other presentation applications, like Impress, Keynote or Powerpoint, and we've only scratched the surface. Implementing presentations would be a very rewarding and fun pursuit for a beginning hacker -- or even a Google Summer of Code Project.
There were other issues, such as dealing with a long-standing OpenOffice bug (that got fixed for OpenOffice 3.2), where you'd see the contents of the master page placeholders on every slide. Boudewijn and Thorsten came up with a clever workaround for that. We investigated arrows on line-ends -- unfortunately, that needs more work, as well as a bug in the handling of date and time variables. All in a days work, of course, but this was special, since we could be together and bounce ideas off each other at a really fast rate.
Thanks go out to the KDE e.V. for sponsoring our travel and to Margot and Thorsten for their hospitality!
On this February 14th 2010, we took a ride on the Aquabus. The Aquabus is one of the various mode of transportation for Vancouver. They run over through False Creek.
For the Olympics and the increased traffic, they apparently brought out the old boat back to the scheduled service. The "Rainbow Hunter", as seen here at the Yaletown marina dock is usually only out in the summer for the mini-cruise for tourists:
This is not the first time I take the Aquabus, but this is the first time I'm on one of the open platforms (Cyquabus, those used to transport bikes) on this route, with a beautiful spring weather. Further down in the trip, approaching Granville Island, with the Burrard bridge ahead:
It also should be not that the Aquabus is pet friendly, unlike buses and the SkyTrain.
I gave a lightning talk at the Ubucon -- the Ubuntu miniconf -- at the SCALE 8x, Southern California Linux Expo yesterday. I've been writing about grub2 for Linux Planet but it left me with some, well, opinions that I wanted to share.
A lightning talk is an informal very short talk, anywhere from 2 to 5 minutes. Typically a conference will have a session of lightning talks, where anyone can get up to plug a project, tell a story or flame about an annoyance. Anything goes. I'm a lightning talk junkie -- I love giving them, and I love hearing what everyone else has to say.
I had some simple slides for this particular talk. Generally I've used bold or other set-offs to indicate terms I showed on a slide.
SCALE 8x, by the way, is awesome so far, and I'm looking forward to the next two days.
What's a grub? A soft wriggly worm.
But it's also the Ubuntu Bootloader. And in Karmic, we have a brand new grub: grub2!
Well, sort of. Karmic uses Grub 2 version 1.97 beta4. Aside from the fact that it's a beta -- nuff said about that -- what's this business of grub TWO being version ONE point something? Are you hearing alarm bells go off yet?
But it must be better, right? Like, they say it cleans up partition numbering.
Yay! So that confusing syntax in grub1, where you have to say [SLIDE] (hd0,0) that doesn't look like anything else on Linux, and you're always wanting to put the parenthesis in the wrong place -- they finally fixed that?
Well, no. Now it looks like this: (hd0,1)
THEY KEPT THE CONFUSING SYNTAX BUT CHANGED THE NUMBER!
Gee, guys, thanks for making things simpler!
But at least grub2 is better at graphics, right? Like what if you want to add a background image under that boring boot screen? A dark image, because the text is white.
Except now Ubuntu changes the text color to black. So you look in the config file to find out why ...
if background_image `make_system_path_relative... set color_normal=black/black
... there it is! But why are there two blacks? Of course, there's no documentation. They can't be fg/bg -- black on black wouldn't make any sense, right?
Well, it turns out it DOES mean foreground and background -- but the second "black" doesn't mean black. It's a special grub2 code for "transparent". That's right, they wrote this brand new program from scratch, but they couldn't make a parser that understands "none" or "transparent".
What if you actually want text with a black background? I have no idea. I guess you're out of luck.
Okay, what about dual booting? grub's great at that, right? I have three distros installed on this laptop. There's a shared /boot partition. When I change something, all I have to do is edit a file in /boot/grub. It's great -- so much better than lilo! Anybody remember what a pain lilo was?
# # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub #
Oops, wait -- not with grub2. Now I'm not supposed to edit that file. Instead, I edit files in TWO places, /etc/grub.d and /etc/default/grub.conf, and then run a program in a third place, /usr/bin/update-grub. All this has to be done from the same machine where you installed grub2 -- if you're booted into one of your other distros, you're out of luck.
grub2 takes us back to the bad old days of lilo. FAIL
Grub2 really is a soft slimy worm after all.
But I have some ideas for workarounds. If you care, watch my next
few articles on LinuxPlanet.com.
So a couple of weeks ago, as I mentioned previously, I made a couple of trips out to my alma-mater Rensselaer Polytechnic Institute (RPI) in Troy, NY.
First, my co-worker John and I ran the Red Hat booth at the RPI Spring 2010 Career Fair. We were there for a little over four hours and by the end of it I had all but lost my voice. As one might expect at a school like RPI, every person who came up to speak to me (except for a biology major) knew exactly what Linux was, and the majority of them ran or had at least tried Linux themselves. Ben Boeckel, a current RPI student as well as Fedora contributor, dropped by so I got to say hi to him at the career fair as well.
A couple of days later I drove back out to RPI to give a talk on how to get involved in Fedora at the Rensselaer Center for Open Source meeting. Professor Mukkai Krishnamoorthy, one of the directors of RCOS and a much-beloved RPI CS professor, made all the arrangements for the talk. Now, the Rensselaer Center for Open Source is an initiative to support RPI students in researching and developing free & open source software (a list of the students’ current and past projects is behind the link.) I really wish this opportunity had existed while I was a student!
The mission of the initiative as put by alumni Sean O’Sullivan who provided the funding necessary to start it:
We have a duty to our fellow man to improve life on this planet. While technology has always been a huge enabler in improving quality of life, we now are at a point where, through open software and open content, these improvements can come at close to zero cost, opening up opportunities to all… particularly in Third World situations, but also in government and consumer applications, open source solutions can cut through economic, political, and social divides, and enable people to simply get the job done. This center at Rensselaer may very well become a model for accomplishing this.
So, what a great group to talk to – what an opportunity! It seems like the RCOS mission and Fedora’s values have a lot in common. So, I had a little under an hour to talk about Fedora. There were around 50 folks in the audience, mostly RPI computer science students. I had a box of swag to give out (thanks to John Rose and the NA Ambassadors!) – two T-shirts, 40 Fedora discs, pens, buttons, etc. I set out all of the swag except for the t-shirts on a table before the talk and had the students come up and grab what they wanted – making sure they had the right arch media. Then at the beginning of my talk, we decided I would give the two t-shirts to the two folks who were the first to ask good questions.
The talk was thankfully very interactive – I was reminded of why I had loved RPI so much, because of the students – their curiosity, willingness to speak up, and their smarts made giving the talk a lot of fun!
The students asked really good questions. We didn’t get through all the slides but I think that’s okay, the side-discussions we had were worth it. Here’s how the talk broke down:
I was really happy to see how many women were in attendance. I was also pleased at how many questions the students asked. One question that came up which provided some comedic value – a student asked, “Hey, does RPM still suck?”
I asked him, “Well, why do you think it sucks?”
He replied, “Dependency hell!”
“Hmm… I haven’t had issues with that in a long time. When was the last time you used an RPM-based distro?” I asked.
“Red Hat Linux 6.”
“I must have been in middle school back then…. I think a lot has changed in that time period!” I responded and everyone laughed.
Does RPM suck? I’ve not had any issues with it in a long time. I heard someone say, “‘You know I always heard it sucked but I never really tried it.’” It’s kind of sad perceptions like this linger for so long, but I guess it means we need to have these discussions to make sure folks know where we’re really at.
Anyway, 6 or 7 folks came up to me afterwards so I was there talking to folks for about 30 minutes afterwards. I ran out of all of the swag I brought except for a few 32-bit live media discs (everyone wanted 64-bit.)
Here are my slides – they are licensed CC-BY-SA 3.0:
By the way, if you want to follow the RCOS student projects, they have a project dashboard (the dashboard itself is an RCOS project as well!, thanks to Graylin Kim for the link). You can also follow the students’ blogs at the RCOS blog planet, http://rcos.cs.rpi.edu/.
(Thanks to my colleague Jon Orris for coming by to show his support and for taking the photos of the talk!)
Das Scribus-Team freut sich, ab sofort zusammen mit dem Linuxhotel eine professionellen Ansprüchen gerecht werdende Schulung mit dem Titel DTP mit Scribus & Co. anzubieten.
Bisher sind zwei Kurse von jeweils fünf Tagen im Juni und im September 2010 geplant. Weitere Termine teilt das Linuxhotel auf Anfrage mit.
Bitte beachten Sie, daß die Teilnehmerzahl begrenzt ist. Eine frühzeitige Anmeldung ist daher sehr zu empfehlen.
Kontakt: info@linuxhotel.de
9% of Ubuntu systems that were used to report bugs that included their /proc/cpuinfo file need to fix their BIOS settings to gain the NX bit.
Check for yourself. (Run it with --verbose for useful details.)
Out of 7511 Ubuntu bugs Brian Murray collected for me that included /proc/cpuinfo files, there were 7270 unique contents (which surprised me — I was expecting this to be much lower).
It’s this last group of systems I’m hoping to get fixed through education.
Recently there was this Slashdot story about a laser-powered mosquito weapon that cost $50 and killed hundreds of mosquitoes a second.
That's well and good, but here's what I've been having so much fun with — the Mosquito bat. This thing also zaps mosquitoes, but by electrocution. It looks like a tennis racquet, and you wave it at mosquitoes like one. And the best thing is that it costs 160 rupees (roughly $4) and plugs into the wall socket to charge its internal rechargable batteries.
Unlike Bill Gates, people like me have a ton of experience having mosquitoes around them, lots of mosquitoes. You can catch/kill a few, but it is dirty work and there are many still left. Pesticides such as mosquito coils, mats and liquids are not very effective at driving them away and are harmful to humans too.
This mosquito bat rocks. Someone give its inventor a Nobel prize. It has a safety button so that you don't accidentally zap yourself. It's easy to clean a room out in a few minutes. It's also so gratifying to zap mosquitoes (damn no good blood suckers #@3#%$#$@#$!@#).
OTOH, I'm sure you've heard of StartSSL by now.. that service which offers as many free domain-validated SSL certificates as you want. I used to think these were not supported in Internet Explorer, but apparently their root CA certificate has been accepted into IE. What's so cool about them is not just this, but how their system of validations is organized. They validate you (individual), your email address, your domain, etc. separately and these validations can then be used to get products from them.
Another unique thing about them is their OpenID system. You use https://username.startssl.com/ as the OpenID and on the StartSSL website, you authenticate with your client SSL certificate instead of any passwords.
Recently I’ve been working on a UI revamp of authconfig-gtk AKA system-config-authentication. Here is
the existing UI:
From what I’ve gathered about this UI:
That last point leads me to classify it as a good example of a box of chocolates GUI, meaning ‘you never know what you’re going to get.’ Configuring isn’t really a task that most people really have as a life goal nor is it something generally considered fun (it’s the cool stuff the configuration eventually enables you to do that’s fun!), so I think configuration / administration UIs like this often degrade to the ‘box of chocolates’ state. Authconfig-gtk will try each combination possible from your selections, trying each little chocolate, er, moving on from failure until it hits one that ends up being cherry creme-filled, er, actually works.
The catalyst for revisiting the UI is a cool new technology called SSSD that folks such as Stephen Gallagher and Dmitri Pal are working on. SSSD stands for ’system security services daemon.’ It is going to unify identity and authentication access and enable features such as offline login and caching support for centrally-managed system logins (e.g., you don’t need to be on your corporate VPN to be able to log into your laptop which uses an LDAP account on that VPN.) The challenges:
At first I struggled a little bit with how to handle the situation. For Fedora 12, a panel specifically for SSSD was simply grafted onto the existing UI, and the model was a little similar to how the GNOME Shell preview works in the Desktop Effects panel of Fedora – it’s this new technology you can ‘enable’ or ‘disable’ in a modal manner:
For Fedora 13, the path Stephen, Dmitri, and Tomas Mraz considered at first was to build a shiny new and fresh UI to handle SSSD-specific configuration, and keep the legacy UI as-is alongside it, with the plan to eventually retire it. The first set of mockups I put together along this path exposed some problems that Matthias helped identify as being too problematic:
Matthias really helped me on the path towards a design that I feel is a whole lot cleaner and simpler to use. Simply put, the new approach here is to take the existing UI, bring it up to speed and give it a clean overall design, and integrate the new SSSD technology into it without it being so painfully apparent which stack is doing what by having the divide between two different and somewhat intersecting UIs. Here’s the breakdown of changes in this new current redesign proposal:
One interesting design problem that popped up was how to handle smartcards. Nalin and Ray very patiently explained to me how they work – the model is different than the other technologies which really conflicted with my own mental model of the situation. Smart cards can be used to authenticate local and network accounts. So if I have a smartcard with the account ‘duffy’ on it, and I have both a ‘duffy’ local login on my laptop as well as a ‘duffy’ login on a corporate LDAP server – when I plug in my smartcard, how does it know whether or not it should log into my local account residing on my laptop, or my corporate account residing on the corporate LDAP server? If I understand correctly, you can’t just configure smart cards to only work for one or the other without affecting other login methods too. So rather than making smart cards another authentication method for LDAP as originally proposed, smart cards are an option in the ‘advanced settings’ tab that you can turn on for both local & remote or off for both local & remote.
Anyway, enough jibber-jabber. If authconfig-gtk / system-config-authentication is a tool you’ve used or if you work in an environment that has centrally-managed logins, please let me know if these mockups make sense or where they might not work in your environment. Or, if you see stupid mistakes or flaws in some of the assumptions / methods I’ve described here, please feel free to holler. We’d love to hear your feedback! (and at the very least, I hope this description of some of the design process behind the revamp is interesting for you
) The full current UI revamp proposal is here.
<object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/sI8ldDyr3G0&rel=0&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed allowfullscreen="true" allowscriptaccess="always" height="344" src="http://www.youtube.com/v/sI8ldDyr3G0&rel=0&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1" type="application/x-shockwave-flash" width="425"></embed></object>
Pure Physics with Nikon gear – and what beasts of lenses!
Hey this is malefico writing.
Bassam kindly invited me to write something about Plumiferos’ release happening this week. It might sound strange to read something about Plumiferos here but in fact it is not.
Some of us in the team, Bassam, Juan Angel and myself were part of the biggest film project done in Blender so far, and here’s the good news: it is finished. And it is showing in the theaters in Argentina as you read. The first Blender made feature film. Ever.
We are very proud of have been part of it
It was because of Plumiferos that I met Bassam, Juan and other wonderful people like Andy and VenomGFX. And for that I’m certainly grateful and happy.
Here’s Juan Angel writing…
I agree with Malefico, about learning from it… The best part of it, instead the experience, the learning (technical and human), and getting new knowledge and skills…
But the best part, as the Plumifero’s director (Daniel De Felippo) told me… was knowing those couple of amazing people… Malefico, Pico, Ivan, Diego, VenomGFX, Bassam!, Andy!, Daniel… and some others too…
A mathematical model of hallucinations, courtesy of Joakim.
On February 12, 2010, mrdocs made the official announcement of the availability of version 1.3.3.14.
This represents the final version in the 1.3.3.x series, so now all developmental effort focuses on 1.3.5+ and beyond. Go to downloads to find your way to this latest stable version.
Sorry about the duplicate RSS posts if you're seeing them, due to a local mis-configuration. The content appears on two different websites, and I put in the wrong URL.
Last week was devoted to add support for abr and vbr brushes. The abr file format comes from Adobe Photoshop, the later comes from Gimp. The motivation for this were the big collections on the web. Sites like deviantart.com are full of the artist’s collection of the abr brushes. The motivation is also interoperability with GIMP and with proprietary Adobe Photoshop. vbr brush support was postponed because it was too much work just to support abr brushes.
First day I started with exploring the abr format, so that we know each other a bit. I started to write simple code to parse it, but I found out that the issue is so complicated. Valek Filippov is working on the python script which parses abr brush, so I started with that one. Important note: We support only brush format v1, v2 and v6.2 (Photoshop CS2). The newest format is not documented at all and there is not open-source implementation around. It would require a lot of reverse engineering and that takes so much time, that we would need much more time then one week for it.
Next day I realized that it would go too slow to just work with the script and I felt that we need to draw soon. So me and Boudewijn, we googled for other sources and we found GIMP plug-in which is maintained version of the work based on this code. It parses just the bitmaps from the abr file format. That’s the basic thing you need to parse out of the brush file format. There are many other options saved in abr brushes, like the setting of the brush engine (attributes like diameter, spacing, angle…) but we don’t parse them yet. Valek Filippov’s script does. We have chance to have better support for the brushes, the settings look like our brush engine presets.
I was porting the ANSI C code which used the glib to Qt. It took two days to port it correctly. Next two days has been devoted to integration into Krita. The architecture for the brushes is powerful, but it is not easy, so I spent time investigating how it works and what do you need to do so that your brushes are correctly displayed and painted.We load all the brushes in the memory when Krita starts. Krita uses nice resource architecture, but it did not have support for importing one file as many resources. Abr brush consists of many bitmaps, which we use as brush masks so far. Sven Langkamp helped with that. Boudewijn Rempt helped a lot by doing preliminary integration code and then I was fixing it so that it works. We decided to reuse the brush chooser dialog we use for gbr brushes (other Gimp brush format). For the future it would be cool to have more features in the brush chooser dialog, or maybe we will need to write different widget for abr brushes. Some categories would be useful.
The painting with abr brushes does not work yet. I will work on the bugs. We get the correct image in the brush generation code, but we paint plain colored rectangle instead. There are some minor bugs that needs to be fixed too.
For the future it would be useful to support the attributes of the brush engine saved in the format. Our brush engine should support most of them, maybe some features will have to be coded and some are hard to implement as there is no specification for them.
Here is screenshot showing loaded abr brush into our brush chooser. The code is already in trunk, so you can at least see your brushes in the chooser. I hope we will be able to paint tonight!
13:57 update: The problem is fixed and now I paint with the abr brushes!

I'm thinking of running Google ads on banu.com, this website, etc. Hosting a server costs $69/month which I paid for the last 3 years from my pocket.
We want an automated build system now for Tinyproxy as it is used on several different platforms, but the current server is incapable to host even a buildbot let alone centrally accessible VMs for it and a capable one costs quite a bit more.
We can't sell this software, or offer consulting services (embedded device manufacturers prefer to hire someone in-house who can customize various other software for the device too). If such free software projects are difficult to sell, surely there must be other tolerable ways of generating revenue to pay for hosting it.
I'm going to try it, at least as an exercise.
I'm thinking of running Google ads on banu.com, this website, etc. Hosting a server costs $69/month which I paid for the last 3 years from my pocket.
We want an automated build system now for Tinyproxy as it is used on several different platforms, but the current server is incapable to host even a buildbot let alone centrally accessible VMs for it and a capable one costs quite a bit more.
We can't sell this software, or offer consulting services (embedded device manufacturers prefer to hire someone in-house who can customize various other software for the device too). If such free software projects are difficult to sell, surely there must be other tolerable ways of generating revenue to pay for hosting it.
I'm going to try it, at least as an exercise.
The ads didn't work well. After a full day, none were clicked. It appears that users don't find the ads or the content interesting.
I searched for why this is so and found that there is an entire community and market around how to increase click-through rates. Reading through techniques to increase click rates such as placing ads in irritating locations, getting your site linked from various websites, adding content to receive more traffic, etc. felt like being at the bottom of the barrel. Programming is so much more nicer.
So I die poorer, but at least I'll keep my websites clean and have fun. The ads are gone.
Missing in current builds of blender 2.5 is the venerable ctrl-c ‘Copy Attributes’ menu, that copies attributes from active to selected objects (or bones in pose mode). Partially because I miss the functionality, and partially to start learning the new (awesome!) py api, I took some time to try bringing the menu back, both for pose mode and edit mode. The result can be seen here:
Some of you might have a hunch of my interest in aviation and airplanes, so it's no wonder I wanted to help our aviation club a little. The two-seater trainer aircraft was in a desperate ned of a new paint, and we wanted to have a new color scheme at the same time to freshen up the appearance. There were some restrictions for simple financial reasons, so the plane was to have a white base paint and all the color stripes would be done with stickers. Nevertheless I am pretty happy with the result.
I first went to the airport and took some pics of the her side profile with my N900 and sketched some ideas with pen and paper and finally in Inkscape where I opened a 5.5 meter by one meter canvas...
The flight manual of the plane contains a three-way view of the aircraft, so scanned the page and used Inkscape's excellent tracing tool to turn it into a base for my design, and resized it to the corrent size of the aircraft.. This must have been the largest canvas size I have had so far in a design project...

Design work done in Inkscape
The design evolved a quite a bit and I always had a bunch of the latest sketches in my N900 to show to club members who gave me good feedback... And eventually we had something we were happy with, and a PDF file of the design was sent to the paint shop a while ago. Stripping a plane from the old paint is quite a lot of work, and takes a while, so they sent us back some photos of the work in progress..

Aircraft partially disassembled before paint stripping

Paint stripped, masked for spraying

Empty canvas!
And finally today we got the much anticipated message in our mailboxes, the work was nearing completion!

Stripes in place!
It's always nice and rewarding to see a design work transform from bits and bytes into something physical. Even better if you can strap yourself into it and go flying...
Warning: no videos included, though they would help a lot. Also note that I'm using an Intel chipset in both my laptops (the big one also has an ATI chipset, but that doesn't work.)
Lukas recently discovered that Krita was taking about 100% of one of his CPU's cores. When moving the mouse over the canvas. Since X11 took about 60% of that CPU we immediately thought of painting issues, so I started testing with KWin's Paint desktop effect enabled. That effect overlays every rect that is redrawn with a color.
It quickly became clear that for some reason, updating the mouse position lable in the statusbar would update all of Krita's window: menu, toolbars, canvas, toolbox, dockers and statusbar. Curiously enough, Karbon only updates the statusbar. When I disabled the mouse position label in Krita, the CPU usage was gone.
Then I started playing some more, also on my other laptop and now in Ersingen for the KPresenter sprintlet, we tried the same on Thorsten's laptop. And I'm puzzled by the results:
On my X61t, the areas covered by the tooltips of the icons in the system tray is redrawn constantly, all on top of each other. If the panel is visible, and I make Krita full-screen, the area covered by the clock, underneath the Krita window, is continuously redrawn. This runs KDE 4.4.62, on OpenSUSE.
On my W500, the whole screen is constantly completely redrawn. No wonder Desktop Effects feel slow on that laptop! If I make Krita full-screen, no matter whether the statusbar is hidden or not underneath the Krita screen, the redraws are gone. This is KDE 4.4.0 rc3, on OpenSUSE.
On Thorsten's T60 (ATI chipset), we don't see the whole-screen redraws, but we do see a rectangle in the middle of the top-left quadrant of his screen, near, but not exactly at, the place where Thorsten keeps his clock that gets redrawn constantly. This is KDE 4.4.0 final.
But when we are testing KPresenter's animation framework, we see that we only redraw the shapes that are moving, so that's good! (Except when two shapes move, then Qt apparently decides to repaint the whole rect that contains the two shapes.
Well, I'm puzzled, so I'm posting this. Obviously minimizing repaints is trickier than I thought, and it seems especially difficult to limit repaints to the minimum necessary.
This is a lovely endgame from Chess in U.S.S.R. (1935). White to play and win.
2B3K1/8/3N1p1p/6pk/5P1P/6P1/7r/5r2 w - - 0 1
Note: If you want to check your solution, any decent chess engine such as Crafty used with XBoard or Scid can give you a good analysis for this problem. Do not use the GNU Chess engine for this problem, as it fumbles and completely loses white's advantage.
In this position, black's king can move to just one square g6 and back. It is otherwise blocked by white's bishop and its own pawns. 1. Ne8 ... 2. Ng7+ Kg6 3. Bf5# is a line that white would want to play. Black knows this. So it counters with 1. ... Kg6 which is an impressive move as the knight cannot attack it anymore. Black could have played 1. ... f5 to block the bishop and let its king move to g4, but that'd have led to 2. Bxf5 ... 3. Ng7#.
White knows that black's king is trapped in g6. It can check the black king and force a rook move by playing 2. f5+ ..., but that would lead to 2. ... Rxf5 3. Ng7 ... and not lead anywhere with the loss of a pawn. With the other way 2. h5+ ..., black can play either 2. ... Kxh5 or 2. ... Rxh5. The former would lead to a mate as 2. ... Kxh5 3. Ng7+ Kg6 4. Bf5#. So this forces the rook move.
Now, white would like to mate by playing the following: 3. f5+ ... forces 3. ... Rxf5. Then white would play 4. g4 ... wishing to finish the game with 5. Bxf5#. Black, sensing the threat, moves the rook in f5 out of the way, still attacking that square.
White then has a definite mate with 5. Ng7 ... 6. Bf5#.
This is truly a sweet endgame.
Download the Video! (31.0 MB, 16:18)
Download the Video for mobile devices! (29.8 MB, 16:18)
Download the Torrent!
Download the Companion File!
This week I have a challenge for you. Do my homework and edit my shot from our Samba Carneval. You’ll find the JPEG and the NEF (RAW image by a Nikon D200) of a shot I did from my window. It is not a good photograph but catches a beautiful moment. Improve the image, store it somewhere on the Internet and post a link to it in the comments. You can embed a small version of it in a comment, just copy the HTML code from 23, flickr or other sites. It should be there in a box to cut and paste.
Then I’ll tell you why you always shall set your camera settings to a defined standard state before you put your camera in the bag or cupboard. I didn’t and it has ruined a whole series of shots from this occasion.
Have you ever wondered how to make a selection with a zig-zag border? Well, if you have, I have the answer. (Stolen from Saul Goode, BTW
) I was reminded that a Quickmask is an image and so can be editied much better than a selection. Making waves and sawteeth into it then is “elementary”.
And finally I reveal how I built a dust free blackboard and chalk with GIMP. The blackboard from the “Basics” series looses its mystery.
I made a TOC and forgot to save it.
For some the calendar is based on the sun; for some, the moon. For we of the Tube project, the calendar is loosely tethered to the inscrutable workings of the Hampshire College academic year. Hosted as we are by its Computer Graphics Incubator Space, the project has fallen under the influence of local rhythms. In the crunch to get ready for the ambitious schedule on which we embark with the start of this new term, the blog has fallen a bit quiet — so there is a backlog of cool developments to relate!
Tube is in part an experiment in distributed collaboration, with a team spread all over the globe, but we also have a great and growing cluster of people collected at the “drome”. Look out for numerous additions to the ‘team’ page, including several satisfying adjustments to the chromosomal divide. We have also been very pleased to welcome Jarred de Beer back from South Africa for a second stint, upgraded from Intern 3D Generalist to Senior Vice Volunteer. And in more good news, yesterday his travel papers came through, so Pablo Lizardo joins us next week from Argentina!
Before things really heat up around here, Bassam and I took a little holiday to visit family in the UAE. On the way back, a long layover in Amsterdam allowed us to drop in at the Blender Institute where the Durian open movie is underway.


Ton kindly made us coffee and invited us to Durian’s morning meeting. They are hard into the grind, and we wish our brave compadres all the best with their fantastical enterprise!
Updates about the exciting progress of our own work will follow soon, stay tuned.
Here is a question to all you photography geeks.
I am currently near a magnificient temple in India, and have a decent DSLR camera. I want to take some photos of it, catalogue its various wall and ceiling paintings, etc. and of course, put them in the public-domain.
My cousin is a tourist guide in India, and knows about what is allowed and what is not. He says that though you can bring a DSLR camera into that temple and photograph the place, you cannot use a tripod as that'd take it into a professional realm. I'll try to get permission for a tripod, but meanwhile, do any of you have good ideas on how to stabilize without one? I surveyed the place a couple of times. These are all still subjects, but many shots are difficult (e.g., ceilings) and in dark places. Having something like a tripod would result in sharp photos.
Do mail me if you have any ideas.
Here is a question to all you photography geeks.
I am currently near a magnificient temple in India, and have a decent DSLR camera. I want to take some photos of it, catalogue its various wall and ceiling paintings, etc. and of course, put them in the public-domain.
My cousin is a tourist guide in India, and knows about what is allowed and what is not. He says that though you can bring a DSLR camera into that temple and photograph the place, you cannot use a tripod as that'd take it into a professional realm. I'll try to get permission for a tripod, but meanwhile, do any of you have good ideas on how to stabilize without one? I surveyed the place a couple of times. These are all still subjects, but many shots are difficult (e.g., ceilings) and in dark places. Having something like a tripod would result in sharp photos.
Do mail me if you have any ideas.
This might be nothing, it might be something. I’ve been getting rather fed up with mailing lists as the primary tool for organizing the Fedora release artwork process lately. Just for fun tonight I did a mockup of one page of the kind of web application I’d like to use to manage the process instead.
Inkscape source – please feel free to download and work it.
Maybe this goes nowhere (except to prove I really ought to find something better to do with my Friday nights….
)
Unhandled exception, error code = 5395.
I tried all sorts of things in the feedme code that calls Plucker -- adding --beamable, moving it earlier or later in the argument list, trying other arguments. --beamable is supposed to affect the "copy protect bit", but checking on the Palm devices confirmed the copy protect bit wasn't set, and still beaming didn't work.
And I just stumbled on the answer tonight, and since it's not documented anywhere, I must document it in case somewhere, there's someone else who still uses PalmOS and Plucker struggling with this problem.
It turns out that a document with a colon in the name can't be beamed. On any PalmOS device we've tried, regardless of generation or manufacturer. This of course isn't documented anywhere I can find.
So Fri: BBC World News isn't beamable. But simply give it a colonoscopy -- rename it to Fri BBC World News -- and beaming works great.
Sheesh! Ain't debugging grand?
GTK+ tip o'the day.
Do you have a GtkTable and some row/column is expanding when you don't want it to, and yet all of those row/column's children have EXPAND|FILL turned off? Put a GtkAlignment in the empty slots in that row/column, also with EXPAND|FILL turned off. It seems that GtkTable will let a row/column expand if some of the row/column's slots are empty, regardless of what the other children want.
This is the old gnome-display-properties:
And this is an improved version:
This is in the display-capplet-ui-cleanup branch.
With these changes, it should be more obvious which options belong to the currently-selected monitor. The dialog now fits in 640x480 pixels, which is nice for netbooks. The mouse cursor changes to a hand when you move it over the draggable monitors, so the ugly label with instructions is not needed anymore.
Update 2010/Feb/18 - The capplet is now in git master; the screenshot above is updated.