Graphics Planet

March 10, 2010 03:02 PM

Autodesk 3ds Max 2011


A Autodesk anunciou no final da tarde para o público o lançamento da versão 2011 da maioria dos seus softwares e ferramentas para modelagem 3d e animação, estando entre a lista de atualizações o 3ds Max 2011. Essa versão já apareceu aqui no blog diversas vezes sob os estudos do projeto excalibur. Mas, ainda não [...]

Making those Fn- laptop keys do something useful

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 00000012
You 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.

Design in Collaborative Projects

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.

People trying to pull a project in various directions.

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.

People pulling a project in the same direction.

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

People pulling in the same direction, but one is unhappy.

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.

Everyone paints the project in the color they prefer.

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.


Filed under: Illustration, Planet Ubuntu, Thoughts

Omnitarian

I think this talented Inkscape artist nicknamed Omnitarian definitely deserves more credit than he gets

cylon dorkshield

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:

Cylon DorkShield

Introducing Ramen

It looks like updating Graphics Planet takes too much time, so I’ll introduce one of the upcoming members now As many of you know we are somewhat limited in solid open source VFX production tools on Linux. True, there are all sorts of modellers and Blender seems to become jack of all trades these [...]

Blender 2.50 Alpha 2 disponível para download


Depois de uma merecida pausa de dez dia para tirar uma férias, coisa que não faço faziam mais de três anos, estou retornando a rotina normal de atualizações do blog. Agradeço a todos que enviaram e-mails preocupados com o sumiço. A viagem serviu para recarregar as baterias e ao mesmo tempo fazer algumas atualizações no [...]

Recipe: Crockpot Rouladen

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.

Crockpot Rouladen

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!

Week 5&6: Krita hackfest

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.

Krita team: Where is the vision?

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 headquarter

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.

Hi to Planet Ubuntu

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 :)


Filed under: Planet Ubuntu, Ubuntu

0.8.2 released

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.

Adding video to an OpenOffice Impress presentation

(and how to convert MPEG video to animated GIF)

I gave an Ignite talk this week at Ignite Silicon Valley. It was a great event! Lots of entertaining talks about all sorts of topics.

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.

Impress woes

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.

Inserting a movie

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.

Plan B: Animated GIF

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.gif
which 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.

The moment of truth

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.

Station concepts and Sequence editor

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)

working on a vision with Krita

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.

british invasion

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.

life is a beach

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.

hashing it out

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).

the knockout

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.

putting it all together

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.

instant karma

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.

the Bonnie situation

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.

different strokes

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.

STFU

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.

Krita’s Hackfest, meeting with the Blender guys

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.

Chile quake measured in Virginia well

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.

Water level chart

See other peculiar side-effects of the massive earthquake.

Beta 2 is ready

Time for a new beta. First one was very successful and several important bugs were found and fixed.

Beta2 will focus on quality and documentation, and will rest for a month.

I will give frequent updates on the status of the beta. You can download it from the link on the right.

The community support arrived :) !!!!

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


Writing a custom widget...

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!

Blender 2.5 Alpha 2 update

The alpha 1 version had a bad bug - not saving texture images - making it not a good test build. Here is the fixed version!

Gore Galore

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.

concepts_pablo

Pablo did the nice colourful ones.

I can't even spell my own name?!

Thanks to David, I finally fixed the header title of my blog to spell my name in Hebrew properly. David, don't hesitate to let me know if it still sucks :)

For the record, the banner was previously in Katakana, then in Arabic for a while (thanks Imed!), and in Hebrew since Eitan kindly transliterated my name for me.

If you have some Hindie skills, drop me a note :)

The difficult choice of removing features

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 ?

Krita is now focused on being a painting application

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.

Removing photographic-specific features

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.

An extension website

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.

System Error!

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. :-(

xput comparative 1.19 vs. 2.0



Here is the comparative for the code in git. I will publish beta2 in a couple of days. As you can see the xput improvements are considerable.


1.19
-----

16 bits on CLUT profiles                     : 10.6667 MPixel/sec.
8 bits on CLUT profiles                      : 9.75015 MPixel/sec.
8 bits on Matrix-Shaper profiles             : 3.8638 MPixel/sec.
8 bits on SAME Matrix-Shaper profiles        : 4.28495 MPixel/sec.
8 bits on Matrix-Shaper profiles (AbsCol)    : 10.4507 MPixel/sec.
16 bits on Matrix-Shaper profiles            : 3.92349 MPixel/sec.
16 bits on SAME Matrix-Shaper profiles       : 3.96924 MPixel/sec.
16 bits on Matrix-Shaper profiles (AbsCol)   : 10.6667 MPixel/sec.
8 bits on curves                             : 4.33839 MPixel/sec.
16 bits on curves                            : 4.3944 MPixel/sec.
8 bits on CMYK profiles                      : 4.09626 MPixel/sec.
16 bits on CMYK profiles                     : 3.96924 MPixel/sec.
8 bits on gray-to-gray                       : 24.3902 MPixel/sec.
8 bits on SAME gray-to-gray                  : 24.3902 MPixel/sec.


2.0
----

16 bits on CLUT profiles                     : 10.1394 MPixel/sec.
8 bits on CLUT profiles                      : 10.6667 MPixel/sec.
8 bits on Matrix-Shaper profiles             : 26.2726 MPixel/sec.
8 bits on SAME Matrix-Shaper profiles        : 30.1318 MPixel/sec.
8 bits on Matrix-Shaper profiles (AbsCol)    : 10.5541 MPixel/sec.
16 bits on Matrix-Shaper profiles            : 10.2433 MPixel/sec.
16 bits on SAME Matrix-Shaper profiles       : 9.84615 MPixel/sec.
16 bits on Matrix-Shaper profiles (AbsCol)   : 10.6667 MPixel/sec.
8 bits on curves                             : 30.0752 MPixel/sec.
16 bits on curves                            : 35.3201 MPixel/sec.
8 bits on CMYK profiles                      : 4.19727 MPixel/sec.
16 bits on CMYK profiles                     : 4.26667 MPixel/sec.
8 bits on gray-to-gray                       : 40.9207 MPixel/sec.
8 bits on SAME gray-to-gray                  : 40.9207 MPixel/sec.
8 bits on CMYK profiles                      : 4.3573 MPixel/sec.
16 bits on CMYK profiles                     : 4.55192 MPixel/sec.
8 bits on gray-to-gray                       : 39.312 MPixel/sec.
8 bits on SAME gray-to-gray                  : 40.9207 MPixel/sec.

Krita Meeting 2010 – Day 2

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.

Before everything is broken

As my awesome hosting provider is closing his servers soon, I moved my DNS to using GANDI's DNS servers, and my mail to Google's servers. Things should still be working as before, but do let me know if I really broke something...

Last Weekend in Krita

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 :-)

