Fading Memories

About

Ramblings about books and other things that will soon fade from my memory.

Boudewijn Rempt

index | rss1.0

There's more...

Creative Commons License
The original artwork is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.

Roundabout through identi.ca

    follow me on Identi.ca

    Categories, too

    Find


    Archives

    Other things here at valdyas.org

    2010-07-22

    Back in Bangalore

    Following hot on the heels of a week of intensive KOffice performance analysis in Helsinki and a great Akademy, I'm in Bangalore again for two weeks. Not specifically to meet again with the Bangalore interns working on FreOffice, but rather to work with Nokia on mobile KOffice. Marijn Kruisselbrink is here together with me, and when we leave, Jos van den Oever will relieve us.

    I'm happily hacking away on a project that was started at the last KOffice sprint in Essen: making KOffice more flexible by allowing other canvas types than QWidget-based ones, for instance, based on QGraphicsView. Lots of interesting challenges, and also some quite nice progress already.

    It's the rainy season, as you can see from this picture taken from the rooftop of the Nokia building:

    From Bangalore-july

    Instead of a boring hotel room with four attendants to serve me with a beer, we've hired an apartment in the Orchard Suites, about ten minutes by car from the Office.

    From Bangalore-july
    It's clean, roomy, the breakfast and dinners are homely (and therefore very good). There's wifi, there's electricity -- the only minus is that we haven't found a surefire way of getting back to the apartment from Nokia without missing cabs, auto-drivers who don't know their way in Bangalore... The works. Tonight we asked the hotel to call us a cab to bring us to the shopping mall nearby where I'd been with Vidhya. He took us to MG Road instead -- a 3 hour drive in the evening traffic, so madness!

    Next to our apartment, some people are living in a pretty primitive house, but they do have a bathroom:

    From Bangalore-july

    And opposite them, on the other side of the road, there's this mansion:

    From Bangalore-july

    and the eponymous orchards even belong to it:

    From Bangalore-july

    In any case -- moving from the hotel to something more local means I'm learning new things again. This weekend, we'll be buying books at Blossoms', seeing the sights with Amit -- and then back to hacking!


    2010-03-03

    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!


    2010-03-01

    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:


    2010-02-22

    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!


    2009-10-21

    Krita is compiling

    On two laptops, prior to running the unittests again. Last time I tried them -- four hours ago -- I had zero failures. And yesterday, Krita's bug count in bugzilla had dropped below 40; today it's 42 again. And that includes a couple of nasty crashers, where we might have a choice between leak and crash, or worse: between disabling a feature and crashing. And there are some important issues among the non-crashers, too, issues that really should be solved.

    But we've been fixing bugs like mad, mostly me and Sven Langkamp, since Lukas is working on his thesis (which is about brush engines for Krita, yay!) and Cyrille is finishing up his phd. There are a couple of bus that we really need Cyrille for, even.

    The bug fixing has been very rewarding, even though our ace beta testers, Enkithan, M4v, Gaizka and Bugsbane have been doing their darnest to keep the bug count at over 42. And there's more cool stuff: Kubuntiac (on the forum, who is Bugsbane in bugzilla) has been working on Krita's website, and when we've migrated the content from the old website over, we're ready to flick the switch and krita will have it's own website, with lots of content, links to techbase and to userbase.

    (Note: we have disabled the following plugins for 2.1: glsl filters, painting with the wave filter, kross-based scripting, together cooperative painting, panorama stitching, the chinese paintbrush (not sumi-e, that's in), an experimental brush engine, the graphicsmagick import/export plugin (photoshop, gimp, gif etc.) if you have GraphicsMagick newer than 1.2 and the perspective transformation tool.)

    And have you all seen Enkithan's wonderful Dungeon girl illustration, all done in Krita? That's why I'm spending twenty leisure hours a week on Krita!

    Tomorrow Cyrille will tag the first release candidate of KOffice 2.1...


    2009-05-25

    Another feature

    And another contributor: Edward Apap, better known on irc as Antiquark, has created a new dialog for krita that makes it possible in an easy way to extend the canvas size. This is a patch that we had in readiness for some time already, but with the imminent release of 2.0, we can add stuff to trunk again!

    Welcome to the Krita team, Antiquark!


    2009-05-22

    A new feature for Krita

    Yesterday, I took a day off from serious things like redesigning the library structure of KOffice, working on the Krita part of the redesigned KOffice website, trying to optimize the hell out of freehand painting and several other things, like being too sick to actually think straight for two consecutive moments and so not making much progress with any of these things.

    I took a holiday, in short, a chance to add a nice little feature to Krita: image backgrounds.

    An image background is a pattern that is tiled beneath the root layer, so that if there is anything transparent in your image, the pattern is seen below. Most useful to have a nice background, perhaps paper-like, when sketching.

    This morning it was done:

    Now this was just a little thing to play with, but there are several fun things about it: for one thing, I have resurrected a class that Patrick Julien wrote in 2002 and was originally responsible for painting the checker pattern. We've got different code for that now, that makes it even clearer that the checks aren't part of your image, but this class is very well suited to painting a tiled background.

    Another thing is that MyPaint has a similar feature, so ideally we'd like to be able to interchange, through OpenRaster, images made in Krita and in MyPaint. We'll need to extend OpenRaster for that, though, since MyPaint saves the background as a layer as big as your image filled with the tiles, and Krita (will) save(s) the background as a property of the image.

    And there is a small list of TODO's caused by this little feature, todo's that are actually almost all simple Junior Jobs:

    • enable Add, Remove, Reset buttons for background pattern management.
    • label the background patterns somehow, allow tagging
    • add solid-color background patterns and use a categorized view for them
    • add a custom-color background pattern
    • add lots of nice patterns
    • integrate with custom image widget (the one you see on startup)
    • integrate with image properties dialog
    • add to loading/saving of KisImage in .kra and .ora
    • set pattern on double click
    • allow non 64x64 pattern tiles

    2009-02-16

    Socorro and Breakpad

    For the Hyves Desktop application we are building at work, we really want some sort of automated crash reporting. Not that our code crashes a lot, it's a fairly simple application and mostly done in Javascript inside webkit, but still. We've already clocked up about 50.000 users, and we're not even out of beta.

    There seems to be basically one choice in the open software world for crash reporting: the combination of Breakpad for integration with your desktop application and Socorro to handle the crash dumps on the developer side. As used by Last.fm, Google Chrome and Firefox.

    This combo has a big advantage: they work with a dump format that's independent of the presence of debug symbols on the client computer, so work fine with release builds. And because you get dumps for all crashes, you can quickly get insight as a develop in which parts of your application get hit most: similar dumps are really easy to recognize. I would really like to have this in KOffice, too... But of course, the server-side infrastructure is going to be pretty demanding.

    The problem with this solution is the complete lack of releases (just use svn trunk...), a relative lack of documentation, and a big slew of dependencies for the web application. And since I hadn't looked at apache since the version 1.x days, I'm a bit out of my depth installing modern web applications. Still, we'll get there.

    And it might be useful for KOffice, after all.


    2009-01-29

    Four thousand words on the state of Krita

    We've been working on Krita 2.0 since 2006; it looks like we'll release early 2009, which means it'll contain three years of work. That's about as much time as went in to 1.4, 1.5 and 1.6! (If you start counting the work towards 1.4 from when I started hacking krita.)

    Read more ...


    2008-12-19

    I didn't know that Roop and Girish had a blog, too

    But here it is, and shows a nice picture of the app we've been building together. At the same time Nine's Hyves blog about the photouploader was replaced by a more official, but slightly less accurate blog by one of the Hyves founders. It gets downloaded quite a lot, which adds to the general feeling of having done a good job that this Gang of Four share.

    Meanwhile, we are learning about this cross-platform binary release business. Apparently our linux version, which has always been perfectly anti-aliased on our machines, suddenly shed its anti-aliased font rendering on Thomas Zander's computer. And the sound, which works on Ubuntu, doesn't work on OpenSUSE. There's only one real solution, I'm afraid: making it GPL and getting our users to compile it for themselves :-).

    And today? I'm giving Qt 4.5 a try and taking a look at the Qt Creator source code. It's pretty interesting to see the code of a big Qt application that's not part of Qt or KDE, and it makes me think of platforms. I mean, an application like Krita is built on a stack of platforms: Qt, KDE and KOffice. What advantages and disadvantages does that stack give us? But that's a topic for another, longer entry.