Oh -- and might I bring the following to your attention:

egosurfing with git

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
...

UX Hackfest in London

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.

Engineer <> Designer

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.

Solar Energy Survey

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)

http://www.petitiononline.com/sp3e1234/petition.html

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!  :)


OpenCL

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.


Krita Meeting 2010 – Day 1

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).

Wacom tablet does not work in Qt

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!

Tube – Behind the Chaos Video

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!

<video autobuffer="autobuffer" controls="controls" height="320" poster="http://tube.freefac.org/wp/wp-content/uploads/2010/02/behind_the_chaos_tmb.png" src="http://tube.freefac.org/wp/wp-content/uploads/2009/08/behind_the_chaos.ogg" width="480">
<source src="http://tube.freefac.org/wp/wp-content/uploads/2009/08/behind_the_chaos.ogg" type="video/ogg; codecs="theora, vorbis"">
</video>

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

Line-up pour Ignite Lyon finalisé

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!

Tea break! (and High-Quality vids)

We're currently closing up on some discussions at the GNOME UX Hackfest, and I'm going through my browsing history and cleaning up my TODO lists at the same time.

I thought I'd mention this nice link if you haven't seen it. Theora, when encoded with a newer Theora (Thunelsda) encoder, should at least match “MPEG-4” (in quotes, because I don't want to mention specific profiles, and get into a pissing contest).

Monty's been working on Theora and Vorbis quite a bit, and I'm pretty sure he would admit that the Theora of past didn't do justice to the capabilities of the codec.

Krita Meeting 2010 – Day -1

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.

Grub2 Tutorial, Part 2

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:

Cleaning up your boot menu (Grub2 part 2).

GIMP developers on loose

You’ve been craving for that, you really have: Yes, not only you can edit text on canvas in GIMP now, you can also use different styles in same text block. It’s as simple as selecting text and clicking a button. And full undo/redo works on text level too. All praise goes to Michael Natterer There’s [...]

Krita Meeting 2010 – Day -2

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.

fun with process scheduling

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…

We're (re)moving settings again

Currently at the GNOME UX hackfest in London, where plenty of good discussions are happening.

One thing we discussed recently is removing preferences. Everybody loves when we remove preferences because it gives them a reason to vent steam, and we love receiving abuse (“- Are you being sarcastic? - No, I never am.”).

There's been talks of "TweakUI" type functionalities in the past, with no one ever showing up, and putting their money where their mouth is, and implementing it.

Taking a well-known MacOS application as a way to represent super-tweaky (or crack-rock, depending on which way you look at it) settings and preferences, Jakub (with help from the ever tweaking Hylke) mocked up “GNOME Plumbing”.

PLUMB!!1!

The honorable Vincent Untz has volunteered with implementing the settings pane for the gnome-control-center to go along with the changes in other capplets.

The reasoning behind removing settings is never made to antagonise people. There are various reasons, taking into account the increased complexity of preferences and settings, the ratio of people using such features, and possibly the maintenance costs of having more tweakable bits. Contact your local designer if in doubt :)

A lot of us had hoped that gconf-editor could serve as a crutch, hoping the community (in that case, the community of the more vocal people that complain about the changes) would handle creating the settings tweaker that was alluded to so many times.

We're hoping this will be the end of complaints when features get “moved” for design decisions.

PS: We copied a Mac app, not because it's a Mac app, but because it had the simplest UI for displaying seemingly unrelated settings, and making potentially complicated settings easy to understand. Thanks guys for making hard things easier.

Adding Chapters to Totem

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:

Nautilus discussion

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.


Filed under: Uncategorized

Happy Blog vs. Misery Blog

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.


Filed under: Uncategorized

A bug solved!

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:

http://www.pasteall.org/11270/diff
..and also a new basic test file, this one shows a basic compact  fluid, play with it adding containers and such, just don’t forget to add collision options to the container similar to the floor ;)

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


Charline’s Empathy Usability Report

GNOME UX Hackfest Wednesday

This morning Charline from Canonical presented a report on an empathy usability test she’s completed. These are rough notes split into topics:

Usability reports in general

  • There was some discussion of the usage of user quotes in usability reports and their utility
  • Audiences for test:
    • People who report bugs, developers
    • Some confusion over how testing on Ubuntu would have effected the test results – e.g. how did notify-osd behave to the user…
    • Usability folks
  • Consider referencing products / screenshots that show a solution to the problems presented as inspiration
  • When users fail to do a task, it would be useful to document the paths they tried / the mental model they had that failed. Even things they wanted to do that could never work in the current implementation – could be good ideas for a way the UI could work.
  • Indicate how many users said something. If only one user suggested something, that should be clear from what all or most users said.
  • We need help to get these filed as bugs. Would community members be willing to support usability by splitting reports like these into actual bug reports?

On-Board Experience

The on-board experience in empathy confusing. There’s one status for multiple accounts, but sometimes accounts don’t share the same status.

Ideas:

  • present list of networks on left pane
  • sniff out accounts from web browser
  • allow users to authenticate using web browser when possible
  • sniff out accounts from evolution

GNOME UX Hackfest Wednesday

Identity information & Display of user information

Overall users were anxious because their own information was not being displayed in empathy and they felt a lack of control over it.

  • People didn’t know how they appeared to other people
  • “I used 2 different names and would like to know how my name is displayed. I don’t know how to check which name is in use!”
  • “I can’t see me that worries me bc I don’t know how exactly how I am being seen or not seen.”
  • “Available” status dropdown at drop looks like a filter and not status.
  • people not sure if the camera was turned on or off – worried people can see me without my knowing
  • Is this person willing to be contacted by camera? having a camera doesn’t mean you’re willing be contacted by it (e.g. if they are at work)
  • Some discussion of camera icon – wasn’t a problem for users to interpret in empathy but apparently the gmail camera icon sucks and confuses people
  • People didn’t have a problem mechanically changing their alias but they didn’t understand where it was put into place. What is the difference between login ID and alias? There are actually local and remote aliases in empathy… in actuality, its usage is inconsistent based on the networks involved.
  • “I’m not sure what I’m doing. I cannot fill in my name as I want it to be shown.”
  • “Now I have a light bulb and no green light beside my nework. I don’t know if I am available anymore. How come Jenny is available and I am not?”

Displaying information around people

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.

Interacting with Others

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.

Sending and receiving files

  • Confusion around the icon for file sending. They didn’t associate the arrow icon with receiving a file.
  • Once the file was received – they would click on the sender’s name, expecting the file to be showing there. They looked around to find it. Where did I download it to?
  • GNOME’s way of handling bluetooth files is awesome and is a model maybe we should follow here?
  • People would have liked to get some information about the file so they would know where to store it – is it a photo? music?
  • In Google Talk, you can send someone a file if they are offline / about to go offline and they can get it when they come back online?
  • Some mention of Yahoo! messaging’s shake-window feature and how irritating it is

Creating Groups – treating groups differently

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.

GNOME UX Hackfest Thursday

Tab interaction

  • Very positively received. They felt it was very natural.
  • A known area of failure is having 20+ conversations at once.
  • One tab issue that came up – where users detached the tabs and put them back together – their instinct was to drag & drop to put tabs together, but they dragged and dropped from the top and it didn’t work. People didn’t figure you have to drag from where the name is. One way Mac tried to handle this is to have a drag and droppable icon to represent the document in a document window up in the titlebar. Makes it easy to move the folder you’ve already got open rather than have to go one level up to grab the folder icon.
  • Some discussion about if you’re talking with person a in one tab and person b in the other, concern about confidential info that person in tab a can see but not person in tab b, especially with copying & pasting.

Searching conversations

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.

GNOME UX Hackfest Wednesday

Minor issues / Wishlist / bugs

  • When you first open empathy, it starts the icon but it doesn’t open a window. People didn’t know if it was open or not. Grey icon not noticeable.
  • Default settings were an issue – people didn’t expect that their contact list would be in alphabetical order. They expected it to be sorted by status.
  • The ‘offline’ grey box icon looks like a checkbox, some users thought it was clickable
  • People didn’t understand the little broom icon for clearing fields. Better to have a grey X within the entry field itself. Some people thought they had to click the broom to activate their account and lost what they had just typed.
  • People couldn’t figure out how to create favorite status messages. The empty star icon was too pale and was not noticed.
  • People had an interesting way to use customized messages. They thought the message was like a status update like in facebook rather than be associated with the icon. So they typed ‘please don’t disturb’ next to the green icon.
  • People didn’t understand the dialing pad sidebar was for. They clicked on sidebar and saw it and were mystified.
  • Sometimes button in the account dialog is ’save’ and sometimes it’s ‘login’ – sometimes they didn’t want to log in, they just wanted to create the account.
  • One icon conveys several meanings for status – invisible and offline use the same icon.
  • There’s an edit custom messages – but no favorites.
  • When wanting to add a contact, users didn’t understand what ‘identifier’ meant. Vocabulary was confusing.
  • “It is one thing to have a camera, but another to know if [my buddy] wants to use it.”
  • Button missing besides status box. There’s an invisible button beside the status area in the main window that is a shortcut to the accounts dialog.
  • Notifications – users liked that it flashed to signify urgency? When you first go online there’s a notification of who in your contacts is online. One of the users was a very heavy IM user, and when he gets online he’d have 300 people there and that notification would be unmanageable for him.
  • Sometimes there’s a ‘find’ button to search, sometimes you have to click ‘enter’ and there is no button to search. Between the ’search’ and ‘conversations’ tab of the search window.
  • There’s not a lot of distinction between sound and notification, so why are they in two different tabs in preferences?
  • Renaming accounts – people had a tough time getting this to work. They didn’t understand what alias meant, and they wanted to rename their accounts. They didn’t think in terms of their username, but in terms of the network.
  • Users would like to know when someone is offline or busy – how long ago did that status change take place? E.g. if someone got offline 2 minutes ago, might be able to still send an email or phone call – but if it was 16 hours ago, different situation.
  • People thought the use of color in looking at previous conversations is not contrasting enough at a glance – the difference between green and blue is not contrasty enough.
  • One person asked for some branding – if they knew the application was ‘empathy’ – it doesn’t call itself empathy anywhere. They didn’t know where they were. One user said, ‘the interaction in the application, feels more like an email than with IM. IM is friendlier, and less formal. More feedback and interaction when using the app – but this feels more like email and more formal.’ A little discussion here about extroverted apps like AOL vs more introverted apps like email.

Charline will be making the slides available shortly.


Filed under: Uncategorized

SCALE 8x

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):

Friday:

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.

Saturday

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.

Sunday

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. :-)

Exhibitors

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.

Beginners and Hobbyists

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.

Misc. Notes from GNOME UX Hackfest, Tuesday

Here’s just a quick summary of notes from the discussions I was in yesterday at the GNOME London UX Hackfest:

OSD & Panel Icons

Moblin icons

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

Challenges

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:

  1. Add an extra stroke of the shape in an inverse color around the outside of the icon, similar to how Tango icons have two outlines, one light one dark.
  2. Pick the colors from the gtk theme.

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.

To do

What work needs to be done to make this happen for GNOME?

  • Icon recoloring – make it possible to recolor the icons to work on any background. Can we implement them so they pick the color from the GTK theme settings?
  • We need additional icons for GNOME Shell that are not in the current Moblin set: battery, network, status are some examples.
  • We need to see if the Moblin icon theme license will be an issue for GNOME usage. Moblin is Creative Commons Share-Alike 3.0 => is it compatible with GPL? Will this cause any issues?
  • Consideration: in the indication of extremes – if volume is all the way up or all the way down – color it so it is visually different?

How to get involved

The mailing list gnome-themes-list might be the place to continue the conversation.

Nautilus discussion

Nautilus discussion

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:

  • remove combo box to change nautilus view, just use menu?
  • frustration that nautilus is becoming like midnight commander, not beautiful to use, too complicated
  • dont like split pane idea, why not use two windows? split-pane seems universally disliked by GNOME designers.
  • snap to side-by-side like in windows 7 would be good and would remove need for split-pane.
  • search in nautilus sucks
  • confusion between magnifying glass icon for search vs zoom
  • Things to consider removing from ui:
    • zoom controls
    • tabs
  • Things to add to ui
    • undo
    • search folders
    • sharing / collaboration – share with
    • context-sensitive actions toolbar

Improving GNOME Designer Collaboration

Two main features that would make life easier:

  • Easier syncing of files
  • Version control

Garrett and jimmac use Dropbox for this today, but it is not open source and is capped at 2 GB.

Canonical Use Case Mapper

GNOME UX Hackfest

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.

Special bonus tips that happen when us designers are in the same room

Garrett shows off the Gimp whiteboard photo trick

Both of these gems are from Garrett:

  • I kept trying to take pictures with my digital camera when my memory card was not in it. Garrett’s tip: leave your memory card door open when it’s out so when you pick up your camera you know right away the card’s not in it.
  • In Gimp, filters> edge-detect > difference of gaussians, radius 1: 30, radius 2: 2 – results automagical cleanup of whiteboard photos (like the one in my post before this)

Hope these notes are useful for you.


Filed under: Uncategorized

GNOME Vision Brainstorm

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:

GNOME vision?

Here are the components:

  1. Application Launching
  2. Notifications
  3. Switching contexts (apps/windows/documents)
  4. Support flow/focus
  5. Provide the date/time (maybe not the hugest function, but…)
  6. Sync & share / collaborate
  7. Project management / to-do management
  8. Store my personal database
  9. Some other random ideas generated from this discussion:

    • When I use GNOME to create as opposed to consuming, there’s an awful lot of data about me GNOME knows that it should be applying to the things I create. For example, why should I have to fill out the Dublin Core metadata entries for every single Inkscape document I create? Why aren’t I automagically added to the author field? GNOME knows who I am….
    • When my file touches another person’s computer, what if a log entry was added to the file. Then it’s emailed to someone else, and when it lands on their computer another entry – so on and so forth until the file has a history so you know where it’s been…
    • When someone collaborates on a file I created, their name is added to the list of authors in the metadata…
    • Having your desktop be your facebook rather than facebook. E.g., if Seth is in my address book, I can see not only his contact information, but documents and other stuff he’s created that he sent me, my chat logs with him, his blog posts, other output from his online identity…. but gathered automagically, not so I have to gather all these links on my own. E.g., how the Palm Pre grabs your contacts’ facebook avatars to display when they call you – it grabs that data for you.
    • Suggesting licenses to reconcile / suggest a license for a work you’ve created when it uses sources of varying licenses (or alerting you when they are incompatible)
    • Version control – even on remote servers…. if you have git on your client, make your local project folder a git repo, and then you can sync it to a remote server, along with all of the git metadata so you can even have version control when the remote server you’re synching too doesn’t have version control installed / available to you
    • You interact with files differently based on whether or not you created them or consume them (they’re from somewhere else)
    • You interact with files differently based on whether or not you are actively working on them / with them vs. you finished with them and they’re archived. (For the former, you kind of want them in your face; the latter you don’t mind searching for them.)
    • Have offline-disk access. E.g., store metadata about disks you’ve plugged into your machine in the past but don’t necessarily have connected now
    • Synching files to work with other people
    • Synching files so that they’re available across the devices you own (laptop, desktop, phone, etc)
    • context-sensitive notifications, maybe one-shot notifications. I’m waiting for Ray to come online today, but I don’t want a notification every time he logs on or off. Just this one time. Vs. I always care about when he comes on or offline, but I don’t care to be notified about anyone else’s goings on.

    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?


    Filed under: Uncategorized

Como importar arquivos do SketchUp para o Blender?


A criação de cenários virtuais para projetos que envolvem jogos ou animações 3d sempre são um problema de logística, pois demandam muito trabalho dos artistas 3d para coisas que devem ficar em segundo plano no projeto. Por exemplo, ao desenvolver uma animação em que os personagens ou objetos do plano principal desenvolvem seus movimentos e [...]

Robots

Robot 1

Robot 2

Robot 3

Drawn with wacom tablet and the amazing MyPaint!

Effort estimates for software considered evil


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:

  1. An external consultancy firm. They counted function points based on a document with use-cases.
  2. The internal business analysts.
  3. The developers. They split-up the use-cases in user-stories and assigned story points.

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:

Consultancy firm versus 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:

Development team versus business analysts

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…

How to find where an exception is emited with Qt ?

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.

Konstantin Dmitriev, artist, director and leader.


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.

Tutorial Photoshop: Como trabalhar com Levels?


Nos softwares de ilustração vetorial até os mais inexperientes artistas e pessoas que não tem vivência com desenho podem fazer pequenas ilustrações. Basta ter um pouco de paciência para aprender a trabalhar com curvas Bézier e ajustar a posição dos pontos para criar uma ilustração vetorial simples em ferramentas como o Adobe Illustrator ou Corel [...]

Fluid Particles engine patch at last!

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:

http://www.pasteall.org/11270/diff
TEST BLENDS:  http://www.pasteall.org/blend/1959    and  http://www.pasteall.org/blend/1960

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 ;)


GNOME UX Hackfest Photos

GNOME UX Hackfest

GNOME UX Hackfest

Willie's accessibility talk

GNOME 2010 UX Hackfest London UK

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.


Filed under: Uncategorized

Painless accessibility tips for GNOME designers and developers

Willie's accessibility talk

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:

1: Some people can’t use the keyboard

These users use devices such as:

  • head tracking
  • eye tracking
  • switch-based access (they press buttons on a switch – the accessibility layer translates these to keyboard stroke)

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.

2: Some people can’t use the mouse

These users use devices such as:

  • switch-based access (they press buttons on a switch
  • use joystick instead of mouse

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:

  • Can you get to all the functionality?
  • Can you get to all the functionality efficiently How many keystrokes will it take??

3: Some people who can’t see the screen.

Users in this category:

  • May be visually impaired with respect to their perception of colors. For some, particular color contrasts may be quite painful.
  • May be visually impaired with respect to their ability to read text on the screeen.
  • May be completely blind.

Willie & mpt try the ubuntu software installer using orca

Design Implications

GNOME handles the presentation of content for users who are visually-impaired:

  • Font-sizes and icon-sizes are adjustable.
  • High-contrast themes are available.
  • Screen magnification is possible. (no special design considerations needed here.)
  • Reducing the screen output to text-only: screen readers that output both via audio and via Braille displays.

Here’s some tips for GNOME designers and developers to help ensure your design is more accessible:

  • Make sure there isn’t any functionality available via the keyboard only.
  • Be wary that your color choices might not be good for everyone and there should be a good way to override them. Whenever possible, pull your colors from the GNOME theme. Your colors should not be hard-coded, and must be override-able.
    Yes, your interface may not appear in colors that are in your brand book or evoke the emotion you wish to convey in your interface – but consider that the ability for someone to be able to use your software or not be able to use it at all also affects your brand as well.
  • Be redundant in how you broadcast your design – for example, please do not rely on color as the sole or primary way to help users differentiate between two elements/modes/etc. of an interface. Have other elements of the design (position, labels, etc.) indicate this as well.
  • Please be wary of custom toolkits/ widgets – they do not typically support accessibility. If you must use them, ask your developer to build accessibility into any custom widgets they may be writing for you.
  • If areas of the interface do not have text (for example, a search area that is not labeled ’search’), make sure you’re using the accessibility labels and descriptions. In glade, you can set these via the accessibility tab (it has a blue wheelchair icon.) Translators will be able to access these and translate them as well! They won’t appear in the interface but will be made available to the screen reader.
  • When coming up with textual equivalents to interface elements:
    • Imagine someone speaking them aloud to you. You don’t want War and Peace every time you happen to highlight a UI element. Make them clear and succinct.
    • Think about differentiation. You don’t want to repeat the same string for every single item in a menu, for example – you want the differentiating text to come first. (Willie gave the example of a menu where the user hears ‘menu item new’, ‘menu item save’, ‘menu item open’, etc. etc. while navigating through. The info that helps the user differentiate between each item comes last – that makes it more difficult to use.)
    • Try to reduce chattiness. People get annoyed with chatty screen-readers. (To this end, orca even has a ’shut up’ key.)
    • “Type into this field to perform a search” == BAD label. “Search’ == good label.
  • Anything you can do to reduce keystrokes is really good for users who cannot use the mouse.
  • This is common-sense anyway, but when designing keyboard shortcuts for your interface, make sure the ‘chording’ of the keystrokes is reasonable to access. E.g., don’t require users to play a fun game of twister and have to hit 6 keys at the same time! :)
  • Mnemonics in GTK+ not only give users a visible keyboard shortcut to access a particular element of a UI, they automagically bind labels and form fields together, creating an association that also helps users associate the two elements together. Consider than while visually positioning elements together creates a relationship between them implicitly, there are users who do not have visual access and tools like mnemonics which explicitly associate the two UI elements are vital for those users who cannot visually discern the relationship.
  • Use GTK frame widgets to group related areas of the interface together under a common label. This enables users to navigate between entire sections of UI rather than just field-by-field. Also, make sure you implement this using the GTK frame widget rather than just a label with indented widgets underneath it – the GTK frame widget actually creates an association between the frame label and the widgets below it that is not there if you implement it in looks but not in ’spirit.’
  • Wizard design: don’t keep focus on the next button! This might be the default behavior if you use glade, but it wastes the user’s time because they need to navigate above the next button – why not save them the keystroke? Also, this ensures that when a user lands on the next screen, that it starts off by reading the first item on the screen rather than ‘next’ (image going through a wizard, clicking ‘next’ to go to the next screen, and the computer tells you, ‘next’ on the following screen – how disorienting!

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.

So how accessible is your UI?

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!):

  1. Unplug your mouse. Is your UI usable?
  2. Select the GNOME ‘High Contrast Theme’ and examine your UI for color and font changes.
  3. Check your app out in Accerciser.
  4. Check out your custom widgets in Accerciser.
  5. Try your UI in Orca.

A little bit about how GNOME Assistive Technologies Work

  • AT-SPI provides the ability for an external app (e.g. Orca and other assistive technologies) to look at the widget hierarchy and register for changes in that hierarcy. ‘let me know if something changes focus here.’
  • GTK+ has something called gail (GNOME Accessibility Implementation Layer) – it turns GTK widgets into AT-SPI. Gail has an implementation for every widget in GTK. When you create a brand-new, custom widget you need to create a similar gail implementation for it to be accessible. You can test it via Accerciser.

How to learn more


Filed under: Uncategorized

Hello world!

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 :D

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! :D 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 :P

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

Episode 134: Dynamic Range Therrory

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.

Creative Commons License
“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.

Quick update

I returned yesterday from an event in Matanzas city, nothing related with blender so I will resume tonight my work on the soon available (crossing fingers for tomorrow) particle fluids engine patch. Hope you will tinker with it. Cheers
Farsthary


0.8.1 released

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.

Week 4: Optimizing iterators

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.

Ben Dansie: Monkey

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 ™.

KPresenter Sprintlet in Kämpfelbach-Ersingen

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!

Aquabus

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.

Grub2 lightning talk at SCALE 8x Ubucon

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.

Grub2 3-minute lightning talk

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! [boring ubuntu boot screen]

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.

Episode 104

Episode 104 -Trendy Circle Wallpaper

by heathenx

In this screencast I hope to make a relatively easy wallpaper using trendy circles in Inkscape 0.47.

Rensselaer Center for Open Source (RCOS) talk on Fedora

RPI Center for  Open Source talk

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:

RPI Center for  Open Source talk

  • What is Fedora? I talked about Fedora’s mission statement – why we make it in the first place – and how Fedora is both an operating system and a community of folks who put that operating system together. The main point I kept bringing up here is how we always try to work with upstream, and why forking off in most cases causes problems.
  • Why Fedora? Here I tried to focus on what makes Fedora different than other Linux distros. I walked through the four foundations of Fedora with examples of how we exemplified each. At the beginning of this section of the talk I noticed I was starting to lose folks (I’m not the best speaker but I’ve learned to be more mindful of the audience) so I told them they should wake up and to help them do that I was going to make them answer questions! One question I asked was about what kinds of things Fedora does to make sure it’s legally redistributable. We ended up having a good conversation on software freedom, codecs, patents, etc. and folks definitely perked up as I kept asking questions.
  • What kinds of projects happen in Fedora? – this section was really a survey of arbitrarily-selected groups within Fedora, with a listing of some of the current projects that team was focused on (or at least, as the wiki indicated they were working on. :) ) We were running out of time at this point and the next section was way more important, so we really blew through it quickly.
  • Get started! – I put together four steps to get started becoming a Fedora contributor – and a couple of students asked about this in the earlier parts of the talk so I was glad I had this section prepared:
    1. Get an account
    2. Find a team and a task
    3. Stay connected to the community – read planet Fedora and post on there! Tell folks what you are doing!
    4. Ask questions! Don’t be afraid!

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!)


Filed under: Education

Novo DVD de treinamento do Instituto Blender: Chaos & Evolution


O Instituto Blender anunciou essa semana mais um DVD de treinamento com material voltado aos artistas que usam Blender e softwares de código aberto. Agora p tema segue uma linha mais voltada para a ilustração e desenvolvimento de personagens, principalmente para as pessoas interessadas em trabalhar com pintura. O DVD se chama Chaos & Evolution, [...]

Professionelle Scribus- und DTP-Schulungen im Linuxhotel

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

data mining for NX bit

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).

  • 5 (0.07%) were non-x86.
  • 1 (0.02%) had corrupted contents (likely due to a search/replace in apport gone awry).
  • 5670 (77.99%) had NX (this also surprised me — I was not expecting it to be so high).
  • 337 (4.64%) lacked PAE, and so cannot have NX (I didn’t expect this to be so low; Ubuntu bug reporters must have relatively recent hardware overall).
  • 595 (8.18%) had PAE and correctly lacked NX (I didn’t expect this to be so high — PAE without NX is a bit more common than I’d hoped; hopefully these systems are running 32bit kernels to at least get the partial NX emulation).
  • 662 (9.1%) had PAE but incorrectly lacked NX.

It’s this last group of systems I’m hoping to get fixed through education.

New training DVD: Open source painting course

David Revoy, art director of project Durian, will publish his digital painting course "Chaos and...

Tutorial Blender: Modelagem 3d com curvas


A modelagem 3d por subdivisão é uma das técnicas mais comuns e fáceis de ensinar para as pessoas que estão aprendendo a trabalhar com modelagem. A simplicidade da técnica está diretamente relacionada a segmentação em blocos das formas 3d, em que o artista pode ir aos poucos adicionando pequenos elementos como faces e arestas para [...]

Mosquitoes and SSL certificates

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.

Mosquito bats

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.

authconfig-gtk UI revamp

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:

  • It’s fairly old.
  • It’s grown organically, with new options and features added on piecemeal without an overall design vision.
  • It exists in firstboot too, under the ‘network login’ button.
  • It allows you check off as many and whatever identity and authentication methods you desire, even if the combinations make no sense.

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:

  • SSSD does not yet support all the protocols that the legacy stack does (for example, Winbind) and won’t for Fedora 13.
  • SSSD enables you to do things the legacy stack also supports.
  • There are still users who need to use the legacy stack, so it’s not yet retire-able.
  • There are advantages to using SSSD’s currently-available functionality, so it’s important to provide UI access to it so folks can try it out.
  • Multiple ways of doing the same thing via very different frameworks has a high risk of really confusing users.

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:

  • The user has a task they want to do. We complicate their being able to do it by having to ask them questions along a line so we can figure out what technology they intend to use so we know whether or not to present them with the legacy UI or the new UI. This would complicate firstboot terribly. It’s essentially allowing the implementation to surface on the UI – inside-out UI is no good.
  • Making every single user choose what they want in every case is more difficult than giving the users the most common / useful configuration by default and requiring only some (not all, and hopefully a minority) of users to make other choices and change the defaults. I think the latter is a design pattern we should strive to follow in Fedora.
  • Having two UIs means you might need two menu items – we have enough configuration items in the menus already, and how are users to know which UI they need to go into to accomplish what they need done? It’s not like there would have been a clean split between the two – the legacy UI manages both local and centrally-managed accounts while the new UI manages some centrally-managed account types only.
  • Having the legacy UI pop up in firstboot means having three or four levels deep of windows popping up – firstboot isn’t a desktop environment and it’s awkward to manage windows in a limited environment like that. Yes, it’s like that now, but it doesn’t mean it’s the right way to do it.

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:

  • We started with a run down of what identity & authentication environments are most common in actual practice. Some of the combos you can select in the current UI (for example, hesiod and winbind) are not actually that common in practice, yet are just as easy to select in that UI as more common scenarios like NIS and kerberos. So now the proposed UI handles only the five most common environments and wacky combinations are not possible. (We figure, if you’re picky enough to want to do something that wacky, you’re comfortable enough setting it up yourself with either the command-line setup program or in the config files.) Through weeding out the less useful combinations, the UI provides a little bit more guidance to the user as to what they might want to select.
  • The main focus is on the environments users need support for, not on the backend (legacy vs sssd) used to provide it. The ‘backend technology’ column of this table shows which backend is called into action for which UI choices. You’ll need the table to figure this out because it’s not embedded into the UI – and it shouldn’t be – do I really care whether or not the legacy stack or SSSD is letting me log into my company laptop? No, I just care that I can log in and get my work done.
  • A group of us walked through the current advanced options tab and noted which options made sense in which scenarios, which didn’t, and figured out which really didn’t belong in the UI. We cut three options that made little practical sense and reworded another to make its utility to the user more clear.
  • The current UI is based on a model of having a base dialog with multiple smaller dialogs that pop up on demand. Why so many windows? The new proposed UI mockups embed the form fields directly in the UI and different fields appear based on which dropdown entries you choose – no more baby windows popping up everywhere. :)
  • Ray inspired the sanity-checking form field bits – I was worried about GDM error messages, but he noted it’s better to prevent user error upfront by sanity-checking user-entered fields – especially hostnames – to see if they even have a shot at working. The consequences here are pretty high – I can make a goof that prevents me from logging into my computer at all (unless I can break in via single-user mode.) The stakes are pretty high, so it’s a good idea to prevent error in the first place.

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.


Filed under: Interaction Design Work

Creative use of Nikon Gear

<object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/sI8ldDyr3G0&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;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&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" width="425"></embed></object>

Pure Physics with Nikon gear – and what beasts of lenses!

Plumiferos in the Tube !

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…

Cheers… and some hugs… and here some pics !

3ds Max 2010 SP2: Recurso para pintar objetos na cena


A Autodesk está no processo de desenvolvimento dos recursos e correções para o Service Pack 2 do 3ds Max 2010 que pode abranger pequenas melhorias no desempenho, e em alguns casos o lançamento de novos recursos para a ferramenta. Entre esses novos recursos que devem entrar na lista do SP2 do 3ds Max 2010, está [...]

Clutter Mouse Events

Well, it has been a fairly good week in-between the segfaults and other scary things. I have a basic system to tame mouse events so that I can respond to 'click' and 'double-click' and stuff like 'dragging' and 'drag-over'. This is all written in Python. The licence is GPLv3. Save them both (states.py in a directory called helpers), then run two_squares.py -- you should be able to drag

Scribus 1.3.3.14 Is Now Officially Released

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.

1266324336

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.

Speed measurements

Here are some performance numbers, measured on my laptop. This is a pretty old compaq nc6400, Dual core T2300E (1.66GHZ) so it should rock in a modern machines. Note how fast transforms go when both profiles are implemented as matrix shaper. The measurements are using the code on git.

16 bits on CLUT profiles.. 5.95238 Mpixel/sec.
8 bits on CLUT profiles...10.5541 Mpixels/sec.
8 bits on Matrix-Shaper profiles..27.6817 Mpixels/sec.
8 bits on SAME Matrix-Shaper profiles...36.5297 Mpixels/sec.
8 bits on curves... 29.2505 Mpixels/sec.
8 bits on Matrix-Shaper profiles (AbsCol)...27.6817 Mpixels/sec.
16 bits on curves... 37.9147 Mpixel/sec.
8 bits on CMYK profiles... 8.90373 Mpixels/sec.
16 bits on CMYK profiles...4.45186 Mpixel/sec.
8 bits on gray-to-gray conversions.. 32.9897 Mpixels/sec.
8 bits on same gray-to-gray conversions ...39.312 Mpixels/sec.

Week 3: Photoshop brushes

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!

Brush chooser with Abr brush masks

Website ads

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.

Website ads

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.

Update

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.

Bringing back old features: copy menu

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:

copy menu in blender 2.5

Missing some options (I'm lazy)


It was remarkably simple to add, just a couple of operators (one for the object mode, one for the pose mode) and a couple of menus to call the operator with the right option. I’m sure a bit more familiarity with the API could result in even less code for this. You can download the script here , save it in your scripts folder, then make the following changes to your keymap:

You need to bind ctrl-c to invoke two seperate menus, one for object and one for pose mode


add a new hotkey and bind to ctrl-c for the object mode menu


pose already has ctrl-c bound, just rebind it to the menu


The script is licensed under the GNU GPL V2 or higher, feel free to change it, use it, etc. etc…
thanks to crouch and Loolarge for python examples on blenderartists.org, and thanks to ideasman42 for help and documentation of the api (and in a big part creating it)

Fixes on github

Ok, that seems to be working. I have received a couple of bug reports. Very helpful .There are now two nasty bugs less in the code base. Gray profiles were broken. That didn't work at all. I wonder how that passed the regression tests... ok, there was no regression tests for gray profiles. Now that is fixed as well. I still have to review documentation for some typos, but I think this can wait.

The latest (fixed) code is in the git. Or you can wait for beta2, which will be available on March.


http://github.com/mm2/Little-CMS

Inkscape in action…

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... ;-)

Playing with KWin's Paint Desktop Effect

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.

Chess problem 2

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

Chessboard

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.

Analysis / solution

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#.

  1. Ne8 Kg6

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.

  1. Ne8 Kg6 2. h5+ Rxh5

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.

  1. Ne8 Kg6 2. h5+ Rxh5 3. f5+ Rxf5 4. g4 Rf4

White then has a definite mate with 5. Ng7 ... 6. Bf5#.

  1. Ne8 Kg6 2. h5+ Rxh5 3. f5+ Rxf5 4. g4 Rf4 5. Ng7 Rxg4 6. Bf5# (PGN file)

This is truly a sweet endgame.

Episode 133: The Power of a Book

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. :-(

Happenings

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.

Temple photography

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.

Temple photography

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.

Random idea for design collaboration tool

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…. :) )


Filed under: Uncategorized

The cure for unbeamable PalmOS files

Okay, I know Dave and I are probably the last two people on the face of the earth who use PalmOS. But we still do, to read news and ebooks prepared with Plucker, only there was one big frustration: none of our Plucker files were beamable. So if I downloaded a really interesting article and wanted to share it with Dave, I couldn't (unless we went back to our desktop machines and transferred it that way.) The Palm just said 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?

Fri 2010/Feb/12

  • 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:

    Ugly capplet

    And this is an improved version:

    Pretty capplet

    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.