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

    2005-12-24

    It has arrived

    Right, I take back every unfriendly thing I've said about Bluelink. They managed to get my new z60m laptop (and I may well be the first one to install linux on that machine, according to Tux Mobil) in Deventer the day after they took delivery themselves. It's a gorgeous machine. Pictures and howto-install later... I'm making recovery cd's right now.

    Update

    Apart from the singularly sticky Centrino and Windows stickers, and the silly location of the Escape key (which may be the final straw for my vi addiction), there's really very little wrong with this laptop. It's sturdy, got a gorgeous screen, a keyboard with a great feel -- almost as if I'm typing on a full-size keyboard -- and installing Linux seems pretty easy.

    Kubuntu wasn't able to downsize the Windows partition, but SuSE 10 was. And SuSE has very, very beautiful screen fonts and in general a very polished install. But I also wanted to try Kubuntu, which I'm upgrading right now, while also restoring my home directory from the disk of my old Dell. (Which, despite promises hasn't been returned, repaired, to me before Christmas.) Bad Dell.

    Updated update

    Installing Kubuntu Breezy Linux on the IBM/Lenovo Thinkpad z60m:

    • Suspend to ram works -- out of the box, if not with the fn-f4.
    • Suspend to disk works -- out of the box
    • After running sudo apt-get install libdvdread3; sudo /usr/share/doc/libdvdread3/examples/install-css.sh, dvd playback works, practically out of the box
    • X11 works, right resolution and everything. I haven't tested 3D acceleration with the ATI X600, but dvd playback is smooth and that's what counts
    • Sound works
    • The drives are approached by default using the SATA drivers, which apparently implies DMA, which is good
    • Mounting usd drives works (restored my home dir that way). However, Kubuntu mounts all partitions on the same mountpoint. Didn't know that was possible.
    • Connecting to my camera works
    • Wireless -- would have worked out of the box if the detection hadn't preferred the open, unprotected, default settings wlan of my neighbours.
    • Wired network works
    • SuSE shows much the same, except that SuSE enables all the wierd and wonderful thinkpad buttons out of the box, including the suspend button.

      The permanently running fans are a "feature" of many newer Thinkpads, according to ThinkWiki.

      All I can say is, I wish every laptop were as linux-compatible as this one. There's not much heroics in this report -- if I find it necessary to do somethinge extraordinary I'll update this entry.


    And no thinkpad either

    I was right... Bluelink did not deliver my new Thinkpad. They did not even think to tell me that they were not going to deliver. I had to phone them. Of course they didn't know why they couldn't deliver or when they would be able to deliver. But they promised to find out and then phone me back.

    The Bluelink salesman told me that my laptop wouldn't be delivered until January 2nd -- and probably not even then but a little later.

    Right, money back time. He didn't like that and said he'd try to put some pressure on Lenovo. As far as I'm concerned, he can do that and tell me tomorrow whether that worked or not.

    But why is it so hard to deliver a laptop that was introduced in October already? And why don't resellers inform their customers of delays? Why doesn't Lenovo sell direct, and why do they have such a large range of models when only a few will be available?

    Update

    Bluelink have pushed Lenovo really hard, it appears -- and now Lenovo will ship the Thinkpad December 22. And they contacted Tryllian very speedily. Excellent!


    2005-12-15

    The Septuaginta, Scribes and Scholars

    I am reading An Introduction to the Old Testament in Greek. Additional Notes by Hennry Swete. The Grand Rapids seminary (mildly famous in the Netherlands because they revere our Kuyper, while we have almost forgotten about Abraham de Geweldige) have scanned the 1914 edition of this massive book, tagged it using something called "theological xml markup" and prepared a public domain pdf. With all the Greek, Hebrew and everything intact. It's really a great read, and I wish I had a similar book about the Hebrew old testament and another one on the New Testament, with a final volume on the apocrypha.

    Read more ...


    2005-12-14

    Ring ring!

    Someone from Kassa mailed Dell yesterday afternoon and today, within half an hour of me arriving at work I was phoned by Dell. Apparently you need a television show on your side to get service from Dell. The friendly man was simply dripping with obsequiousness and my 5150 is going to be collected tomorrow for repairs and will be returned to me in a week, and they will expedite fixing Irina's 5150 with all due celerity, or so I was promised.

    But what does Dell think they have achieved here? I cannot be the only customer they have royally pissed off by holding off on the fulfillment of their duties for as long as possible, instead of simply contacting all people who have purchased a 5150 and offering a repair.


    No KOffice alpha today

    I was going to tag KOffice 1.5 alpha today, but I cannot do that because I haven't got the hardware at the moment. And in any case, development on KOffice is now going at such a fast and furious pace that it's hardly opportune at the moment. A little more time will make the alpha (which isn't intended to be feature complete, but to give interested people something to test) a lot better.

    For instance, Thomas Zander, David Faure and Gary Cramblitt have been hacking on KWord a lot. Yes -- after a long period of stagnation, KWord is moving forward. Lots of bugfixes, a complete refactoring of the page layout code, a redesign of the document creation panel, much work on the document structure pane and a speech interface. And while multi-page tables are still a problem, the table code has been reworked and is now much more robust. Also nice: in the normal view the page is centered in the window, instead of bunched up to the left window margin. We should fix that for Krita, too.

    Sebastian Sauer and Cyrille Berger have been working on scripting for KOffice (for now only Kexi and Krita use the scripting library, but it's useful for every KOffice application), and Cyrille has added Ruby support to the existing Python support.

    Casper Boemann has added a 16-bit L*a*b colorspace to Krita and thoroughly reviewed the color management path making it very dependable. And now that Adobe allows anyone to download and package a set of high quality icc profiles with their application, the results are good, too. Casper has also added autoscroll to KPresenter and Krita, and the code is generic, so it can spread to other KOffice apps.

    Casper and Zagge have been working on a new guides implementation that is really slick and very usable. It's used in KPresenter at the moment, but Zagge has promised me he'd re-use the generic library in Krita. And of course, Kivio and Karbon could profit, too.

    Nikolaus is working in a special branch on making discontinuous selections in KSpread a reality, and we hope to get his work into 1.5. Ariya Hidayat has started on a much more effficient class for loading xml-based files, which should help with loading times for big spreadsheets, and there's also work being done on making KSpread more memory efficient, so those big spreadsheets will also work once loaded.

    Dag Andersen has picked up KPlato -- the integrated planner application for KOffice which is going to be included in our release for the first time with 1.5.

    And Peter Simonssen has together with Thomas worked on resolving one of the biggest KOffice problems: the startup dialog that gives you a choice between templates, recent files and existing files. The new solution has received a thorough usability test with real life usability testers on OpenUsability and that has resulted in more fixes and polish.

    My fingers ache... If only my new laptop will be delivered today!

    (I know I must have forgotten something, but I'm typing this on the train and haven't got access to my mailbox.)


    Still no Dell

    I got mail from the "escalation" people from Dell's technical support. They were going to try to reach a solution in a reasonable time frame, a solution that should be acceptable to both parties. But that was a week ago, and no acceptable solution has been forthcoming.

    So I mailed the people from the television show that had gotten Dell to open the special phone number, and they told me they were to mail Dell for me...

    Let's see whether that will make things happen. In the meantime, my Thinkpad z60m should be delivered today. Again, having had experience with Dutch resellers, I'm thinking it won't happen today, but I might be surprised yet.

    But why does Lenovo make it so hard to buy their products? Most resellers don't stock more than a small fraction of the Lenovo product range, and it seems that what they stock are the anemic bottom-of-the-range models. The first company silently canceled my order; the second company hasn't let me know anything.


    2005-12-06

    Incompetent Dell?

    Dell is really amazingly incompetent as a company...

    Right, they have admitted in public that the Inspiron 5150 is broken by design. They have even instituted a special phone number for people with a broken inspiron. Right -- everything should go swimmingly now, shouldn't it? People phone, give their service tag, and the next day a van comes to collect the broken systems. Customers happy, Dell's reputation salvaged.

    But no, the very friendly Michael from the special phone number told me the phone number is only for prevention -- i.e., sending replacement parts to people with inspiron's that haven't broken yet. He doesn't know when the parts will be sent out, perhaps only when they've got a large enough order of them. Which will lead to many more broken inspirons in the meantime.

    If your inspiron is already broken, he cannot do anything for you and transfers you to the regular technical service. One hour later... Just like yesterday, on hearing that you've got a broken 5150, they want you to phone the special number again... The only thing they can do is take notes and have someone, perhaps, can't say when, phone me back. Back to square one. We're exactly where we were yesterday!

    Come on, Dell! This your chance to do one better than Acer.

    2005-12-05

    Misery loves company

    One of my colleagues brought this article to my attention. Dutch only, I'm afraid, but I'm linking anyway in the interest of getting as wide as possible a dissemination of it. Apparently, Dell has admitted to at least one construction problem with their Inspiron 5150 laptops (of which we have two), and has offered to replace motherboards for free.

    Or so I thought... I called Dell on the special number this morning and was connected to a friendly man who, on hearing I had a broken 5150 connected me through to technical service, all the while reassuring me that everything would be fixed, no hassle, no problems.

    But the young man at the technical service desk, a certain Yussef or a least his name sounded a lot like that, told me he couldn't do anything for me since I couldn't perform his diagnostic tests. Well, I'm in Amsterdam at the moment, and the laptop is in Deventer, and besides, I know what's wrong with it. But no, no tests, no replacement. And when he heard that the computer wouldn't start at all, replacement was out of the question. He'd decided that the wrong thing was wrong with my laptop, so I would have to pay for it myself.

    Couldn't help me, couldn't connect me to his boss, and if I wanted replacement parts for Irina's 5150 I would have to call the special phone number again. The only thing he could do for me was to have someone call me back within a few days.

    I don't understand Dell: they have blundered already, and instead of doing some damage control by replacing all motherboards, no questions asked, they tell people they won't replace a broken motherboard because it's broken for the wrong reason. Apparently they don't realize that if they have to do replacement for one design error, they will have to do it for all faults caused by all design blunders in this misbegotten chunk of plastic.

    So, I called again, the replacement parts should be sent out today for Irina's laptop -- the man who answered the phone told me he could only deal with laptops that are not broken yet -- and I'll be called within half an hour about the broken laptop. We'll see... To be updated soon, I hope.


    2005-11-30

    No hacking

    I'm forced to lay off the hacking until December 14, when my new laptop will hopefully arrive. Which means I've got some time to pick up other things that don't need a fast computer. Like continuing an old project of mine: learning to read the bible in Greek. My parents gave me a nice copy of Rahlfs edition of the Septuaginta for my birthday in 1993, and I've been working up the courage to get started on it ever since. (My attempts at Hebrew have been even more laughable, at least I can read modern Greek a little.)

    Fortunately, there is a very nice KDE application that's a lot of help, namely Bibletime. Bibletime can use various resources, such as bible texts, lexicons and commentaries and uses the sword library to load them. There is plenty of material -- translations in all kind of languages.

    And there is also a free electronic edition of the Septuaginta. (LXX, so called because the tradition will have it that seventy-two Alexandrinian Jewish scholars translated all of the Law in seventy-two days -- the text is the oldest text of the Law we have, even older than the Hebrew texts that have come down to us, and is used as the authoritative text in the Orthodox Church).

    There's also a word list, the so-called Strong's Numbers that is a reasonable fit for this text. Only recently, even after I got my Rahlfs edition, a real lexicon to the Septuagint has been published -- and then another one got published, for good measure. The riches! The Septuagint is a difficult book full of obscure koine Greek, neologisms and hebraisms so a good lexicon is important here. Pity I blew my book budget already...

    Strong's glosses really aren't quite good enough: for instance, I wish that in "εν αρχη εποιησεν ο θεος τον ουρανον και την γην", "γην" wasn't glossed as "a primary particle of emphasis or qualification (often used with other particles prefixed):--and besides, doubtless, at least, yet." I am fairly sure that "γην" means "earth", here... But that's not bibletime's fault. And the Strong's numbers are still useful, especially when having a KJV or Statenvertaling parallel to the LXX.

    But all the pieces are basically complete: text, translation, glosses. If the app doesn't suck, I can get started.

    Bibletime's usage of Strong's numbers has improved a lot, too. Previously, the numbers were shown inline in the text itself, breaking up the flow. Clicking on a number would show the gloss. Now there's a nice little box that shows the gloss if your mouse cursor is over a Greek word. Bibletime is very usable, very polished, very helpful and very stable. One of the better KDE applications that are developed outside KDE svn.


    2005-11-14

    Broken again

    My Dell Inspiron 5150 is broken again... This time, the blasted thing won't even start up nine times out of ten attempts, and the tenth time it shuts down after very short while -- I'd be able to login, but nothing more. The eleventh time, I thought I was lucky: it didn't shutdown until KMail had downloaded all my mail from my mailserver. Then it halted again, the only sign of life was the whirring of the fan, but even the little blinkenlights were off.

    Which means that I cannot hack on Krita for the time being; that I cannot answer any mail I've been sent this weekend and haven't answered yet; that I will have to try and do my work on this six-year old Powerbook that's curiously enough still working; and that I will have to try to convince Dell that a laptop that's broken down six times in two years is bad product that they under Dutch consumer law need to replace or repair for a very nominal sum if not completely free.


    2005-11-12

    Cooper

    Like many a hacker before me, I'm reading Alan Cooper's The Inmates are Running the Asylum>, and like many hackers before me I feel slightly indignant at his blanket dismissal of my attempts at dishing up an acceptable interface, and like many hackers before me I feel inspired.

    Take this idea for instance: drag & drop. Nothing is more natural than that, right? You got a document, drag it onto the app icon, and the app opens the document. But this metaphor is actually the wrong way around. And app is a tool and you take a tool to an object, not an object to a tool. Unless the tool is extraordinarily big and clumsy. I mean -- I take my handsaw to my shelves, my screwdriver to my computer case, but I would take the putative leg of the imaginary chair I'm not building because it's too complicated to the workbench where I could turn it if I knew how to do that.

    So, if I've got a couple of tools in my virtual toolbox, like gwenview to view an image or Krita to muck up an image, I think I'd find it more natural to drag & drop the gwenview or Krita icon onto the image icon, instead of the other way around. Take the tool to the object, not the object to the tool.

    (Of course, Alan Cooper's book is flawed in many ways. The way he blithely assumes that software is worse than other everyday things is ludicrous to someone who discovers grave design flaws in his new socks (the seams near the toe-end are too big and in the wrong place, making them impossible to wear), swiss pocket knifes (I did feel as much a fool when the blade snapped onto my fingers as when I was told the difference between save as an export in KOffice by David, perhaps even more so) and gas ranges. And there's a reason I'm not car-literate. Everything we use has flaws. Although clothing seems worse than ever. Damn that summer jacket that doesn't breathe and where the zipper always gets stuck.)


    2005-11-10

    Keyboard layout in KDE

    The Developer Journals CRM Simon Edwards typed his blog about keyboard configuration in somehow never lets me complete the login procedure, even though I do have an account, so I'll post my reaction here, on my own blog. (Where the comment software does have its own problems, but at least I can post.)

    My take on this is: he's right on all counts. Actually, I noticed a recent regression, don't know exactly when it happened first. I used to have two keyboard layouts, one US English (for coding) and one US International with dead keys, for writing Dutch. There aren't actually many computers sold in the Netherlands with the Dutch keyboard layout, most of them have the US layout.

    With the version the keyboard configuration in Kubuntu breezy, I can no longer do that: there's just one US keyboard layout that I can select exactly once, and then select a variant to that. So, I can no longer have US without dead keys and US with dead keys in the keyboard layout changer, and I have know whether I want the intl or the alt-intl variant... I have to make do with something closish, like UK with dead keys and US without. Argh.

    Of course, I could hack this through editing the command-line for uk into using us... But that's not why I use a configuration dialog.

    Oh, and I think I once typed a euro sign by using right-alt-5, but I'm not sure, and at the moment it doesn't seem to work.


    From the promising-but-not-yet-usable-department.

    Scripting

    Cyrille Berger has been working on re-using Kexi's Kross scripting engine with Krita. Kross can potentially use a variety of language interpreters -- from Java to Python, from Ecmascript to Ruby -- to give scripts access to the objects in an application. Together with the regular bindings to Qt and KDE, you get a rich environment that makes it easy to extend and automate an application. Of course, all the Krita plugin does for now is show the traditional "Hello World" message, but Cyrille hopes to get experimental, but useful scripting done before the 1.5 release in February.

    PNG Export

    Cyrille has also been working on a separate PNG import/export filter. Currently, most common image file formats are handled by the Magick filter. This filter uses ImageMagick's coders and decoders to read and write png, tiff, jpeg -- almost everything but openEXR and Raw. But the Magick filter is written against the primitive C API, instead of the C++ or MagickWand interface to ImageMagick. This API changes often and besides, it's far from clear how to set export parameters like JPEG compression quality. While we will probably keep the Magick filter around for the wide variety of formats it supports (and especially tiff is supported very well), it's really better to have our own filters based directly on libpng, libjpeg and so on.

    Active Layer Visualization

    A French artist who is strongly influenced by the aesthetics of the better bande dessinee and who goes under the alias of Mr. Youp came to the mailing list with a suggestion on making it easier for the artist to be aware of the active layer. It happens quite often, especially in images with many layers that you start messing with the wrong layer. After much back-and-forth, Mr. Youp posted a link to a mock-up (in Photoshop!) of what he meant. Casper did a quick hack to give it a try, and I must say, it works very well. Mr. Youp is a very fine artist, by the way -- his website is full of amazing drawings. I wish he'd publish a bande dessinee of his own. It would fit in right next to my collection of Gibrat.

    Color adjustments

    Not a really new feature, but now it's implemented the way it should. Instead of converting every pixel to 8-bit RGB, we now use LCMS to adjust the individual channels. This means we can now adjust the individual channels of, say, a 16-bit/channel CMYK image without doing any conversions. Also not my new preview widget: it has its shortcomings, but it's fast and the display doesn't get messed up. Based on a widget from Amarok.

    Finally

    Bart Coppens has fixed the duplicate tool and given it a useful tip (we still need to fix the layout of the tool option panes, though. I'm working on a Raw importer, but I'm hampered by a bug in the mimetypes database KDE ships: some raw files are recognized as tiffs. Of course, some raw files, like Adobe's DNG format are tiffs, making the situation even more complex. And I'm finally working again on a painterly feature: a hairy brush that smears paint on the canvas. Not sure whether I'll be able to get that to work, though. A lot of maths is needed.


    A lying winter

    Reading one book leads to another; and in this case, reading the pseudo-Dorothy Sayers Thrones, Dominations led me to read John Donne. It seems from the quotes in "Thrones, Dominations" that neither Dorothy Sayers nor Jill Patton-Walsh have made much progress in the collected work, all quotes are from poems early in the volume.

    Anyway, from Collected Works of John Donne, a natural progression was to the old Penguin Classic, The Metaphysical Poets. This book must have been on Irina's shelves since before I first met her, because it contained a newspaper clipping from December 1986, when I was 17 or 19 years old.

    We are still reading the same newspaper: Trouw, one of the surviving underground resistance papers from the second world war, a newspaper with a very Christian identity. Or so it is still regarded...

    Reading this clipping shows clearly that there's been quite a bit of change. This clipping contains a review of a translation of Donne's poems and is written by Eduard Pijlman. It is not exquisitely well-written, but the prose is serviceable enough. It suppose, however, a form of Christian belief that Trouw nowadays actively opposes.

    By coincidence (coincidence? the "pensees" by Pascal-wannabe Alexander Elchaninov state that whoever believes coincidence exists, doesn't believe in God...), Trouw today published an interview with a minister. This interview was mainly remarkable for its tenacity in trying to get this minister to tell Trouw he didn't believe in God anymore. This minister, Sam Jansen from Driebergen very courageously resisted the onslaught.

    The difference between today's interview, and this 19 year-old book review couldn't have been greater. In fact, I suspect the review would be refused by the Nederlands Dagblad.... The reviewer is especially impressed by both Donne's and Donne's translator's insight in St. Paul's second letter to the Philippians.

    Not a topic that would make many hearts beat faster -- but a week or two earlier, I received a copy of the latest issue of "Liter". LLoyd Haft, who once taught me modern Chinese, sent me this copy because it contains a number of his poems. One of them, the first in fact, on St. Paul's letter to the Romans.

    I'm not really word-perfect, anything but word-perfect in fact, in the tail chapters of the Bible, having grown up in a family of convinced Church-leavers, so I needed to read the letter to the Romans before I knew what I had felt on reading the poem; namely that this was a perfect commentary, an enriching summary (if such a thing can be allowed to exist). Irina tells me the poem about the Acts of the Apostles is even better, and the one on Corinthians I sends shivers down my spine.

    I've been studying letters and poems together and have forgotten to write a thank-you note for the copy of Liter... Which we'll subscribe to, since the other content is very interesting, too.

    But I wish Trouw would still publish reviews like the one by Eduard Pijlman.

    By the way, about the lying winter... Methinks I lied all winter, when I swore my love was infinite, if spring make it more. And about the letter to the Romans (in the hope that quoting one poem is fair use and all that):

    Wij vragen nog
    naar weten,
    wetten,
    strekkingen die strikken,
    vastmaken,
    uitmaken.

    Maar waarheid is geen wet:
    zij is een wij.
    Altijd wijder,
    nergens hier alleen.

    Waarheid maken wij niet vast.
    Wij komen er benaderend,
    samen
    in beademend beamen.

    (Lloyd Haft)

    Somehow, this is very close to Christos Yannaras' Freedom of Morality and Zizioulas' Being as Communion. Both are relatively modern (time moves slowly in amateur theology) Greek theologians who emphasize the fact that belief is communion and community. We get there together, as Lloyd Haft says, in untranslateable Dutch.


    2005-11-03

    Read this

    Read this.


    2005-11-01

    Wow!

    Adrian Page in one fell swoop -- but it must have been a lot of work -- make Krita use OpenGL for rendering. Krita still works without OpenGL, but OpenGL opens the door to really cool and fast filters, really interesting tools and great performance. Moving layers is now smooth and precise. All the interesting paint applications on Windows use OpenGL -- Art Rage and Deep Paint, for instance -- but I don't know of any paint or image editing application on Linux that offers this. It also means that Krita images now can have transparent areas when embedded in other KOffice applications. It used to be that if you had an image with transparent areas, you'd see the gray blocks, instead of the background of the embedding documents.

    And, deviating for a moment into Krita internals that are not important for users, but that make the developer's life much easier, Adrian's implementation makes it a snap to port this code to Qt4, and several changes improve the correctness of Krita's rendering a lot.

    There have been other improvements to Krita, too, recently. I've cleaned up the plugin system and made sure only plugins with the right version number are loaded, we have a docker tab with a dynamically updated histogram and new and very cool wavelets filter:


    2005-10-29

    Kilo lines of code

    So KDE is over the four million lines of code mark... Well... KOffice by now has about 700,000 lines of code -- although 70,000 of them are import of external projects for Krita. And OpenOffice has 5,209,395 lines of code. So OpennOffice is bigger than KDE and KOffice put together. That must account for some of the startup delay of OpenOffice.

    As per sloccount:

    SLOCCount for KOffice
    
    SLOC    Directory       SLOC-by-Language (Sorted)
    173612  filters         cpp=168841,ansic=3646,python=600,yacc=227,lex=157,
                            sh=141
    157433  kexi            cpp=78876,ansic=74190,yacc=2307,python=1147,sh=565,
                            lex=286,awk=62
    107505  lib             cpp=105615,python=1155,ansic=425,perl=157,sh=153
    79549   kspread         cpp=79490,sh=59
    72106   krita           cpp=67997,ansic=3668,python=289,sh=87,perl=65
    

    Holy thingummy -- we've been adding code to Krita at a fair clip!

     51159   kpresenter      cpp=50893,perl=142,sh=124
    48190   kword           cpp=48103,sh=68,perl=19
    32750   karbon          cpp=27516,ansic=5175,sh=59
    30073   kchart          cpp=30073
    25880   kivio           cpp=25853,perl=27
    19583   kplato          cpp=19583
    14530   admin           sh=9851,perl=4679
    12019   kdgantt         cpp=12019
    8484    kugar           cpp=8484
    2323    tools           cpp=1901,perl=261,sh=161
    1887    kformula        cpp=1828,sh=59
    1251    koshell         cpp=1251
    230     example         cpp=230
    180     kounavail       cpp=180
    152     top_dir         sh=152
    72      plugins         cpp=72
    70      interfaces      cpp=70
    30      doc             sh=30
    22      templates       sh=22
    0       autocorrect     (none)
    0       autom4te.cache  (none)
    0       debian          (none)
    0       mimetypes       (none)
    0       pics            (none)
    0       servicetypes    (none)
    
    
    Totals grouped by language (dominant language first):
    cpp:         728875 (86.86%)
    ansic:        87104 (10.38%)
    sh:           11531 (1.37%)
    perl:          5350 (0.64%)
    python:        3191 (0.38%)
    yacc:          2534 (0.30%)
    lex:            443 (0.05%)
    awk:             62 (0.01%)
    
    
    
    
    Total Physical Source Lines of Code (SLOC)                = 839,090
    Development Effort Estimate, Person-Years (Person-Months) = 234.98 (2,819.75)
     (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
    Schedule Estimate, Years (Months)                         = 4.26 (51.17)
     (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
    Estimated Average Number of Developers (Effort/Schedule)  = 55.10
    Total Estimated Cost to Develop                           = $ 31,742,461
     (average salary = $56,286/year, overhead = 2.40).
    SLOCCount, Copyright (C) 2001-2004 David A. Wheeler
    SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL.
    SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to
    redistribute it under certain conditions as specified by the GNU GPL license;
    see the documentation for details.
    Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."
    

    OpenOffice:

     SLOC    Directory       SLOC-by-Language (Sorted)
    951595  binfilter       cpp=951322,awk=256,asm=10,perl=7
    550631  sw              cpp=550082,ansic=505,awk=44
    383523  svx             cpp=383440,sh=73,asm=10
    365804  sc              cpp=363582,java=1269,lisp=798,perl=155
    192673  vcl             cpp=188641,ansic=2769,objc=702,java=544,asm=17
    172907  svtools         cpp=172712,ansic=195
    156925  sd              cpp=156662,perl=184,php=79
    120534  xmloff          cpp=120534
    114964  qadevOOo        java=114964
    110217  sal             cpp=70872,ansic=36235,perl=2866,asm=212,csh=20,sh=12
    101860  sfx2            cpp=101269,java=591
    100550  dbaccess        cpp=100008,java=542
    91611   connectivity    cpp=86029,yacc=3044,java=1803,lex=735
    88306   framework       cpp=84366,java=3940
    62593   tools           cpp=60439,ansic=2098,awk=56
    61603   extensions      cpp=59289,ansic=2238,java=76
    56653   configmgr       cpp=55840,java=764,sh=49
    56291   sch             cpp=56291
    53943   setup2          cpp=49845,ansic=2272,objc=1039,sh=760,perl=27
    53068   ucb             cpp=51890,java=1160,python=18
    49881   odk             java=40793,cpp=5055,cs=1580,perl=989,ansic=638,pascal=397,
                            sh=236,csh=193
    46307   goodies         cpp=46307
    44462   basic           cpp=44326,asm=136
    43922   i18npool        cpp=43546,awk=376
    41627   bridges         cpp=35086,java=5640,asm=901
    40778   chart2          cpp=40146,java=524,perl=108
    38196   autodoc         cpp=38196
    37336   wizards         java=37336
    37309   toolkit         cpp=29971,java=7338
    37047   solenv          perl=33728,sh=3011,ansic=242,awk=66
    34870   forms           cpp=31696,java=3174
    30401   stoc            cpp=30278,java=123
    29871   std2            ansic=29829,sh=42
    28979   scripting       java=20327,cpp=7979,python=673
    26308   xmerge          java=21501,perl=2296,cpp=1726,sh=785
    25315   filter          cpp=19383,java=5563,python=369
    25194   dmake           ansic=19994,sh=4387,asm=759,awk=54
    23797   desktop         cpp=23142,sh=383,ansic=272
    23702   starmath        cpp=23702
    21836   slideshow       cpp=21239,perl=578,sh=19
    20322   xmlsecurity     cpp=17254,java=3068
    19236   codemaker       cpp=18832,java=404
    19089   so3             cpp=19089
    18734   psprint         cpp=14057,ansic=4677
    18269   basctl          cpp=18269
    18081   hwpfilter       cpp=18081
    16862   XmlSearch       java=16862
    16713   package         cpp=12658,java=4055
    16462   rsc             cpp=11865,ansic=3647,yacc=950
    15446   comphelper      cpp=15217,java=229
    15158   automation      cpp=15078,perl=80
    14695   sim2            cpp=14695
    14202   canvas          cpp=10189,java=4013
    13954   xmlhelp         cpp=8082,java=5741,sh=131
    13495   cppu            cpp=11768,ansic=1727
    13412   sip             cpp=13365,sh=47
    13255   fpicker         cpp=13255
    12875   embeddedobj     cpp=10856,java=1911,ansic=108
    12473   unotools        cpp=12473
    12137   basegfx         cpp=12137
    12075   dtrans          cpp=12075
    11774   transex3        cpp=10217,perl=830,lex=718,sh=9
    11404   writer2latex    java=11404
    11346   idlc            cpp=5215,ansic=3340,yacc=2791
    11335   lingucomponent  cpp=9652,ansic=1600,perl=83
    11330   registry        cpp=11330
    11276   ucbhelper       cpp=11276
    11248   sot             cpp=11248
    10708   cppuhelper      cpp=10520,perl=188
    9944    linguistic      cpp=9682,java=262
    9465    jurt            java=9068,ansic=397
    9413    soltools        ansic=5731,cpp=2675,lex=1007
    9172    shell           cpp=8476,sh=538,ansic=125,awk=33
    8610    xmlscript       cpp=8610
    8242    testshl2        cpp=6984,java=780,perl=435,csh=43
    8209    accessibility   java=7984,cpp=225
    8065    idl             cpp=8065
    7992    testtools       cpp=4375,cs=1787,java=1281,python=549
    7942    odfilter        cpp=7942
    7901    javaunohelper   java=7351,cpp=550
    7250    io              cpp=7250
    6983    store           cpp=6983
    6712    cppcanvas       cpp=6712
    5750    jvmfwk          cpp=5695,java=55
    5483    regexp          ansic=3808,cpp=1675
    5412    scptools        cpp=5281,yacc=131
    5060    cli_ure         cpp=2626,cs=2377,java=57
    4799    avmedia         cpp=3537,java=1262
    4737    setup_native    cpp=4040,sh=572,ansic=91,perl=34
    4538    jtools          java=4538
    4522    scaddins        cpp=4522
    4362    embedserv       cpp=4362
    4212    sax             cpp=4212
    4145    padmin          cpp=4145
    4119    pyuno           cpp=3287,python=745,sh=59,csh=16,ansic=12
    3859    i18nutil        cpp=3859
    3843    crashrep        cpp=3829,sh=14
    3785    bean            java=3555,ansic=230
    3733    unodevtools     cpp=3733
    3579    unoxml          cpp=3579
    3327    xml2cmp         cpp=3327
    3273    bonobo          cpp=2904,ansic=281,sh=55,sed=33
    3093    uui             cpp=3093
    2977    UnoControls     cpp=2977
    2906    ie              cpp=2906
    2806    vos             cpp=2806
    2567    mkdepend        ansic=2567
    2545    cosv            cpp=2545
    2482    smoketest       perl=1156,java=1111,cpp=215
    2437    chart           cpp=2437
    2407    sandbox         java=2407
    2343    ridljar         java=2343
    2324    sj2             java=1622,cpp=702
    2275    unixODBC        ansic=2275
    2154    rdbmaker        cpp=2154
    2018    cpputools       cpp=1932,sh=86
    1930    config_office   perl=1930
    1910    remotebridges   cpp=1910
    1900    animations      cpp=1900
    1698    writerperfect   cpp=1698
    1513    udm             cpp=1513
    1390    twain           ansic=1390
    1352    sysui           cpp=733,perl=385,sh=187,ansic=43,sed=4
    1351    smoketestoo_native perl=1351
    1039    officecfg       java=1038,sed=1
    952     devmanual       perl=952
    913     udkwww          python=913
    830     jut             java=830
    790     virgule         cpp=747,ansic=43
    740     fileaccess      cpp=740
    676     eventattacher   cpp=676
    625     helpcontent2    perl=625
    617     x11_extensions  ansic=617
    616     testshl         cpp=616
    525     ure             cpp=381,java=137,sh=7
    509     jvmaccess       cpp=453,java=56
    477     postprocess     perl=477
    474     sdk_oo          perl=474
    465     salhelper       cpp=465
    400     product         cpp=400
    323     apiwww          perl=321,sh=2
    241     scp2            perl=241
    173     sane            ansic=173
    133     helpcontent     perl=133
    110     external        sh=64,ansic=37,cpp=9
    76      readlicense     perl=76
    65      dictionaries    perl=65
    25      ooo_custom_images php=25
    21      res             sh=21
    4       stlport         sh=4
    3       instsetoo_native sh=3
    2       offapi          sed=2
    0       DocumentProperties (none)
    0       MathMLDTD       (none)
    0       apache-java     (none)
    0       apache_java     (none)
    0       api             (none)
    0       aspell          (none)
    0       beanshell       (none)
    0       berkeleydb      (none)
    0       bitstream_vera_fonts (none)
    0       boost           (none)
    0       boot            (none)
    0       curl            (none)
    0       default_images  (none)
    0       dlcompat        (none)
    0       epm             (none)
    0       expat           (none)
    0       ext_log4j       (none)
    0       extras          (none)
    0       freetype        (none)
    0       hsqldb          (none)
    0       icu             (none)
    0       instsetoo       (none)
    0       jpeg            (none)
    0       libwpd          (none)
    0       libxml2         (none)
    0       libxmlsec       (none)
    0       lingu           (none)
    0       mdbtools        (none)
    0       moz             (none)
    0       msfontextract   (none)
    0       nas             (none)
    0       neon            (none)
    0       netbeans_integration (none)
    0       np_sdk          (none)
    0       offmgr          (none)
    0       offuh           (none)
    0       portaudio       (none)
    0       pspell          (none)
    0       psprint_config  (none)
    0       python          (none)
    0       readlicense_oo  (none)
    0       rhino           (none)
    0       rvpapi          (none)
    0       sablot          (none)
    0       sndfile         (none)
    0       so_berkeleydb   (none)
    0       top_dir         (none)
    0       udkapi          (none)
    0       unoil           (none)
    0       xalan           (none)
    0       xmlwww          (none)
    0       zlib            (none)
    
    
    Totals grouped by language (dominant language first):
    cpp:        4630794 (88.89%)
    java:        361396 (6.94%)
    ansic:       130206 (2.50%)
    perl:         50774 (0.97%)
    sh:           11556 (0.22%)
    yacc:          6916 (0.13%)
    cs:            5744 (0.11%)
    python:        3267 (0.06%)
    lex:           2460 (0.05%)
    asm:           2045 (0.04%)
    objc:          1741 (0.03%)
    awk:            885 (0.02%)
    lisp:           798 (0.02%)
    pascal:         397 (0.01%)
    csh:            272 (0.01%)
    php:            104 (0.00%)
    sed:             40 (0.00%)
    
    
    
    
    Total Physical Source Lines of Code (SLOC)                = 5,209,395
    Development Effort Estimate, Person-Years (Person-Months) = 1,598.29 (19,179.53)
     (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
    Schedule Estimate, Years (Months)                         = 8.84 (106.03)
     (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
    Estimated Average Number of Developers (Effort/Schedule)  = 180.89
    Total Estimated Cost to Develop                           = $ 215,907,773
     (average salary = $56,286/year, overhead = 2.40).
    SLOCCount is Open Source Software/Free Software, licensed under the FSF GPL.
    Please credit this data as "generated using David A. Wheeler's 'SLOCCount'.
    
    

    2005-10-27

    Idly browsing

    I tend to give GNUStep a try now and then -- not because I'm not quite happy with KDE (although I seem to remember that alt-up moved to the parent directory in our file dialog before 3.5, or am I mistaken?) -- but because I've always wanted a NextStep machine and never could afford one. It's kind of misplaced, but there you are. And GNUStep is coming along quite nicely, not so much of the "we are not a desktop environment, we are a cross-platform development environment that allows you to create apps that only work together well in their own desktop environment that you're not gonna get" anymore, but it's nowhere near polished or even usable yet.

    But that's not important: what is important is Riccardo's blog, the Art is Long. Because the GNUStep guys aren't constantly pushed to make something that's more like Windows, more like OS X (okay, there's some of that, but not too much, I feel), more like Gnome or more like KDE, they have some leasure time to look around.

    So, and that's the point: Riccardo pointed me at a lecture by Alan Kay [ part 1 ] part 2 ] that was pretty mind boggling. From Doug Engelbart who had a cooperative office suite where two people, each with their own mouse pointer ("bug" he called them) are working on the same document, miles apart, with a live video link in a corner of the screen, to eleven year old kids who write a ham radio circuit design app, to the slightly tubby woman who learns to play tennis in twenty minutes.

    And all along really good advise about designing software and computers for users.


    2005-10-18

    Reading skills...

    No, apidocs writing is not less interesting, I never said that. I like writing api documentation, but I start with it. It's part of the design phase. I like it. Unfortunately as code changes, the documentation doesn't change automatically. And since a simple code change can hit many classes, Adriaan will have many reasons to get angry because writing documentation while coding breaks the flow. And breaking the flow is bad.

    And Benjamin -- I work on KMyBigApp and am not interested in working on kdelibs; in fact I promised myself I never would. Not because of any lack of professionalism, of which I have oodles, but because I believe that KMyBigApps are quite essential. It's after all why the library exists.

    Anyway api documentation and unittests are not the same thing; and while I haven't figured out how to write unittests for classes in a six year old application that's had four maintainers and where everything depends on everything, I'm at least working on un-tangling the knot so I can start making unittests for new classes.

    In bullet points:

    • Unittests are the single biggest improvement to a development process you can introduce.
    • Apidox are part of the specification of a class and are written before the code is written.
    • Our tools should help us keep the documentation up to date, not badgering, nagging or annoying developers who may some ting better to do at any given moment.
    • Talking about apidox and unittests in the same breath is silly. They are different things, as anyone knows who has seem hundreds of unit-tests for uncommented classes and reams of javadoc for untested libraries.
    • It's not pleasing to a tidy mind, but even tidy minds have to accept that work in progress means that there may be temporary breakage.

    Apidox

    Adriaan de Groot writes about apidox and defect reports -- not that I think the two have much to do with each other: unittests and defect rates, yes, and swiss finishing schools and quality of defect reports, there's a causal connection, definitely. But that's not important: what's important is that the api documentation is never going to be complete, perfect or even moderately useful.

    And this is why: a reasonable hacker will write his code, and never document the API -- and his code will work. A decent hacker will come back and document the API even when not paid for it. An good hacker will write the API documentation first, and then start coding. (A truly excellent hacker will write the API documentation first, then the unit test and only then the code. But he's on the job full-time.)

    But what happens then: the specification phase over, the dox are written, the header file looks fine. Time for the code to be written. And that means stuff changes. Code is plastic -- not rigid. But there's no automated system in KDevelop to update the parameter list in the apidox and there's no way someone who's in the flow is even able to break his concentration to update the documentation by hand. It's not a matter of resources, it's a matter of doing something that belongs to a different part of the brain, that's a different activity. Coding is not the same thing is writing prose; any suggestion that people should learn to see these activities as the same thing is ridiculous. Brains don't work that way.

    (And keep in mind: doing A needs B as a prerequisite, which needs C, which needs D, which needs the rest of the alphabet: all the while the code for A is unfinished and quite probably breaks the apidox, which doesn't matter at all as long as the application isn't broken.)

    And afterwards, when the flow stops and there's time to reflect, there's something else that needs attention now -- people yelling for a feature, yelling about a bug, yelling because something needs to be done. There isn't even time in an average day to check whether the apidox are broken: there's not even time enough to answer all koffice-related mail in a day.

    And then, yes, I'm sorry to say, apidox don't count. There's stuff that's more important. And between a working feature that helps someone do his work with my application and a polished API documentation for an unfinished and as yet unused class file -- even if the dox will prevent my name from being bandied about... I'll choose the feature and bear the scorn.

    Features cannot be synthesized by users, bugs cannot be solved by users, but developers can read the source and divine the meaning of a class -- even if that's a horrible prospect and should be the last resort.

    In short: forcing folks to fix the apidox by badgering them with channel-polluting irc bots won't work. What will work is fix KDevelop to automatically write and update the apidox during code in an efficient, unobtrusive matter. Whoever cares about apidox -- fire up your editor and start coding!


    2005-10-14

    American Gods

    Neil Gaiman

    Buy this book at Amazon

    Oh dear... Someone has been reading Frazer's Golden Bough again, And where Wrede and Stevermer's The Grand Tour is fun with dark edges, American Gods is weirdness with leaden edges.

    It's the kind of book you open, and then suddenly find that you've read sixty, maybe a hundred pages without the text leaving much of an impression. Fluent wordwooze, was my impression. And then it starts to get seriously weird and complicated.

    Not to mention philosophical, but you need to bring a lot more than rehashed nineteenth century scholarly superstitions to faze me (fortunately the book has a happy ending, even if the bit just before the ending is just as unsatisfying as the ending to Cryptonomicon.) But I'm not impressed by a comparison between a television and an altar. That's been done before, on Dutch television, too, or so I am told, not having one of the machines myself.

    But in the end, a well-constructed story with some very interesting people in it -- it's just that I wish that these books would have an ending that was as good as the middle.


    2005-10-12

    KOffice 1.4.2

    Well, I've learned a lot, being the release dude for the KOffice 1.4.2 release. I think that I've dropped every ball I could possibly drop, but we got the release out in the end. And I know better what to do for the 1.5 release that's for end of January 2006.

    However, what during this release became clearer than ever is that we need to find a way to thoroughly do a functionality test of all of KOffice before releasing. Now we release without even having tested the most basic functionality, just kind of hoping it will work because it worked in the previous release.

    Which doesn't meant that this isn't the best KOffice release ever, especially Karbon and KWord are now much better and much more stable.

    However, it means, of course, that Carsten Lohrke found a crash in Krita within 24 hours of the release... Aargh!


    2005-10-08

    Ridiculous

    Today, trains got delayed and rerouted around Amsterdam because some silly person spotted someone with wires hanging about and around their backpack.... As if, in this iPod era, wires are a surefire sign of a bomb.

    I mean... I don't want to go all Schneier, haven't got the credentials, but it's almost like this story, that has been blogged about enough.

    Look, there are plenty of ways, I'm sure, although I deny any active or direct knowledge and wouldn't be able to make a bomb to save the world from certain doom, but it's just hacking, anyway -- if I were to make a bomb, it wouldn't involve wires. Wires are so -- fifties James Bond, you know.

    By the way, in the discussions in Parliament about the national ID, we were told that it was a great success: many tens of thousands of fines have been collected for the serious offense of not carrying your ID -- something that became only an offense January 1st, 2005.

    However, nowhere have I been able to find an answer to the really important question: how many terrorists have been arrested because of the national ID -- nor answers to the secondary question, how many ordinary criminals have been arrested because of same. The first was ostentatiously the goal of the national ID, the second was advertised as a nice side-effect.

    But everyone who is asked for his ID who isn't a terrorist or a criminal is a false positive, like an email that's flagged as spam when it isn't, and everyone who's fined is like an email that gets the "respond to this challenge then I'll know you're real" response, sort of like. So, what's the success rate? How many terrorists got caught? More importantly, would SpamAssassin have caught on with the success rate of this measure?

    By the sidewalk, how many people think the data traffic retention law that's being pushed because we need that data to catch terrorists, is actually motivated and intended to catch music and movie swappers?


    Many years ago

    Trolltech favoured me with a t-shirt as a token of appreciation for the articles on Qt I used to write, like Visual Development with Qt 3.0 and a baker's dozen other articles on Qt and PyQt. Did give me a little the feeling I wasn't an objective journalist, but a shill who took presents for positive articles -- but then, I never intended to be an objective journalist, just an enthusiast who tried to tell people about the stuff he got excited about.

    But although it was a veyr nice t-shirt, and though I'm though not all that stout, really, I'm not quite medium-sized. It never fit me.

    Anyway, years passed by and my eldest daughter, Naomi, grew up to like black and to prefer to wear things that her peers in the grammar school she went to this year haven't seen before. I lost a t-shirt, but it Trolltech has gained a grass-roots supporter:


    2005-10-05

    Lovely feature!

    I just discovered that Kicker has a lovely new feature in 3.5. I always have a menubar-on-top with pager, systray, bookmarks and clock configuration, which goes well with an auto-hiding panel with some icons, taskbar and trashcan at the bottom.

    However, until now, this arrangement made it quite hard to do something near the bottom of the screen, because up would the autohiding kicker pop whenever I wanted to grab the bottom of a window or click on XEmacs command line. Not handy.

    Something close to this feature already was available in KDE 3.4, but there it wasn't usable with an autohiding kicker. Take a look at the 3.4 screenshot and spot the essential difference:

    Of course, it would be even nicer if I could add two corners, instead of just one. But, well, I have to way that I'm very happy already.


    2005-10-04

    Er...

    Can wifi pcmcia cards actually break? Like, not from actual physical abuse, but with age? I've got a wireless lan at home that used to work pretty well. Six laptops, six wifi pcmcia cards. Four are Lucent Technologies Silver Wavelan cards, two are a different brand. But all of a sudden, the Lucent cards only give us a very intermittent connection.

    About as bad as I had in Malaga, in fact -- and this time it's my own fault and I don't know what to do! Are the cards broken? Should the access point be dusted more often? Why do three out of six cards exhibit the broken behavior, but two others never?

    Hardware, I'll never understand it. Especially when it works with funny invisible waves.


    About KWord

    (I'd post a comment to Anders' blog, only his blogging software doesn't allow me to login. I believe it's a known problem with Drupal -- I never can login on www.kdedevelopers.org either.)

    It's true -- the tables implementation in KWord is completely and fundamentally broken. There are other bits of fundamental brokenness in KWord, too. Little bits of the frames and text engine implementation.

    Invite Thomas Zander for dinner and a beer, and you'll learn all about it. Bad, I know. Good news is, it's certainly fixable. The bad news is, nobody currently has the time to do that. Fixing the table implementation is a job that would take a few weeks or a month of connected hacking time. There's only so much that can be done in the wee hours between putting the kids to bed and turning oneself in for the eight hours that are so essential to keep the bloom of youth on ones face.

    On the other hand, when I had the occasion to write a couple of big, complex KWord documents the other week, KWord did crash about four times a day when writing the first document. About six bug reports later, I had apparently provoked David too much. The next day, most crashes were fixed and the second document didn't pose any problems.

    Except when trying to load a KWord OpenDocument document into OpenOffice: there I ran into an infamous OpenOffice bug: OpenOffice cannot load OpenDocument bulleted lists. Yes, that's an OpenOffice problem, not a KWord problem. See this bug: http://www.openoffice.org/issues/show_bug.cgi?id=52127. In short: when OpenDocument doc exchange between KOffice and OpenOffice fails, don't blithely assume it's our fault -- it may be the big guys' fault, too.

    Although there's plenty to do for us, too.

    And in, fact, there's plenty being done. The next KOffice release, 1.4.2, which I hope to finally create tomorrow, will include a lot of OpenDocument fixes, and the 1.5.0 release, slated for end of January, which was going to be just a Krita and Kexi feature release, is going to include even more OpenDocument fixes. In fact, for many KOffice applications, it's going to be the native file format with 1.5.0.

    But all that doesn't help with our poor table feature...


    2005-09-22

    New Krita .cmg image

    I've updated the Krita klik package; the crash on choosing the filter paint tool is gone now, and it should work better on SuSE and other systems. This is probably only a temporary location since it's eating into my data traffic allotment faster than I thought. What I don't understand is why my adsl connection has unlimited data traffic, while the website at xs4all is capped to 5GB/month. No doubt there's a reason for that, but I don't get it.

    Update

    Again updated the package: it now includes a fix that makes drawing smoother and better. And soon Krita will be really klikkable!


    2005-09-21

    Klik! Krita.

    Together with Kurt Pfeifle, I've been preparing a klik package of a reasonably recent version of Krita. It's yesterday morning's version, and we've already added stuff, fixed bugs and done cleanups -- but this is a version of Krita that includes CMYK support, 16-bit channel support for grayscale, rgb and cmyk, openEXR, zooming histograms (in case you want to have more than 256 bars in your histogram of a 16 bit/channel image), curves widget with histograms, separations and many, many other things that are not in the 1.4.1 release.

    If you've installed the basic klik support as per Kurt's instructions, then you can simply download a precomposed klik image of Krita and double-click on the file from Konqueror to run it.

    Note: this won't work on all distributions, notably not on Slackware or Fedora. The package was created on Kubuntu Breezy. It may crash on SuSE 10. Or not. If you download this, please, please, please tell me whether it works for you, and if not, give me the output of running it as follows in a shell:

    ./.zAppRun krita.cmg
    

    (Or was that .zApprun -- no matter, tab-completion will help you here.). I need success stories and I need failure stories. Mail me at: boud@valdyas.org

    Now, if Krita does work for you, please be a little careful: this is a development snapshot. Only work on copies of your original images (which is wise anyway, no matter which app you use). If there's something that doesn't work smoothly, doesn't fit your workflow, impedes your progress or misses so badly it makes it impossible to do your work: tell me. Mail me, catch me on #koffice, file a wish. I'm not a photographer, I'm not a designer, and I'm not much of an artist. I need you to tell me how you want to use a pixel image app.

    Update:

    Thirty-five downloads and three reports later, I can confirm that the klik package works on SuSE 10 RC1 X86_64 and on Gentoo, if you install libIlmImf yourself. Klik doesn't work on SuSE 9.1 at all. (I also saw that people are still downloading the old binary snapshots: I have removed them.)

    Updated update:

    The package works fine on Debian sid, too. Niko Sams reports that the paint with filters tool is broken at the moment; something that we might not have discovered for quite some time without this way of having people test packages. Also: the performance test plugin can crash Krita, too. That's known :-).

    Mandriva,too.

    Stefano Pagnotelli reports that the package works fine on Mandriva Linux release 2006.0!

    Success on SuSE 9.3

    Bruno Windels reports succes on SuSE 9.3. This Klik thing is like magic!

    DNS problems with klik

    Note that aketon.klik.de has problems. If you want to try this, try to do the following:

    wget 134.169.172.48/client/install -O -|sh
    

    To install the klik client that will make it possible to doubleclik on the krita image file. Or you could add 134.169.172.48 klik.atekon.de to your hosts file: that way it'll work as advertised.


    2005-09-07

    Finally...

    I'm starting to feel better -- even did some gentle hacking, yesterday. I'm still as weak as rubber kitten stuffed to the gills with phtalates, though. But I'm regaining some sort of perspective. It feels like Akademy wasn't just a week, but months long to me. Memories are starting to come back.

    Like the incredible helpfulness of the organizing team, who took me to the airport to fetch my delayed luggage, called cabs for us and who were in general great. The very nice woman of the kiosk near the hospital, who, when I asked her in my best Spanish for una cerveza, por favor, answered in English and told me she thought I deserved a cold beer. Nice woman. The family restaurants near the residence and the University, where we could just order everything on the first page of the menu and get a delicious assortment of dishes. The kids playing around until late. Gabriel, the waiter at the residence cafe, who could speak English, but refused to do so. I stymied him with my Greek, though! Guy with a definite sense of humour. Some very good talks -- and also a few that made me fall asleep. The small supermarket near the university, which was fun and friendly -- and the whopping great big 3+4 near the residence, which had an entire aisle devoted to sausage. Pity the only thing I wanted at the time was a little yoghurt. The airconditioning didn't do much harm to me; but I discovered that I'm almost completely dependent on having network if I expect there to be network. Deprivation makes me grumpy. Funny thing is, if I expect not to have network, then it's no problem.


    2005-09-04

    Home again

    I'm still sick; I bought a bunch of grapes on Wednesday -- I remember Eric Laffoon remaring how great they looked -- and in the course of the afternoon I started feeling queesy. I went to the residence, tried to eat some dinner, and then I found out I shouldn't have done that. Cue one very feverish Thursday, an incredibly bad Friday (what with getting up at four to catch my plane) and a bed-ridden Saturday. I'm up now, I'm going to try to eat something. A spoonful of yoghurt or something.

    Anyway: if people wondered where I had disappeared to on Thursday, now they know.


    2005-08-30

    Network...

    The network at the Akademy is really bad. I feel completely isolated at times. The wifi network has a very small range and near the end of the day when most people are trying to connect their laptops it may be impossible to actually get an ip address from the dhcp server.

    I've been at the talks that were most interesting to me personally -- multithreading, async programming and scripting -- Mirko Böhm has done a very cool little lib that will make it actually possible to do task-based programming in C++. The ADK we created at Tryllian has that as an important feature, too.

    Multithreading is cool; async programming definitely is. Imagine simulating threading using timers -- on a multi-code chip. Timer-based async programming has no future.

    Walking on the Dark Side was also interesting, being as it was about what we should be learning from dot net and things like that. The talks following that one actually dovetailed very neatly. What is needed is a framework that provides object oriented programming in any language -- non-oo languages really are out. I'm now going to try a new approach to scripting Krita that Richard Dale suggested.


    2005-08-28

    Slides and ogg

    The slides and the ogg for my Krita presentation are now available:


    Without a drop of coffee!

    I can't believe I just did the second presentation I ever did without having drunk a cup of coffee... You can have either coffee or juice at breakfast, and when I arrived at the conference center, the coffee machine was not working. Besides I needed to get the room unlocked -- which I did very nicely by getting a native speaker to speak to the security guard who assured me it was being opened that very moment.

    I'm quite sure that I have actually been videotaped, and perhaps even streamed The streaming address is http://stream.fluendo.com/akademy -- but I'm not sure where the streams are archived, so if you go there you will, depending on the time, see another hacker expostulating about his pet project.

    The talk went somewhat well, I guess. I may have made an ass of myself, but people came out with useful questions. Note to self: don't forget to add the cheatsheet workflow helper module to Krita. That was a very fun idea.

    And then, when I picked up my laptop the dvd-drive slipped out of the case and crashed on the ground. It still apears to work somewhat, but it won't eject properly anymore.

    Right... Coffee, blog reading and relaxing until the coffee break, and then another round of talks.

    (I also missed the party last night because I didn't want to run the slightest risk of being hungover. There were actually quite a lot of people who didn't go either, and I had a nice chat with the ktts maintainer, Gary Cramblitt, and went to bed quite early. And there were a lot of people at my talk; I was afraid it would be a no-show event because of the Novell-sponsored fesitvities.)


    2005-08-27

    First day

    Well, actually the first day was yesterday, with the E.V. meeting. Gosh, those meetings are long -- I got up at 3AM to get my taxi to Schiphol, only to have my plane being late, which meant I missed my connection in Paris, which meant I was late for the meeting, which meant I missed the first half. But no problem: I got enough EV meeting to last me a year... Nice dinner, by the way, nice conference center, nice acocomodation: those Andalusians do their students well!

    We were all enjoined by Kalle to be at the conference center today at 9:00 sharp, because the Andalusian bigwigs were going to welcome us. Turnout was good, and the speeches were nice and short. Actually, these government undeer-secretary types appear to be knowing something about what we're doing and about what they were going to be talking about.

    A quick break to get my pink slip... And then back to listening.

    The first talk was by someone whose name I missed about the Novell Linux Desktop. Well, it certainly seems a professional desktop, but, well, on the other hand, it goes completely against the grain of Matthias' Ettrich's original vision: have something unified with everything working the same. You don't get that when you run OpenOffice, Evolution, Kopete, Firefox on top of either Gnome or KDE -- and this guys appears to be very much a Gnome user. You still got a couple of toolkits -- OO's own thing, Gtk, Qt and XUL. Integration is improving, and they're doing usability work... But you don't get the integration you'd get with a whole KDE desktop.

    He actually says that Kontact doesn't work and Evolution does... Let's hear the next presentation, which should actually have started about ten minutes ago.. It's about Kolab, and I bet they're going to tell us Kontact does work, does integrate with those MS mail server thingy and with Groupwise. Right now, I could do with more coffee. The little cup at breakfast wasn't quite enough!

    ...

    Right, Aaron is now going to intrduce the Kolab talk. And he's promising us this talk is going to prove the previous speaker wrong. Till Adam.

    MS Office is replaced by OO, IE by Firefox, but nothing to replace Exchange or Lotus Notes. Both Evo and Kontact support as many backends as possible, but we're never going to be as good as Outlook is at being outlook; playing catch up takes so much time we cannot innovate -- it's really hard to be an exchange client. We need to provide the full stack: client and server -- and to offer painless migration paths. But there much perfect interoperability with Outlook clients.

    Kolab gives us: enterprise mail server, scheduling, free-busy management, assigning, managing to-dos, shared mail folders, calendaras, addressbooks, notes, journal, management, multi-localtion and what not.

    And Kolab works with apache, cyrus, openLDAP, Postfix, Amavis and Horde (for php apparently, don't know about that...) That means it's a complete Exchange replacement, and unless a company has let itself being ensnared by "special offers, just for you, it's cutting our own throat..." by Microsoft for Exchange, you should move to Kolab. It's not as if you really need to stop using your virus-vector, er, Outlook client on the client if you move to Kolab. There is solid evidence that Kolab works; there are many real-world installations with tens of thousands of seats.

    (Ah, I've found the camera. Apparently there are webcasts!)

    Kolab is so easy to install nowadays and so complete, you don't need no expensive consultants anymore -- should give that a try. We could use a shared calendar in our family. And in the Krita team. Memo to self: ask speaker to set the Krita developers up as Kolab group on the KDE kolab server. adam@kde.org, if I don't get to the hands-on demo session. We need to share our todo's in a more dynamic way than a wiki page. And I need Kolab at home, if just for the disconnected imap.

    Kontact is great! (Even if marking all messages read is ctrl-r in Akregator, alt-r-r in KNode and alt-o-r in KMail components.) It doesn't matter whether you use the kontact shell (I do) ar the companents apart -- they still communicate with dcop. That reminds me -- I need a dcop guru to help me.


    2005-08-25

    Eeek...

    The taxi driver just rang to confirm that I really, really intend to take a taxi at 4 AM to Schiphol to catch my plane to Malaga. My suitcase is packed, my laptop snugly in its bag (I hope there are power points in Paris to recharge it -- it should just about survive on a single battery from Amsterdam to Paris), the 16 bit cmyk, grayscale and XYZ colorspaces are committed to svn, as are some UI improvements, and I'm nervous as hell.

    A I said before, I hate traveling. Flying terrifies me, but the constant worry that my tickets won't be in order, my passport vamoosed and all the rest -- and I don't know the language! -- keeps me even more tense, as tense as a bow string.

    So, I decided not to take another look at KPresenter (my presentation is fine, but KPresenter refuses to show the text I typed in the font I choose, and keeps bunching glyphs up like they're really friendly and want to make little glyphs when running the presentation, it's unreadable), but watch Erol Flynn as Robin Hood again. The tense-as-a-bowstring motif, get it? (Got it? Good! -- time for the Court Jester with Danny Kaye!) Goodness me, what a glorious movie that is, and what an excellent idea to put an entire Warner's night at the movies on the dvd -- trailer, news, muscial performance, cartoon, feature film.

    So... Did I mention I've got a horrible cold, too? I can't believe I don't need to pack cardigans, jumpers, sweaters, coats, long-sleeved woolen underwear, macintoshes and duffels. Rain, sleazy rain and snuffles.


    2005-08-23

    Calling the score

    Two Dell Inspiron 5150 laptops, bought in February 2004. In one year and six months:

    Within warranty:

    • 1 broken keyboard
    • 2 broken power supplies
    • 2 broken hard disks
    • 1 broken fan
    • 3 little rubber feet lost
    • 2 cases of overheating due to bad design

    Outside warranty:

    • 1 broken hard disk -- one week after warranty expiration :-(
    • 1 broken keyboard

    I admit that these machines see a lot use; about twelve hours a day -- but not much abuse. But for my next laptop, Dell is not in the running. Perhaps Asus, or IBM -- if they still have the same reputation for quality next year or so.


    2005-08-11

    Intense

    That's what hacking on Krita has been for some time now. My wrists are feeling the strain a little, what with also writing an fifteen-day introductory Java course in three weeks, I do declare. I took the evening off, more or less, to watch the Princess' Bride again. Four fencers in the house -- no wonder this particular dvd gets a spin regularly...

    Anyway, you'd be surprised how much time there can be between the "aha! let's do that" moment and the finished, polished implemenation, ready for release. So we started brainstorming about must-haves and nice-to-haves for the next Krita release, 1.5, probably sometime early 2006.

    I even got a codename and a splashscreen for it: Kandinsky, in honor of the best name ever proposed for KImageShop^WKrayon^WKrita -- only, Kandisnky hasn't been dead long enough, so we cannot use his paintings for splash screens. Oh well -- here's the design I had cobbled up all on my lonesome, in nothing but svn Krita, with a broken brush tool:

    Not that KOffice apps have splash screens, but it I feel that a nice splash screen sets the tone for the appllication in no uncertain way.


    2005-08-10

    Finally!

    I've finally discovered who is responsible for Krita's name. It's not John Califf, as I thought, but Erik Sigra...

    Anyway: Lee Olson has made us a nice new icon:


    2005-08-03

    Krita at valdyas dot org

    Curious... Krita is really making inroads in the wide world; since yesterday I'm getting spammed at the krita at valdyas dot org address... Surely a sign of international recognition!


    Momentum

    Thomas was kind enough to say that Krita is promising and I'm sure I agree with him... If only I could find a way to start working on Krita full-time... Anyway, not a day has passed since the Hackathon ended or something interesting has been committed in Krita. Herewith a quiver of screen-shots showing off our latest features:

    Curves widget

    Casper's main endeavor in these days has been working on a curves widget. In principle he started porting the widget from Digikam, but Krita is a far more complex application -- what with 16 bit/channel or 32 bits float/channel support, CMYK, RGB, gray-scale, all integrated with littlecms so users know that the colours they see on screen match the colours they saw when snapping their shot and will be the colors they see when they frame their print. So, we now can, in most cases, use littlecms to actually do the brightness and contrast curve applications. And that's very fast and very good.

    Filters gallery

    Cyrille has been working on a dialog that gives you a thumbnail of all filters applied on the current layer: the filters gallery. While still in need of some UI polish, this is already amazingly snappy:

    More screen real estate through popups

    One problem that all paint applications have to solve time and again is that you ideally want everything at hand so you don't have to open dialogs, find windows hiding under your image or hunt through menus for that particular brush you need. Come to think of it -- if you paint with real paint on a real table, with a real sheet of paper, you've got exactly the same problem.

    I'm working on a way to harness Qt's popup power to solve this problem for brushes, patterns and gradients -- eliminating five tabs from the toolbox in one go.

    There are couple of problems I haven't solved. The popup doesn't popup relative to the toolbar button (even though I ask it to) and the button doesn't indicate yet that you can press it. On opening a dialog or another popup from the popup selector widget, the popup closes. This makes editing gradients a time-consuming business. And I haven't managed to make the popup resizable.

    OpenEXR

    And... We've got openEXR support now. This is an image format for really high dynamic ranges, with a float per channel. You can load the scanline-based openexr images and play with the exposure slider to see the result. This is Adrian Page's hard work.

    Exposure = 1.9 stops.

    Exposure = 6.6 stops.


    2005-07-30

    And on the fifth day

    The hackers took a break, and they saw that they had done a lot of work... The hackathon is officially over. Although remote hacker Sven and remote-again hacker Michael are still beavering away, the home team, Casper and me have downed tools for the moment. We've made great strides; wrote a lot of code, took a number of important decisions got some valuable expert and usability feedback. Casper has gone on to Schiphol now, with a fixed determination of finding a power socket so he could finish a selection visualization rewrite.

    Still, Krita in its current state feels like a first draft again. Most of the stuff is there, but now we need to complete half-baked features, bugfix a lot, do lots of integration work and so on. We also didn't achieve complete colourspace independence -- although we fixed a lot of QColor dependencies.

    Right... Just for posterity. (And excuse spellos. Wrists are hurting.) Since Tuesday night we:

    • Improve the filters gallery feature
    • Fix CMYK color model.
    • Fix progress info showing in some filters
    • Remove the text brush for usability reasons.
    • New application icon by Lee Olson (the icon by Christian Essig was also very nice, and very suited to Krita, but the palette idea has already been taken by Kolourpaint. Essig's icon is nicer than Kolourpaint's current icon, though.)
    • New icon for contiguous icon select
    • Added a small tiles filter
    • Fixed cutting of selections
    • Made Krita's crop tool really usable by not following Gimp conventions.
    • Decide on the todo, the colorspace architecture and the look & feel of Krita.
    • Finished the chapter on selections in the manual
    • Add an image separation feature.
    • Read CMY images (we'd like to read the K, too, but that's harder because of ImageMagick)
    • Started writing a paintbox widget with a drawer for minimum screen real estate grabbing
    • Cleaned up header includes.
    • Create a nice curve widget with very good behaviour (that's to say, the curve doesn't snap back to default if your mouse action isn't entirely accurate.)
    • Show the colorspace in the image properties dialog. Redesigned the new image dialog with usability input.
    • Made the convolution painter colorspace independent (in principle -- we've got to implement them in some colorspaces yet, notably the alpha space used for selections.)
    • Added a sobel edge detection filter
    • Speeded up pasting from other applications immeasurable
    • Removed colorspace dependence in colorrange and contiguous area selection tools
    • Started moving the brush, gradient and pattern widgets into toolbar popups instead of dockers -- saving lots of screen estate.
    • Fixed enabling selection actions on layer locking or hiding.
    • Fixed the new toolbox -- made it orientation independent and fixed the order of selection tools.

    Right, tonight I'm going to write our Declaration of Colourspace Independence design document and do a mockup of what Krita will look like in the next release -- but for now, it's glass-of-wine and garlic-cracker relax time, followed by a dinner with Irina. She's been cooking deliciously for us since Tuesday (although yesterday's pizza was mostly made by me: I make a very reasonable pizza dough).

    Gosh... This has been intensive!


    2005-07-28

    Time for a little break

    I'm not made for marathon coding... Casper and Thomas downed tools at 02:30 this morning, and got up around nine-is. Casper was having a fun time working on a levels widget, one loosely based on Digikam's widget, but with a more Photoshop like way of working. And Thomas has been really busy working around Qt bugs in layout management to get Krita's toolbox maximally pretty and useful. It turns out that you really shouldn't drag a toolbar that contains widgets with layout managers from docked position to docked position -- although using the context menu is fine. This morning I fixed one little bug in his code, and now it's not just pretty; it doesn't crash Krita on closing either...

    (Not that there aren't problems... The tablet doesn't work, and somehow my code to lock tools and activate a dummy tool when a locked layer is entered doesn't work either. But with hackathons, I notice, the thing is to a) get agreement on direction and features, b) get the foundation for great new features done (bugfixing as a more lonely activity) and c) discuss usability. Thomas was just as surprised as Alan Horkan was that I actually listen to usability experts and may even remove features...)

    Meanwhile, Michael has ported added another filter to Krita and is very busy, at this very moment, to make our crop tool really sane: all corner grabbers are now used for resizing, there are grabbers on the sides of the crop rectangle, too. Click inside the crop rectangle and move the mouse; that moves the crop rectangle. And finally, he's going to add ratio-controlled resizing of the crop rectangle. Given that a relatively large proportions of the post-release bug reports where usability requests on the crop tool, this is significant progress.

    Tomorrow we're going to go through the filters and other paint device actions, trying to make sure we're completely colorspace independent.

    We also discussed feature plans and direction, and came to some very cool decisions. For instance, selections and masks are very close in Krita, and if we allow to save a selection as a mask on a layer and edit it as if it were a selection we've got a significantly usability edge on anything out there. Our layer editing is very cool -- it's modeless. A selection is a mask, and a mask is a selection and you can paint a selection, but still paint on a layer with a selection... It's very intuitive. We've even got a paint can fill selection tool. (It's a plain magic wand, but now it's clear what it actually does.)

    Adjustment layers have been decided up; add a selection layer to an image layer, associate it with a filter, and the selected pixels will get filtered on display. Or probably beforehand, caching may become important with this feature.

    And yesterday I blogged about our separation feature, which inadvertently appears to be becoming extreme professional grade stuff.

    Right! Callgrind has loaded Krita -- let's get working again!


    Have you already updated your blog?

    asked Casper... No, I hadn't. I was chasing an elusive bug in a filter while I really should have profiles Krita to find out why our cool new image separation filter (which works fine and is, in principle really good -- separating a 16 bit/channel rgba image to four 16/bit graychannel images, for instance) gives a result that makes Krita really slow.

    Anyway, the first day of the Krita hackathon has been quite productive. We definitely decided not to multithread our display code for now; there are problems with that. Michael worked on his cubism & small tiles filter -- and created initial code to separate images into channels for pre-press.

    Fortunately, we've got Thomas Zander here, who know about this kind of stuff and can advise us -- in between working on the Krita toolbox code -- a variant of the code he once wrote for Karbon -- on what's really cool in publishing and things like that. Thomas is getting a little frustrated by the slowness of Menna's laptop and has converted all computers in our place into an icecream network.

    Casper is working on a levels widget -- similar to the one in Digikam, but more generic. Tonight, we have little red dots moving on the widget and not getting out of place.

    Me, I've been fixing progress bars, removing close buttons from palettes and providing provender. Anyway... It's a fun, if exhausting ride. Here's one snapshot, of the computer room:

    (From left to right: a bit of Michael, Casper, Thomas and me...)


    2005-07-26

    Hackathon -1

    It's nearly time for the Krita hackathon. Michael Thaler will arrive in an hour or so. and tomorrow we'll welcome Thomas Zander and Casper Boemann. Unfortunately, Rob Buis was forced to change his plans: his boss needed him for a deadline. So there won't be much krita-karbon convergence work done; but no doubt I'll be able to meet him soonish, what with Rob living in Amsterdam and me working there.

    I just picked up the t-shirts from the copy shop, and very nice they are too:

    Thanks Nuno!

    The nice lady in the copyshop reacted very strangely when I told her the shirt was for an event where a couple of hackers were coming together "to create an image app, like photoshop you know". She nodded sagely and told me, "yes, of course". As if she actually knew about Krita... I must have been mistaken, of course -- we're very good (with some great news coming up for the next issue of This Month in SVN, keeping mum about that for now :-), but not famous or anything!

    In other news, when I plug my camera in my laptop, as of today, a camera icon appears on my desktop. Unfortunately, click it doesn't start Digikam yet -- but no doubt that's doable.

    And, in the cetero censo vein, baking custom widgets is not fun. I mean -- I've spent many hours on creating something decent for drag & droppable palettes using QDockWindow and QTabWidget, and I'm not done yet, and I've also spent entirely too many hours forcing Qt's QToolBar (or KDE's KToolBar, to be exact) into something that shows tools in two columns or two rows, depending on orientation, with sections between types of tools. Custom widgets: Just Say No. Stay with the toolkit, that's my motto!

    (Oh, and trying to install a working development system for KOffice on top of plain Debian is No Fun either.)


    2005-07-21

    Wonderful Kontact!

    I'm discovering that maintaining a growing application (both in size and in popularity), while fun, is also demanding of the old grey cells. Managing todo's and what's to be dones (we have a krita+todo and Cyrille is working on getting us all kolab accounts), incoming bugs, outgoing bugs, organizing a hackathon, contacting people who promised a bit of software but may have forgotten it, promises I made (that I may have forgotten all about)... Plans about publicity, all kind of stuff (1).

    So I wanted a way to manage my todo's. I thought, well, maybe, if I mark a mail as TODO it'll show up in my kontact todo list. That didn't work, so I was all geared to enter a feature request, when I noticed that a similar thing had already been implemented.

    If I drag a mail to the kontact TODO icon, a new todo item is created -- just what I needed, even better than my first idea. I love kontact!

    1. That reminds me: next time KOffice has a big release, we need to get more publicity. One difficult to find review is not enough! LWN did a review of a beta, but LWN, Newsforge and Linux Journal should have been raving about KOffice...


    2005-07-15

    Coincidence? Unlikely

    The Stichting Brein -- the Dutch equivalent of the RIAA, or so it seems -- has lost a court case a few days ago. Seems that internet providers are not obliged to provide information about supposedly copyright infringing customers. At least, not under all circumstances.

    So, today's news is that the Dutch police and secret service are going to create and maintain a database for matching IP addresses to persons. Of course, this is for the loftiest of goals: we're combating child pornography and terrorism here!

    But my bet is that this just means that next time Brein wants to sue a Kazaa user, they can skip the providers and go to the secret service. And that this will happen a lot more often than that the database will be used to catch terrorists. And that catching so-called "pirates" (you're not a pirate unless you kill, maim and rob, I feel) was the actual reason for creating this database.

    For a non-governmental organization, Brein (and the BSA) do have an awful lot of powers. And for a free country, we're under an awful lot of surveillance.


    2005-07-09

    When was the last time

    You saw a spreadsheet embedded in an image? What, you say you never heard of such a thing? But here it is:

    Yes, I did it. I took the first step making Krita a fully paid-up member of KOffice by enabling it to embed any other KOffice application. While I concede that nobody would really want to embed a spreadsheet in an image (unless you could somehow use not the spreadsheets sheet, but the results of its calculation as input for a layer), and a project planner is silly, too. But think of it this way: we've got a world-class text tool for free now.

    Oh, and embedding Karbon vector graphics, too, of course:

    I started hacking on this yesterday evening and did most of the work on the train to the Hague and back; so it's not finished yet.

    My basic design is pretty simple: I couple every embedded object with a Krita paint device. The embedded layer paints itself on the paint device when it's deactivated, and from that moment, you can use all Krita's composition algorithms with that layer. It also offers possibilities for adjustment layers.

    However, there are a couple of problems that I haven't solved yet.

    • KOffice parts are supposed to be tiled, not stacked. They all want a rectangle of their own and are activated if you click on them. This assumption seems to be really deep down in the KOffice code. Activation on selecting the layer is harder.
    • Most KOffice applications assume they'll be rendered onto a white page and they render themselves opaque. I'd prefer if there was a way to make them render on a transparent QImage. I though the transparent flag in the paintContent would help, but it doesn't.
    • KWord and Karbon assume the existence of something like a page, instead of just an expanse of pixels. This doesn't fit with Krita all that well -- an image doesn't have pages.
    • KOffice parts don't agree about things like zooming and resolution. There are comments all over the code about this, but there's no clear concensus. That also hurts when you embed Krita in, say, KWord.
    • Didn't implement saving; on saving your object is discarded and the representation in a Krita paint device is saved. But this is a minor issue.
    • Karbon's dockers don't work well when embedded. Neither do Krita's dockers. Both clash a lot; I have written the beginning of a generic docker library, but I should probably have extended kxmlgui to include support for QDockWindows.

    But despite these problems, I'm quite pleased, and impressed, too, by the framework.


    2005-07-06

    OK, so it is only Wednesday...

    And not Friday as it seems to me. Krita progress has been so swift these few days that I have the feeling a much longer time-span has passed.

    Bart Coppens has done a lot of work on a Wet Dreams based and ultimately Curtis et al derived watercolor simulation color model for Krita, with very nice results. This is, in essence, what I set out to do when I started working on Krita. We need to work on the user interface, but ideas are slowly gelling in my mind about that.

    Michael Thaler has ported the pixelize filter from the Gimp and is now busy with the cubism filter. What Krita needs is indeed a full quiver of artistic filters, and we're quite rapidly filling this area in: filters in Krita are easy enough to code (especially compared to the examples in the Photoshop SDK...), but you need to take care that we support any number of color models. That's an interesting challenge indeed.

    Adrian Page has enabled double-clicks to be passed to the tools so I was able to make a double click crop in the crop tool. And he's added a lot of composite operations to our 16-bit/channel color strategy. And he's started on a 32 bit and 16 bit float/channel RGBA color model. And optimizations, too. And a proper colour picker tool.

    Sven Langkamp has refactored some very old code to make sure we don't load the same set of brushes, gradients, patterns and palettes for every view, but just once. This was quite a hard task, even if the user notices nothing much about except there's more memory available for his images.

    Casper Boemann has been busy adding scaling and shearing to the transform tool and has been bugfixing our scaling and transformation code; currently we have two versions of scaling code in Krita, all of them better than anything else I've seen in open source applications (should do a pictorial comparison).

    And finally, I've ported the Gimp's bumpmap filter to Krita, committed a patch for saner keyboard shortcuts created by Alan Horkan, fixed hiding and showing of individual palette tabs, and (at the suggestion of Alan Horkan again), added hiding of all palettes in one go, by pressing F9. That should help people with big images or small screens a lot. Alan is helping a lot with usability in general.

    And the various translation teams have been very busy, too. Thanks to them for their work, too -- especially when you realize that Krita in development means that I often have to throw away a complete .desktop file that had already been translated into twenty or thirty languages. And they keep going on translating and fixing typos (esp. Andrew Coles, thanks!)

    And now for the second half of the week!

    (Oh, and by the way: we've created a wiki page with what every developer is working on currently and with the todo -- and Cyrille Berger is working on getting us all a kolab account so we can share todo's from within Kontact.


    Vereniging van Orthodoxen

    "H. Nikolaas van Myra"

    Last Saturday it was 25 years ago that our parish priest with other Dutch orthodox believers founded the 'Vereniging van Orthodoxen "H. Nikolaas van Myra"'. This society has as its primary aim to bring believers, clergy and laypeople, from all jurisdictions (Russian, Greek, Rue Daru Russian, Serbian, Coptic, Eritrean, Ethiopian, Georgian, Finnish -- and there are more) together. Whether or not we succeed in that aim, the vereniging still exists 25 years later and that we celebrated.

    Saturday morning we had an pontifical liturgy (with our own vladyka Gabriel and episcopos Athenagoras) in the 11th century Greater or Lebuinus Church in Deventer. This church belongs to the Protestant Church, but they gave us the freedom of the place. We could even use the old high altar for our altar -- for the first time since the reformation, the Holy Liturgy was celebrated on those steps.

    The most touching moment was when our bishop, Vladyka Gabriel, took the little dish with the antidoron after the communion of the priests from me and brought it to the Jansenist (old-Catholic) primate and the Roman Catholic bishop who had been seated in our altar and bade them eat and drink of it in the hope that one they he and they could celebrate together in full communion and as token of esteem and friendship.

    (Next day our priest asked me to do the same for the visiting father Antoine from the Roman Catholic monastery of Chevetogne.)

    Anyway, we even made it to the website of our town:

    I'm the right-most acolyte, the one carrying the dikyrie -- didn't know my beard had reached these proportions yet...


    2005-07-03

    Potato harvest.

    Today, we harvested the potatoes. A little too early, but we had a fantastic meal from our five potato plants:

    Which had an amazing amount of foliage:

    (Images loaded and cropped with Digikam, and scaled and processed with Krita.)


    2005-07-02

    A rose bush

    Generally speaking, I'm in complete agreement with Tom Chance on the subject of gardening. We've had potatoes (and this years crop looks ready for harvest tomorrow; the ultimate in just-in-time supply logistincs), vegetable marrows and lots more. Peas, too.

    This year, however, I also planted, in addition to a goosberry bush and blackberry bush, a rose bush. You see, there's this gap between the fence and the shed, where clumsy me couldn't manage to put some more fence. So I'm trying to teach this rosebush to close the gap for me, with its prickly growth. Nice flowers, too, but they don't last more than a few days.

    In general, gardening turns out to be hard, this year. There's invasion of greenfly, the weather is completed messed up and I somehow fail to find the time to properly tend the garden. I blame bugzilla, myself, for that.


    Comments

    Thanks to Bill Ward's captcha plugin, I've been able to re-enable the comments feature of Fading Memories. With a bit of luck this'll keep the filthy spammers stymied.

    There are a number of rough edges, though: the comments plugin uses the old style flavours instead of the new style themes, and I haven't figured out why. My css skills are seriously rusty, so there's not much in the way of nice layout, and I have been utterly unable to enable showing of comments on the frontpage.

    And finally, Akregator chokes on the Fading Memories rss feed. That's odd, because Planet KDE can handle it allright, and Irina's blog's rss feed works allright. And it's the same code, same blosxom, same rss file layout...

    But this is all the time I want to spend on this project. Back to Wet & Sticky, bump mapping & toolbox redesign.


    2005-07-01

    Downtime

    Yesterday evening all our network traffic seemed slowed down to a crawl -- both wireless and adsl. I couldn't find the culprit (at least, I don't think it was actually caused by Menna plugging a network cable with both ends into the hub "because her Mozilla didn't work anymore" in my absence), so I tried rebooting.

    And when calcifer came up again, it couldn't bring up the adsl interface anymore. So I tried again, this time with a kubuntu installation. Kubuntu doesn't support adsl over pptp, apparently. SuSE 9.1 to the rescue -- no joy. So... I tried connecting with OS X and with Windows XP. Nothing doing. By now it was nearly 13:00 CET, and Irina was coming home from choir practice.

    Final, desperate attempt. Reset the adsl modem. Five minutes later I had network again. But, and this is important: normally our mailserver handles a few hundred email messages per hour, and I have a strong suspicion we have lost mail, despite having backup mailservers (Hi Mark & Otto!).

    So: sent me a mail? Didn't get an answer? Please resend...

    (P.s. I'm downloading SuSE 9.3 as we speak. I confidently predict some more downtime in the near future. I need to get rid of SuSE 8.2, it's no longer supported.


    2005-06-29

    A Krita clone

    It's that it's been around since 1997, and can do a lot more than we, but take a look at

    http://pixel32.box.sk

    It's even got a performance tests menu item :-). I'm impressed by the application, not just by its price tag, but also by the fact that the author has made a more-or-less complete photoshop clone _and_ has written his own cross-platform widget set for it.

    In other news: Michael Thaler has improved the performance of our scaling routines by more than 100% while still retaining the excellent quality. We can now not only scale with the best, but also with the quickest!


    2005-06-26

    More painting apps

    A new crop of painting applications: Photoshop CS2, Deep Paint, Corel Painter IX and Microsoft Code Named Acrylic. Deep Paint is a gratis download nowadays, after having been discontinued by its company. Visit download.com to get it. Acrylic is Microsoft's Adobe killing bargain basket purchase from Hong Kong. Corel Painter IX, finally, is much, much, much better than the previous garbage. Oh, and I found a screenshot of the old Procreate Painter I got with my Wacom pad.

    Read more ...


    16 bits per channel

    Yesterday, Krita reached a major milestone. We can now load, manipulate and save rgba images with 16 bits to the channel. This is really, really great. The only free software gui application that can do this too (that I know of) is cinepaint. ImageMagick can load, save & manipulate (and in fact, we still use ImageMagick to load and save the images), but it isn't a gui application.

    Of course, there are limitations, currently. Painting works, and you can invert images, select bits and scale the image. The filters, histogram and color adjustment tools don't work yet. But that's only a matter of time.

    RAW and openEXR, here we come!


    Toolboxes

    Warning: this is a very, very vertical blog entry... It's about toolboxes.

    I'm busy redesigning the way Krita uses its toolbox. As you can see, we have a lot of buttons, and they are badly organized.

    Currently, we've got an ordinary toolbar with all our tools, more or less like Paintshop Pro, with fold out buttons to select more specialized buttons.

    This is similar to Photoshop, which looks a little more disorganized. perhaps because of the two columns.

    Another style, one that is more often used with paint applications, is that of Procreate Painter. Here, we find a small set of tools. There's one central, tool, a single paintbrush that is used for all the freehand paint effects.

    This the style that Corel Painter IX uses:

    Deep paint 2D is practically the same as Corel Painter IX, except that the order of the buttons is different:

    Finally, Microsoft Code Named Acrylic follows this lead but manages to have small, almost unrecognizable icons:


    2005-06-25

    Selection visualization

    As users of Krita 1.4 know, Krita visualizes selections through a mask. If the default mask colour doesn't fit the image, you can select a different colour for your mask through the colour well in the selection tool panel. That's easy enough, but just a mask doesn't allow for a very precise manipulation of the selection. Today, Casper Boemann added an outline mode to the selection. Still just an outline, no marching ants. And frankly, I'm not even sure marching ants are necessary: they are so eighties.

    Of course, we'll have to do some work to make the color combination tasteful and clear at the same time. For instance, the bluish mask color Casper chose doesn't work all that well with black and white photographs.


    2005-06-23

    Post release...

    While some brave and intrepid souls dip their toes into the cold water of an application in alpha release, the real bugs that only surface in real use will only get reported when the application is well and truly out of the door and onto the users' desktops. And then it's too late... And of course, there's the category of bugs that are caused through fixing the bugs reported by the brave beta testers. One of those hit up on use today: Bram found that we had broken the select-all, copy sequence. That's a nasty one, and if we'd found it on Monday, we'd have called "showstopper!" and delayed the release. Oh well, it's fixed now.

    Bram also wonders why Krita is in KOffice (and hence in the office menu) and not in the graphics menu. Historical reasons, my dear boy, historical reasons.In the balmy days of yesteryear, or rather 1999 (when some current KDE contributors were still in primary school...), KImageShop was started in the KOffice cvs. No doubt it would have had more loving and care if it had been a kdegraphics app, but there, that's where it was, and that's where it grew in fits and starts.

    Of course, there's a case to be made for a move, and many people have made that case. On the other hand, if we manage to make Krita embed other KOffice docs as layers (with layer effects applied to them), then the integration is indisputable. In the meantime, think of Krita and Karbon as the KDE CS suite, that happens to be part of KOffice.

    Which doesn't mean I don't want to see Krita included in Digikam's context menu!


    Hibernate in Action

    Hibernate in Action is a really, really good book. In my previous life as a Python hacker I have spent quite a few evenings hacking together an object/relational mapping framework much like hibernate, only in python. This book starts with a very good, very thorough, very clear introduction to the whole problem of mapping objects to relational databases. The remaining chapters are clear, concise, well-paced and well-written, too. My next book on a Java topic is going to be a Manning book, too.

    It's a bit of a pity then that Hibernate is a typical Java library. It comes with a slew of dependencies, it needs ant, but doesn't build out of the box. The readme isn't accurate enough to fix that, you need to go to the faq to find out which libs are missing... Oh, well, I'm going to try to port a Java app I've just finished to Hibernate anyway, to see if it works.


    2005-06-22

    De aanhouder wint

    September 28th, 2003 -- four days earlier I had bought my wacom tablet as a birthday present. The 28th I decided that the Gimp wasn't good enough for painting, so I started coding a paint app. I knew the looks of the interface I wanted, something that would evoke the idea of painting, so I took a couple of snapshots of my old brushes to use in the gui.

    Of course, my first attempt was done in PyQt, and it was too slow. I futzed about with other approaches until I remembered Kimageshop^WKrayon^WKrita, and decided to see how easy it would be to get into that codebase and start adding what I needed to reach my goal. That was October 1st, and the first tablet support was added at the 4th.

    And today I checked in the first bit of code that made use of the old imagery:

    All the other painting tools need to have a nice image, too, and I naturally want photo's of real brushes for the real media tools, and slick artwork of pixelized brushes for the Shoup-model tools -- but it's a milestone!


    2005-06-21

    Released!

    KOffice 1.4 and thus Krita are released!. We even managed to fix some bugs since the last release candidate. And of course, the Krita hackers are already back into the yoke: Casper is working on colorspace independence and a curves widget, Cyrille on scripting, Bart on tile caching, Grzegorz on YUV support, Adrian on performance fixes and I'm back with Wet & Sticky. Already the released version of Krita seems quaint to me. "Ah, yes, those were the days..."

    Which doesn't mean that I'm extraordinarily chuffed :-)


    2005-06-17

    Effective C++

    Okay, so I've only been working with C++ for slightly more than a year and a half, but still... I should have known what Ruurd, Michael and Christian have been explaining. It's all in Effective C++, item 11, no less.

    But in the heat of coding one tends to think one doesn't have to open a book, after all, let's just try one more little thing, and then it'll surely work. Not that I wouldn't have had time time to open the book; the KisColor class is so fundamental that any change in the header means recompiling all of Krita, which takes a lot of time, even on a 3Gh computer with 1 Gb of memory and a fast hard disk...

    Well, I'm back to Java for the day's work now, which does have the advantage of being able to compile a few hundred classes in less than a minute. On the other hand, Tim Bray shows that Java is growing up: it's starting to be as confusing as C++

    But I still should take the time to memorize the table of contents of Effective C++.


    2005-06-16

    More holiday reminiscing

    Dicom servers are apt to give problems. Moving Krita to total colorspace independence using a KisColor class was almost beyond my C++ capabilities. Why the deuce do I need an operator= when I've already got a perfectly good copy constructor defined? Anyway, I'm tired now so I did a little holiday snap browsing. I'm leaving the best snaps for the next time, for when I'm really down... Anyway: the next installment of the interminable holiday travelogue


    2005-06-12

    Akademy

    So I've booked for Akademy... Even entered a proposal for a talk about Krita on the users conference. Now I'm a bad traveler -- I get nervous about forgetting about arrangements, I hate flying, I hate having to take more luggage than my laptop bag, I don't like going to a country I don't speak the language, and I don't have time to learn Spanish (or should I learn Catalan -- must consult map) before Akademy, not with all the cool things I need to hack into Krita to make my presentation worthwhile. Ah, yes, presentations. I'm bad at presentations. Since I know what I'm going to say already, and what I know is no longer interesting, I cannot imagine people will be interested either, which makes me even more nervous.

    Ew... And the first mishap already happened. In order to be in time, I need to take the 6:50 plane from Amsterdam, meaning a taxi from Deventer. And I was sure I had selected an 20:00 plane from Malaga back, but somehow the stupid website disregarded that and booked me on the 7:00 plane... No hacking for me, the second day of the hackathon. And another taxi, probably.

    On the plus side, we're going to have our own little Krita hackathon in Deventer -- not sure who will come, Casper has booked already and Michael has promised he'll come. Rob Buis (of Karbon and ksvg2) has said he might come the Saturday to discuss re-use of gui between Karbon and Krita. I'm looking forward to that a lot.


    2005-06-01

    Change qua change

    I would like to draw the attention of the esteemed readership of Planet KDE to the following blog entry by my wife: I have a new KDE, regarding her recent upgrade to KDE 3.4.

    You must know that my wife is a pretty accomplished user, but no KDE or Linux guru. She started coding macros on a Wang in the seventies and has been using computers ever since. Still, not a hobbyist or a developer -- just a loyal KDE user since the very first public release.

    Now there are a couple of common reactions to this that I'm not interested in hearing about at all.

    The first is: "have you entered these bugs in bugzilla? Ought to enter everything in bugzilla." That's shirking of responsibility. Bugzilla is hardly usable for developers at the moment, let alone for users. Besides, many of these things are not easy to pinpoint to a particular component unless you know too much about KDE's internals anyway or are just changes that somehow work out wrong.

    And that's the second thing I don't want to hear. The "people are naturally resistant to change so their opinion don't count" fallacy. The expanded syllogism is "people don't like change because they are lazy. Being lazy is despicable. Therefore, not liking changes is despicable. Ergo: change is good." But, frankly, many changes are just wrong. (Like the second "to" line that pops up in KMail nowadays. Suddenly appearing gui elements are always wrong, wrong, wrong -- they disrupt motor memories, expectations and leave people confused because they'll only notice something has changed on screen when something goes wrong and they finally look at what's happening.) If you manage to confuse a loyal user with an upgrade, you have made a mistake, not an improvement.

    And finally, the third wrong response would be "just remove a couple of old config files, and everything will be fine." Or, "That's obviously the distro's fault." Bugs that interrupt someone's workflow are grave problems.

    The right response is "Eek! We goofed! Let's do this better next time. Let's make a rule to never, ever, trash a user's settings, to never ever change the behavior of an application for existing users unless there's a very solid reason, and then warn them of the change the first time they run the upgraded application.


    2005-05-31

    Er...

    I was cleaning away stuff that spambayes had classified as spam -- and while deleting my trash mail, I saw a message with the subject "ontology" going the way of all bits... In case that was actually something about my previous entry, please, dear correspondent, I didn't mean it personally, it's these 500+ spam messages a day that have made my fingers more trigger happy than is good for me. Could I bother you to resend? Please?


    2005-05-30

    Ontology

    I simply cannot parse sentences with that word in it. I know -- from observing the AI types at work -- that it more or less means making a list of words that divvy up a chunk of reality so a program can fake being intelligent through pattern-matching. And the dictionary defines it as "the branch of metaphysics that deals with the nature of being." Which, actually, thank you very much, doesn't help me much.

    But what does it mean in a text translated from the Greek written in Paris of the seventies? That is, what the thingummybob is the meaning of "ontological ethos of the communion?"? The weirdest thing is, if I just scratch out all instances of the word in this book (The Freedom of Morality, Christos Yannaras), all sentences seem to make perfect sense, and I cannot conceive of a way they will have any more meaning than with their auctorial scattering of "ontological".

    Same with the adjective "existential" in the same book or "real" and "true" in Schmemann's "Introduction to Liturgical Theology." If these were hack writers I'd suspect them of trying to up the wordcount a bit...


    Done!

    Krita is done! At least, the very first public release of Krita. Almost feature complete -- I had hoped to get the CMYK plugin done, but didn't make it in the end -- and pretty stable. I hope.

    Bart even managed to salvage the convolver code -- it turns out I had made a couple of stupid coding mistakes, not even real mistakes in the algorithm.

    Of course, coding never stops. David Faure has branched the KOffice svn repository (typed cvs here, fingers can't get used to that new-fangled svn nonsense. Harrumph.), and I'm going to re-enable everything that was disabled from compilation for the 1.4 release.

    There's a lot to do: colorspace independence for all basic painter and filter functions. A better gui with hooks to enable things that are not useful with particular colorspaces. Draggable tabs for the dockers. And a host of other features -- from a bird's eye-view panning and zooming docker to a color variations dialog. Digikam integration is a big issue, too. After all, it'd be a complete waste of effort to duplicate all the hard work of Gilles and Renji.

    And in the meantime a nasty cold has reduced my brains to gooey mush...


    2005-05-29

    More ramblings

    Another chapter of the delayed travelogue... Boring, I know, but then, nobody has to read it... Still, some pretty good snaps.


    2005-05-25

    Convolving

    Krita's current convolution code has a bug that I cannot seem to be able to eradicate -- partly because I don't understand convolution all that well, and partly because the code isn't so terribly clear. So what does the intrepid hacker do when faced with a bit of code with a problem?

    Right, he starts rewriting. Unfortunately, owing to the fact that I don't understand convolution all that well, the new code doesn't quite work either. Behold the result of a gaussian blur:

    If I had set out to achieve this very cool effect, I wouldn't have been able to do it...


    2005-05-23

    Your place or mine?

    I started typing a comment to previous, but then decided that it was too long to bury in a blog comment. By the way, the reason Kurt couldn't comment directly is blog spam. I just couldn't keep up with the comment spams, and blosxom doesn't offer a spamfilter.

    Anyway, that's just an aside -- what I meant was, if people start writing a usability report on the current version of Krita with lots of good ideas on how to improve, say, the toolbar, won't they be disappointed to learn that we were going to implement a new toolbox anyway?

    On a deeper level, the reason it's hard to involve usability experts in an early stage is that much development in those stages is exploratory, not coding to reach an already conceived-of state, but just futzing around, adding a bit of code here & there. Getting a feel for the problem domain, even. I mean, for a long time the only book on computer graphics I had when coding for Krita was Java2D Graphics by Jonathan Knudsen, because my company had a copy on its shelves. I knew nothing about graphics, and I'm still not an expert.

    And Krita had other problems: three different views of what an image editor should be intermingled, with layer upon layer of architectural and accidental residue.

    Just getting most things to work within the existing framework took me and the rest of Krita hackers about a year and a half. Take a look at my first baby steps, in January 2004...

    Most things work now, many things have been re-done, in some cases for the sixth time in as many years, and finally we've got an application that the original authors and the subsequent maintainers might recognize as something that comes close to what they had intended KImageShop, Krayon, Kandinsky or Krita to be. My own idea of what a paint app should be is quite different, but these are baby steps and I'm learning all the way.

    Anyway, just before Kurt published his comment, I'd registered Krita with OpenUsability. Let's wait and see if there are people willing to be consulted about questions like "what should happen when a user applies a rotation to a layer that has a selection active" or "what is better -- having a button on-screen to execute and commit a crop command, or execute and commit the crop on changing to another tool". I do hope so, because not every problem can be solved by doing what the leading commercial application does.


    Tonight is the night

    in the KOffice 1.4 release schedules that is marked red. The coding work needs to be done; the translators have another week to clean up the mess the coders inevitably left in their wake.

    In the past few weeks an incredible amount of work has been done by the Krita developers. I've been on holiday for two weeks -- I did plan this holiday around the KOffice release schedule, but I thought KOffice would be done by the end of March at its latest -- so I didn't do as much damage as I'd have done otherwise.

    Especially Casper, Adrian, Bart and Sven have really cleaned up the TODO list. Of course, a number of planned or tentatively implemented features have been scrapped, but even so, this version of Krita is more powerful and stable than the one in the last beta. Code that was commented out because incomplete has been uncommented and completed, lots of crashes fixed -- I'm really quite happy with the version of Krita that's going to go out into the big, bad world.

    (Let me share one tip already with you: if you find that Krita's palette windows take too much space (for instance because you've got a small monitor), then make add the following line to the [GENERAL] your .kritarc file:

    dockerStyle=0
    

    This will give you sliding docker windows like in Kivio automatically.)

    For the future, we want to finally add 16-bit channels, painterly features like the Wet & Sticky model I've been porting and I've also toyed with the idea of asking the OpenUsability people for a review of Krita's UI -- the problem here is that we have some very clear ideas on what we want to change almost immediately after the release and that may impact the usefulness of a review.

    The Krita hackathon will be in a month or two, and I'm still working on an abstract for the User conference part of Akademy -- but I'm also still not sure that I'll be able to go. I hadn't realized that I simply must be back on Thursday, because that's my twin's birthday.

    Update: I completely missed David Faure's mail about us coders having another week to fix bugs, too -- not just the translators. I promise I'll be extra careful with strings!


    2005-05-21

    Athens 2005

    We decided to take our summer holidays a little early, this year. (Or rather, we took the decision last year). I thought we'd have KOffice 1.4 out of the door by April 1, and that this would be a safe time to book a holiday I guessed I would need by then. I did need the holiday, but it was clear my timing was quite a bit off.

    I'd already warned the Krita developers that I'd slowly drop out of things during the first half of the Holy Week leading up to Easter. Orthodox Easter, of course... And when I came home from work Wednesday April 27 I didn't even have time to check my mail one last time.

    I was already too late to have dinner before Church because we had a reception in honor of a defecting colleague at my work. Seeing that the new CEO seems to be changing the company from a maker of software to a provider of warm bodies with coding skills, my ex-colleague decided that instead of allowing the boss to skim off the profits of letting his body to the highest bidder, he'd better sell himself as dear as possible.

    (And frankly, if this goes any further than I'm not sure I will look askance at incoming offers of regular employment... I'm an experienced Java, Python and C++ coder with all relevant extra skills (operating systems, shell, batch, xml -- whatever you want, I've probably dabbled with it. Dicom and Snobol, even.) I'm also a fairly decent project leader who's done requirements analysis, architecture, design and documentation on the side. The one thing I bar is being sent out to do two months of boring work for someone who pays by the hour. I deliver things, not hours of work.)

    You know what? If I go on writing everything I want to write, this'll fill a complete page on Planet KDE on on the other aggregation pages that syndicate Fading Memories, and that wouldn't be polite. I'll use the old-fashioned expedient of making a static web-page of the rest, and linking to it. So, if you are interested in the account of the first few days of two weeks in Greece (full of human interest, acute observation of delightful details and what not), with more to come, hop over to http://www.valdyas.org/~boud/athens2005.html. I'll expand it over time, as I find time. Or not...


    2005-04-18

    Saint Basil the Great on Usenet

    A thoroughly up-to-date saint, is Saint Basil the Great. Here is his opinion on Usenet (του Αγιου Βασιλειου περι του Πνευματοσ βιβλιον):

    There is no lack in these days of captious listeners and questioners; but to find a character desirous of information, and seeking the truth as a remedy for ignorance, is very difficult.  Just as in the hunter's snare, or in the soldier's ambush, the trick is generally ingeniously concealed, so it is with the inquiries of the majority of the questioners who advance arguments, not so much with the view of getting any good out of them, as in order that, in the event of their failing to elicit answers which chime in with their own desires, they may seem to have fair ground for controversy.

    (KPdf, by the way, is incredible nowadays. Not only does KPdf handle bookmarks, table of contents really well, it also handles Greek letters, can even copy the Greek in the pdf I'm reading now to the clipboard and finally renders the text just beautifully.)


    2005-04-17

    Another portrait

    I think this is going to need another layer, and even so it's not a good likeness. But I feel I have made some progress in thinking in shapes and colours, instead of lines and volumes. And it was fairly quickly done: and hour and a half from sketch to the current state:

    I was obviously inspired by those images of Rembrandt's, of his reading mother, and Durer's ditto. I have cropped the image, there's a sketch of a book, too. Irina posed for me; I succeeded in rendering someone who might be related, but who's at least forty years older and has a quite different character.

    Still, I'm getting at the stage where the painting is convincing; now for the stage where the likeness is convincing.


    2005-04-14

    Unsung heroes

    One of the most exhilarating things about working on an application in the KDE cvs is seeing the .desktop files expand and expand and expand with translations. Everytime I see another language pop up I feel honoured that someone has just taken my hackwork serious enough to spend serious time on it.

    So I really want to say thank you! to all translators who have worked on Krita and who are working on Krita. Thank you! Hartelijk dank! Mille remerciements! Vielen dank! Muito obrigado! Ευχαριστώ πολυ! Большое спасибо! धनयवाद गछु! Xie-xie nin! (Sorry, no Chinese input method on the Kubuntu system.)

    And if you have worked on Krita in a language I haven't learned yet -- thanks to you too!

    (But if the translator into Zulu reads this: I strongly suspect that "I GNU Umboniso Weprogremu Esabisanayo" means "The GNU Image Manipulation Program" -- and that name fits better with the Gimp, than with Krita.)


    2005-04-12

    No hacking

    No hacking tonight; I'm standing by Irina who is writing query letters to agents for her novel. And I'm compiling Qt 4 beta 2 in a daemon process. I think I'm going to have fun with Qt 4, although in general I really don't like having to spend time updating code that I could have used for new features.

    But I did catch one or two memory errors today, Bart made floodfill faster. I do hope we'll be able to fix the rotate/shear/scale code before the release...

    Anyway, since I'm rambling... I've been using Kubuntu for a week or two now. I lost my SuSE install in a domestic accident involving a new kernel and a daughter claiming attention just when SuSE thought it had me monopolized.

    Kubuntu... I like it, in a touchy-feely sort of way. It's quite friendly. But I really miss the enormous load of functionality of Yast -- I need to do way too much by hand, from the dma settings of the dvd drive to the switching on of the secondary network interface.

    And there are little niggles. Nothing somebody who hasn't been a pampered command-line veteran since 1993 (when Linux was still fun, and not a battleground where whiny whippersnappers whine to win, and the platypus ruled supreme) will notice. No coloured directory listings. Vim forgets where it was between invocations. The tab-completion doesn't know what's a directory and what not. SuSE has a much, much more comfortable commandline installation...

    Other things missing are fish, java out of the box, flash out of the box, ogg123 -- I like Amarok, I really do, but 10 out of 20 GB of music on my hard disk is copied from vinyl records and carry no metadata except for their directory path. This does not make for easy listening with Amarok. And there are no daily updates as with apt4rpm and SuSE. But that's maybe for the best, seeing what happened to me...

    On the other hand, SuSE had trouble working with my sound card, was much slower in booting and shutting down, and didn't have the nifty kdm theme of Kubuntu.


    2005-04-10

    Bad Java...

    I wonder why Java libraries are often of such an execrable quality? I have been working professionally with Java for about half a decade now, and truly, most Visual Basic OCX's are better...

    Read more ...


    2005-04-09

    faces

    Are hard. Not with pencil, charcoal or pen and ink. I can do that. But because I started out as a sculptor, I want to use my fingers and my hands. I want to push stuff around. With the aforementioned materials, that is pretty hard. Pencil and charcoal admit of a little finger work, pen and ink not at all. (Stumping is, I recently learned, the correct term for rubbing graphite or charcoal particles around until a life-like effect has been achieved, and is now generally frowned upon.) The very fact that there is so little stuff to push around, means that it is easier to get rid of the sculptor in me and just draw what I see.

    With oil paint, that's harder. It's such delightful plastic, mess stuff -- it just begs for the judiciously applied finger nail, the scratch with a pointy stick, the aggressive thump in the right direction. And it doesn't work that way. Apparently, with oil paint, you need to observe to colours, the tonal values and the way they blend into each other. And then try to achieve a thorough technical knowledge of which type of white is good for mixing, which for highlight and which for underpainting and more like that. It's hard, that's what I wanted to say. But I'm a little stubborn and not a little foolhardy, so I try to persevere. And I want a nice portrait in oils of my daughters.

    Attempt #1:

    I carried this painting a little beyond this snapshot; but I did so using mixed white for glacis; and that just doesn't work. The whole attempt was spoiled by a spotty, rusty fungus-like layer over Naomi's face. I tore the thing up, which I perhaps shouldn't have done. But it did me good...

    Attempt #2:

    In this attempt I made the mistake of trying to draw instead of paint. Menna's face -- the one on the right -- is not too bad, but the rest is just horrible. Inaccurate in colour, line and composition, and with no real dash. It was a mistake not to paint the background first, I noticed with my third attempt. A strong background, as in the first attempt, really helps to define the faces, as opposed to the white of the canvas-like paper.

    Attempt #3:

    This is better. In dim light, it actually looks not too bad. It's just not a good likeness of Menna, whose immensely joyful grimace at the time the photograph was made is hard to believe -- it was a Church feast the snap was taken. Still, the painting has form, and a measure of dash.

    Maybe that's part of the problem: I ought to work to a living model. Anyway, I'm learning -- and that's always fun.


    Praise from sir Hubert

    I used to take my old Powerbook G4 firewire with me on holidays -- to have some music and to offload the contents of my digital camera into iPhoto. I used to be completely satisfied with iPhoto. I admit that iPhoto is a bit slow, but it did the job. And I don't mind using OS X now and then. It's a slow mess of inconsistent application styles coupled with really bad font rendering -- something I've blogged about before -- but it's got the its menubar in the right place, it's instant on and it doesn't invite those long hacking sessions that are so inappropriate when on holiday.

    But I'm really trying to find excuses to take a Linux laptop -- perhaps even the Powerbook, but running Kubuntu (which I'm also using on my main laptop following a slight accident with SuSE and a new kernel that I don't have time to resolve now). Not to fix bugs in Krita during the beta period, mind -- no, in order to be able to use Digikam and its plugins. Digikam is really the very last word in photograph archive maintaining and image editing.

    I don't know where Gilles and Renchi find the time for the amount of work they do -- but the result is impressive. A smooth, well-documented, beautiful application that beats everything I've ever seen before in this area. Including iPhoto. There CImg-based image restoration plugins have completely got Krita's tentative plugin beat and the find-similar images plugin is a godsent. And it's all a real pleasure to use.

    Now I only have to make sure I don't spend the holidays hacking Krita even if I've taken a Linux laptop. Maybe just remove the KOffice source tree... That should work.


    2005-04-08

    F-Day

    Sunday night, at 23:59 GMT (or so I suppose, it'd be a mean trick if we'd keep to Christchurch time) KOffice will freeze. I'm still working on adding at least one painterly feature to Krita -- Raph Levien's Wet Dreams water colour simulation, originally intended for the Gimp -- but I need to hack some things into Krita's internals for that.

    Tonight, I took the evening off, and watched Douglas Fairbanks in Thief of Baghdad for the second time, with much pleasure. And I found a really old copy of the Gimp somewhere -- a copy dating from the earliest, Motif, days. The Gimp was fast in those days, at least, for starting up. Version 0.54.

    It's funny, Krita still cannot do some of the things this version of the Gimp could do in 1997 -- no bezier path selections, for instance, It had better documentation, too.

    On the other hand, the Gimp didn't have layers in 1997, just floating selections, and Krita now has a nice new layers box:

    Although I need a better icon for the lock. And I need to implement actual layer locking. But that can be done after the freeze -- it's a bug fix, after all. The watercolour paint layer needs to be done now. The colour picker selection tool, by the way is done, and I'm pretty satisfied with the way it works. And Adrian and Bart have both committed a host of fixes in the last weak. We're well set to have a stable, reasonably feature-full paint app/image editor for KDE by June 6.


    2005-04-02

    I was on the wrong track...

    I started a year ago or so with a Krita plugin that closely mimicked the select/colorrange dialog in Photoshop. Of course, before I could start to actually implement the stuff behind that dialog I needed to implement selections. At that point in time, Krita's selections were limited to a rectangle defined by a QRect. In more modern paint apps, selections are bit masks, or even byte masks -- giving you a range of "selectedness". I implemented the byte mask variant (note to self: use Vigra to implement a plugin that can crack an image into selections that correspond to each object on the image and add a possibility to have more than one selection per layer -- one layer for each object.)

    However, that particular dialog is not an example of good design. It is modal to start with, it combines a tool -- a selection colour picker -- with a few simple selection algorithms -- select by red, green, blue, yellow, magenta, cyan or shadow. highlight, mid-tone in a dialog which also includes a fuzziness slider, an inversion checkbox and a preview panel.

    In Krita, I'll add the select color/tone options to the application menu, and make a color picker selection tool just like we have a selection brush and eraser, with a fuzziness slider and a plus/minus/replace choice in the tool option pane. The hoops I'm jumping through now to use a tool from a dialog box won't be necessary. What a relief -- a good, Krita like way to add useful functionality, getting rid of a semi-modal dialog box and simplifying the code in one fell swoop. Now I only have to do it...

    It's a bit of a pity of my nice selection preview code, though. But no doubt that'll get in handy somewhere else.


    A little break

    I've been coding almost non-stop for about three or four weeks now. From 8:15 to about 17:15 Java hacking for Tryllian, and from 20:00 to 23:00 Krita hacking. And sometimes I could interleave the coding a bit: a quick dive into Java during a long Krita compile or a small bugfix in Krita while the Java unittests were running. I've added the Cimg-based image restoration plugin I have written about before (I see from the cvs digest that Gilles Caullier has added the same functionality to Digikam -- nice!), an almost-working select-by-colour dialog, a few tests and some performance enhancements.

    Today I took the day off, more or less. I bought a climbing rose, raspberries and gooseberries, dahlias, lilies and strawberries for the garding and spent the morning with Menna and Naomi in the garden -- Rebecca being laid up with a touch of flue (poor girl; Friday night is our regular movie night, and she was not well enough to watch, and Menna and Naomis stayed up to watch "A Woman in Paris", that well known super-super film by Charles Chaplin).

    And in the afternoon I let the kids play their latest game on my laptop while I slept the sleep of the just. I had intended to some hacking tonight, but first I wanted to test the latest version of Krita with my wacom tablet. It turns out that SuSE still does not give me out of the box support with version 9.2, so I had to jump through hoops and consult websites, but I got it working finally. We've had a bit of a regression, as I had feared, because drawing isn't quite so beautiful as it was. No doubt it'll get fixed in the beta...


    2005-03-28

    Release crunch...

    It's definitely not the first time I've been in release crunch mode. When you're nearing your copper jubilee as a software developer you'll have gone through that particular subdivision of hell a few times. About a dozen times, at least. I remember vividly my first experience of release crunch -- that project started in release crunch mode.

    Read more ...


    2005-03-26

    Krita on Fedora Core 3

    Dan Berger was kind enough to help me debug running the binary cvs snapshot of Krita on Fedora Core. In the end, I had to install Fedora on a spare partition (having four install CD's is so retro -- one expects a net install from a live cd nowadays), and recompile Krita using gcc 3.4, but it worked.

    So, for the Fedora users:

    (Fedora, by the way, has a quite pretty installer and I like the default look & feel of their version of KDE; nice, sharp fonts, too. And it was a breeze to get a development system up and running for KOffice.)

    And now on with Krita. We've got two weeks until the KOffice freeze takes effect and there is much frantic hacking going on.


    2005-03-20

    New Krita snapshot

    I've put up a new binary snapshot of the current cvs version of Krita. This version may:

    • Not work at all on your version of Linux (and it won't work on any other kind of Unix unless the linux compatibility layer is really good).
    • Crash at unexpected moments.
    • Remove all exif data if you load & save and save a jpeg.
    • Mess up your existing KOffice install.

    All of which means that I'm rather bad at packaging software, so if anyone wants to help me out with making binary packages of Krita, please, please, contact me and earn my undying gratitude.

    The old installation instructions at Krita, ready to run (almost).

    The new binary is at: krita-current-cvs.tgz. Xs4all has dropped it traffic limits so feel free to download as much as you want and tell me whether it works on your system. I 've compiled with KDE 3.4 and gcc 3.3.4.

    This snapshot contains the following new features:

    • Polygon & polyline tools
    • CImg based image restoration filter
    • Filtering and painting new respects selections
    • Load (but not save) image profiles embedded in jpeg or tiff
    • New tile core.

    And probably some things I've forgotten.


    Manif

    Manif, I gather, is current spoken French for demonstration -- if that's the right word in English. I was in Brussels for my theology course (note to self: finish that summary of Schmemann's discourse on Liturgy and another summary of Bobrinskoy on the trinity real soon new), and when I walked back to the South Station from the Rue Joseph Claes I was surprised by two long rows of armoured police vehicles parked in a derelict building lot.

    Read more ...


    2005-03-17

    No snapshot tonight,,,

    Cool as the greycstoration thing may be -- and it is very cool and the code offers lots of possibilities for even cooler things -- I'm not going to put up a new binary snapshot tonight. I'm still putting together back my installation after the !@#$% hard-disk crashed Sunday night, and I hadn't gotten round to installing apbuild again and it's getting kind of late in my timezone now... But it's checked in into cvs and everything.


    Greycstoration for Krita...

    A few days ago, Victor Stinner published a the CImg library (by David Tschumperlé) to mess with images. Most notably, CImg can restore noisy images to something resembling a clean picture. Apart from that, it can create missing parts of an image with astounding success.

    Yesterday evening mr. (or mrs. or ms.) Morreale mailed me asking whether I had seen the plugin. I had, but couldn't get it to work with the Gimp. My correspondent, an archaeologist, wanted to use the algorithm to restore old images of objects that no longer exist. My interest was piqued and I started porting Stinner's plugin to Krita to see it working.

    And tonight, apart from cleanup like progress bars and gui repainting while working, and maybe a little hour class cursor, I'm done. It just works... Look at the before and after of the grainy picture I used yesterday to show off our color management support:

    Before:

    After:

    And I also fixed image export (temporary fix, Krita still discards all your image annotations, like Exif data and color profiles on export -- will work on that tomorrow night) and undo for filters. I'll try to make a new snapshot tonight, but I won't promise...


    2005-03-16

    Color management

    Newsforge had a nice article today introducing colour management and coincidentally I had some time today to work on import/export in Krita (restoring the server didn't take so much time as I had thought, and I had taken a whole day off for that job) and in the process of doing that, I made it possible to load profiles embedded into images in Krita and fixed a display bug. Compare these to screenshots of the same image but with a different display profile:

    Also note the label "CIE RGB" in the statusbar: that's the embedded profile in the image.

    You can download the image with the embedded profile, too, to check what other applications make of it. Saving profiles doesn't work yet, I'll add that tomorrow night, probably.

    Oh, and Michael Thaler has been having fun with the geometric tools. Now KOffice has even more internal consistency: both Karbon and Krita can draw your stars for you! But only Krita can do so with gimp-type brushes.

    As soon as image export works again, I'll start making available regular binaries again.


    2005-03-15

    I hate hardware.

    I truly, intensely, hate hardware. Hardware breaks, is expensive and doesn't cooperate. The two Dell Inspiron laptops we bought February last year have had the following wrong with them within the warranty period:

    • Two broken power bricks.
    • Broken keyboard
    • Two broken hard disks
    • Processor and fan replacement
    • Little rubber feet that melt off because they are placed directly under the cpu
    • A design blunder that makes the fan suck up dust and coat the processor with it, making it necessary to blow the fan aperture through regularly.

    And then, Sunday night, two bloody weeks out of warranty, the hard disk of my laptop breaks again. Nothing doing with Dell, no replacements, so I had to buy a new one. Paradigit (an excellent shop, at least in Deventer, where we buy our supplies and parts regularly) had a replacement drive of the right type, so Irina went and bought one, and I spent the night building it in. I'm no hero with those fiddly little screws that are always tightened way too hard in the factory, but I finally succeeded.

    Only to discover while moving my music collection from the server that's bringing you this blog page that calcifer's hard drive is failing too. I hate hardware.


    2005-02-25

    Easily shocked

    I fear I may be lacking in a quality that I don't know exactly how to describe, depravity, or at least, acquaintancy with depravity, perhaps. Irina has celebrated her birthday today -- and a nice day was had by all, more of that anon -- but in preparation for the grand day, our daughters needed to buy some birthday presents.

    In our family it is customary to subsidize the buying of presents by children to a certain extent: they don't have to dip into their pocket money to any great extent on these occasions. So I pressed a tenner into Naomi's hands when Irina wasn't looking, and they resolved to mount an expedition to town the Tuesday after that.

    And that Tuesday night, when I came home, Naomi told me they had to curtail their spending after all. Why? Well, this is why...

    They assembled in front of a certain shop to divide their loot, and a freak gust of wind tore the tenner from Naomi's hands and deposited it in front of a young man.

    Who promptly picked it up, pocketed it, grinned at my daughters, and made tracks.

    So, here I'm left with this existential question: how can anyone who presumably lays claim to membership of the human race nobble ten quid from three prepubescent girls? And laugh while doing so? I know, in the abstract, that there are people who do worse than that, but, well, that doesn't mean that this isn't so far beyond the pale that I cannot grasp even the first principles of it...

    Fortunately, the kids weren't any too wrought up, and a nice Chaplin tonight (accompanied by four kinds of pasties) did much to restore domestic tranquility. Note to self: The Circus by Chaplin is very funny, but the ending is sad, and the movie adaptation of Nicholas Nickleby is even more brutal than the book, and not suitable for a young audience, or even for an adult audience that doesn't like lovingly depicted cruelty. And that is maybe why I don't understand that blasted thief who stole my my daughters' tenner either.


    2005-02-23

    I love Konqui

    And especially in its last incarnation on the logout screen of the KDE 3.4 beta version I installed today. It brings a smile on my lips every time I shut my laptop down. No, I won't include screenshots -- just wait, install and see for yourself. A treat for all true konquistadors, among whom I can count not just myself, but also my wife and kids.

    As for the people who vociferate their ill-considered opinion that Konqui should go, because he's not 'professional enough', I say unto them: Bah! Humbug! I somehow don't believe that they have any professional standing themselves. I imagine them as spotty high school pupils, students maybe, but certainly not members of the decision making or influencing elite that does so much good work for the world economy.

    In fact, I can only too readily imagine the kind of school-corridor conversation that will lead the weak-willed poor souls to an abiding hatred of everything vermiform:

    (Smith) Hey, Jones! You still got that namby-pamby baby dragon thing on your computer? That's for babies, man!

    (Jones, blushing) Eh, what?

    Smith, slaps Jones on shoulder, walks towards the tuck shop.

    (Jones, with perfect esprit the escalier, shouting after Smith) It's miles better than those monkey footprints of -- dash it! He cannot hear me anymore. And he's got all the pretty naked people, he does, too. Mutter, mumble. I'm going to write a strong letter to the editor of the Dot.

    But as for me, in shart contradistinction to Jones, who will no doubt become a grouch, maybe even a civil servant, I'm getting to like Konqui better with every new appearance.


    2005-02-14

    The craftsman and his tools.

    Aaron Seigo gives, in an interesting blog entry, two very interesting quotes "The handles of a craftsman's tools bespeak an absolute simplicity, the plainest forms affording the greatest range of possibilities for the user's hand. and That which is overdesigned, too highly specific, anticipates outcome; the anticipation of outcomes guarantees, if not failure, the absence of grace.. Reading that made me pause to think.

    First an aside: he also instances three people who have trouble organizing their information on their macs -- I don't think that this has much to do with either remark from All Tomorrow's Parties. Nobody has much experience with organizing a small library-worth of information, unless they are trained librarians (are librarians craftsmen?). This is something completely new -- and I guess that google-like interfaces on our own data, combined with some intelligent way of working with and organizing bookmarks are currently our best bet to allow people to handle all that information.

    But back to the craftsmen:

    A craftsman is someone who has learned his tools, simple tools that can be used in surprising ways. A painter can do a myriad of things with a brush, and when that brush has finally been so worn out it has completely lost its bristles, he can do at least half a myriad things with them. The usual way of allowing a myriad things to be done on a computer is to give the craftsman a myriad tools. All the modalities (if that's the right word) or possibilities of a simple tool are made explicit and discrete, instead of left to the craftsman's inventiveness in using and abusing a single thing.

    Not that it's simple to learn to use that single thing: nobody who sits down with a brush, some paint and a canvas can use the brushes. It takes years of learning (much like vi...), and even then paint has all kinds of surprising properties and brushes have a way with them that's often best described as recalcitrant. But all that adds to their usefulness as a tool; all that means that the result is surprising.

    Which neatly hooks in with the second quote I quoted from Aaron's quote of a book I have never read... The anticipation of the result that stifles the result itself because it strait-jackets the process (nasty word, process, but I don't have better one at the moment, maybe flow?). You can see the same thing happening when people want to sketch a particular thing, a scene or an illustration and pertinently want it to end up like they imagined the result in their mind before sitting down and letting the paint do its work.

    In paint apps, all that layer tom-foolery, all those myriad bezier tools, all those potato-stamp paintbrushes (even when a little randomness is thrown in), in Painter, in the Gimp, in Krita and in Photoshop, all those filters, they all are designed with a certain final effect in mind, not with the process of creating an image in mind. So there's my little contribution to the quest for more useful computers: if you make a tool, don't think just of the results that tool makes possible, but of the work, the flow the serendipity using the tool should enable. And that doesn't hold just for paint applications. I think.

    Practical examples? Don't have any, I'm just typing away waiting for KDevelop to compile before I can continue on Krita.


    2005-02-13

    No progress...

    A lesson learned: don't work on three or four things at the same time. It means that if one of those things turns out to be a little too hard, you cannot commit the rest. Which, in this case, meant that Sven has had to do a lot of work to get previews working in Krita again, after the autolayers merge. (The infamous merge which makes Krita behave the same as Photoshop when moving layers, at the cost of some performance and a lot of breakage.).

    Another lesson: don't use apt-get to keep your main development system up to date when there's a KDE release around the corner. First I couldn't use the keyboard at all. That appears a known bug, something to do with kdm. Now I just cannot use alt and del in KDE anymore; the other keys work fine... No solution, yet, so I'm downgrading to the SuSE release version while I'm typing this on my old powerbook.

    Not that I would have had much time for hacking anyway. Friday we did a little city trip to The Hague with the kids and a friend. We paid a visit to the Convent of Saint John the Baptist, where a good friend of ours lives.

    Then we had lunch at one of the best Chinese restaurants in the Netherlands -- not haute cuisine best, but good Chinese food of the kind Chinese ex-pats prefer to eat themselves best. Indeed, there were three Chinese couples lunching, one Cypriot couple and a Dutch old gentleman when we were there. We had Peking duck in thousand-year sauce, squid with seasonal vegetables, beef with sour vegetables and bean-curd puffs with pork mince. Delicious... The friend who had joined us had never eaten in a proper restaurant before, but she enjoyed every bite. The restaurant is Sing Kee, (Wagenstraat 63).

    Afterwards we went to the Mauritshuis, a rather small museum that houses some very famous paintings. Currently the most famous one is without any doubt Vermeer's Girl with a Pearl Earring, because of the book (nice) and the moving picture (boring). But that painting was a bit disappointing. There's a much better painting by an unknown artist of a servant girl on the same floor a few rooms further along the route... But there are also some rather good Rembrandt paintings (among them Suzanna in bath which is simply astonishing, and also surprisingly small) and a Holbein the Younger and some Rogier van der Weijden paintings that I had never thought I'd ever see for real. We spent a long time discussing the taking-down-from-the-cross by van der Weijden -- and then we noticed a small group of people had stopped listening to us with some interest. Not many kids can determine a bunch of saints with any pretense to accuracy.

    Again, this was the first time that friend of our daughters had ever visited a museum, had ever seen a real painting that hadn't been produced in our house or at school -- it was even the first time she had visited a town the size of the Hague. She rather liked it, comparing it favourably to Deventer. Her reaction to the notion of going inside a building as grand as the Mauritshuis was a little comical, being "Cool! Vet-gaaf! Gaan we daar echt in!

    Anyway, the next day everyone was inspired to paint, and I started on a portrait of our three daughters, so didn't spend any time on Krita, and in the evening we watched My Fair Lady, with Audrey Hepburn. What a disappointment! Or rather, what a culture shock! Much must have changed in the fast forty-two years... I remember the movie as one where the male love interest, i.e., professor Higgins, turns around completely and acquires some manners. But in the end, when he demands his slippers from Eliza with his hat over his face it's clear that he's bought the girl who has declared her throughout the movie to be a good girl, not a whore, and that she has let herself be bought because the prospect of marriage with impecunious Freddie (query to self: is there any movie or book in which a Freddie, Reggie or Algy ever marries the first female love interest?) is too daunting. I guess we don't see the female sex quite so much as a chattel to be acquired or disposed of as the makers of this move. I've had the same experience with books, for instance those by Havank. Apparently, forty years ago women were very much seen as an object, which is incomprehensible nowadays. (Although Wodehouse (in , e.g., Uneasy Money, already had a very real and independent woman who is very much not an object.)

    And today I spend most of the afternoon trying to rebuild a working SuSE 9.2 + KDE system. I guess I'm going to slap this powerbook shut and take a peek at progress right now...


    2005-02-09

    KParts, KXMLGUI and nightmares

    I would not want to say a word against the KDE application development framework, no, certainly not... And if Krita's development has stagnated for a week or two, it's entirely because I am too dim to grasp certain aspects completely. Especially the plugin/xml gui framework. Probably not because the framework is overdeveloped, underdocumented and designed for a quite different kind of application.

    Consider the situation: Krita loads most of its functionality in the form of plugins. A lot of plugins, about thirty at the moment of writing, with more to come. Some of these plugins can be accessed from the GUI, with either a menu entry or a toolbar button.

    A clear case for KParts and KXMLClient -- and so it would be, if loading all those plugins every time a new view is created wasn't so darn expensive. Besides, I want to manage the plugins. Be able to add comboboxes with all the filters and toolboxes with all the paint operations to dialogs and windows; and I don't want to instantiate more objects than necessary.

    But if I use the default KParts framework, every time a view is created, it looks as if all the plugins are searched, opened, loaded, created and added to the gui.

    If I don't use the default KParts framework, but load the plugins myself and keep a factory class in a pointer list, then when I create the plugins for a certain view, they are not added to the gui.

    Now this problem isn't unique. I have nosed around a bit, and it looks that at least Kate and Digikam have solved this problem, both by wildly divergent means, and I'm quite sure they are not the only KDE application that have hacked a plugin management layer around KParts.

    Krita being a KOffice application complicates matters a lot, because a KOffice application is a complicated subclass of KXMLClient -- and that appears to mean that adding dynamic menu entries is hard, too.

    So now I'm faced with a hard decision: go back to the old code and tweak it to have al least the paint ops loaded as plugins, or try to slug it out, copy perhaps some code from Kate -- I'm a bit desperate at the moment, because what I really want to do is create a new interface for Krita, one where there is a really small toolbox with the basic tools, and a QToolBox widget (like in Qt Designer) that holds all the nice stuff, such as brushes, fill types and filters for the filter tool. But to do that properly, I need to have the plugins working.

    Or... Maybe if I just store the pointers to the plugins in my registry singletons for filters, color models, paint ops and all the rest... Must be worth a try.


    2005-02-05

    The contented bureaucrat

    I achieved little on the Krita front today. I should have prepared my tax return, but I spend about eight hours hacking on Krita. I'm trying to arrive at a slightly sane situation with regards to plugins and modules, but that's a lot of work.

    As with any paint application, the core of Krita is just a tile manager: an image is divided into small blocks of pixels, and the hardest code is to cobble the tiles together in one image. Anyway, that part was recently redone. Around the tile manager is a display routine -- and that's the core. The rest is done with plugins.

    KDE has made working with plugins really easy, but you need to have some consistent idea of how to work with plugins. We had a different way of loading filters, UI plugins, color strategies, paint operations and other resources. Making everything consistent is taking a long time...

    Anyway, feeling a little dispirited by the lack of progress I was making I shut down my laptop and grabbed my brushes and started finishing an old painting I had never finished, The Contented Bureaucrat, inspired by a photograph of a civil servant in India. I learned enough from Baxter and Cockshott (see previous entries) that I felt confident I could tackle the mounds of paper:

    At the same time, Rebecca was discovering that she has indeed a talent for rendering with pen and ink:


    2005-01-31

    Physically-Based Modeling Techniques for Interactive Digital Painting

    William Valentine Baxter III

    This dissertation (which you can download from the author's website) is the single most important advance in digital art since the first paint application by Shoup. In contrast with earlier academic work, like Curtis and Salesin on water colour painting, or Cockshott on oil paint simulation or any of the other research papers published and collected in volumes like Non-Photorealistic Rendering (Gooch and Gooch), Bill Baxter has not just investigated his topic and written some text, but he has created a real, usable, interactive application that has been tested by actual artists. The other researchers have never reached that stage -- well, maybe we should count Raph Levien's Wet Dream, which is derived from Curtis et al.

    Read more ...


    2005-01-26

    It's not spring

    But it's time to clear away some junk from around my desk and bookshelves, so here's one of the statistics killing summaries of books read and things done.

    As for Krita, we're still busy picking up the bits after merging Casper Boemann's new tile code. I had sworn not to do a heart transplant before releasing Krita to the public -- Krita already has had four cores before now -- but we needed to get something a little more flexible in place. But now we have to get everything working again, and debug the new stuff. That's taking a bit of effort and it means that we lost a some of our momentum, which worries me. I really want to get a first release out before April, only six months after my initial estimate.

    By the way, I'm reading Bill Baxter's dissertation, and for all you usability freaks and geeks, I've got this screenie of the best possible of all possible paint applications. Nothing else needs to apply, every other pixel pushing application is inferior to this:

    (And yes, the palette slides out) For the best effect, you really need to watch the videos provided at:

    Pity it's not free software; Bill Baxter intends to commercialize it. For now, it's not available to us mere mortals. When I've done reading the dissertation, I'll report in detail. I've also started reading up on OpenGL and shaders and so on; those are what Baxter uses to achieve interactive speeds. I've also come across Tom van laerhoven's website, a Belgian KDE user who is interested in liquids and has done a paper on water colour simulation. Maybe I should ask him for some pointers when I'm done with the Wet & Sticky implementation.

    Books I've got on the stack and which I'm not going to do a full notice of because they're going to go back onto the shelves:

    • Nest of Vipers, by Tod Claymore. A convoluted murder mystery with precious little plot; a pot-boiler detective in the pre-war English vein, but written in the 1948. Not available except from second-hand books.
    • Deurwaarders Delirium, by Havank. One of the more inebriated novels by Havank, the celebrated Dutch author of detective novels. This one is almost unreadable -- it reads as if Havank decided on a new plot with every glass of wine, and he must have downed many when writing the book. Still, there's some memorable descriptive prose, particularly at the beginning of the book. Near the end it becomes a Phillips Oppenheim clone, but without the charm.
    • The Great Divorce, by C.S. Lewis. One of my favourites, I recently retold this in condensed form to my daughters, and thought I had to re-read it because I had forgotten several points. It's a Divinia Commedia-like story of a young man who travels from Hell to Purgatory (which I understand is not part of the Orthodox conception of the after-life, being a purely western thing -- the Orthodox base their ideas on what happens directly after death on the visions of one Byzantine monk whose name has escaped me for the moment) and who meets various saints (who were sinners) and sinners (who prefer to stay sinners). The danger with this book is that it's convincing enough that it's hard to keep in mind that it's fiction, not a report from a fact-finding mission.
    • Klein Typicon, by Father Arch Priest Martin Erlings. Both the choir leader of our church choir and my wife tried to dissuade me from buying this book. It's an incomplete, error-ridden introduction to the order of services in the Orthodox Church. In some places Father Martin drops into anecdote, and those anecdotes (for instance about the Beatitudes not being read in the Greek Churches) tend to be inaccurate, too. Still -- it's the only work in Dutch that offers anything approaching an introduction to this intricate subject. It's all very well to tell me that if I want to master it, I should sing with the choir for ten years, but I cannot sing, so that won't happen...
    • Winter on the Plain of the Ghosts, by Eillen Kernaghan. I really wanted to like this book... It's more-or-less self-published by an author who didn't manage to interest publishers in the book, despite having a track record of decent-selling mid-listers. But you know what? The publishers may have been right. Despite being set in Mohenjo-Djaro, the people bear Sanskrit names, but often ones not proper to their own gender. The story is a bit flat, the writing feels flabby -- but the opening is priceless. The old narrator, having decided to put down the story of his life, has laid in a good store of clay... Makes a change from a ream of paper.
    • Honderd jaar wonen in Nederland 1900-2000. This is a catalogue to an exhibition we never visited, but it was remaindered and was very cheap at De Slegte. It's a fascinating collection of essays and pictures on housing and furnishing in the Netherlands in the twentieth century. Neither too scholarly, nor too light-weight, with good photographs and reproductions.
    • Een Gegeven Dag, Robert Hans van Gulik. This book deserves a thorough study. It's a weird novel, the odd-one out in van Gulik's oevre. It's not about Judge Dee, for starters. It's written in first person present tense. The narrator is a deeply traumatised man who -- utterly surprising -- decides to the right thing in the end, and who is far more clever than the readers. It's a complete, deep novel and a cheap thriller in one. And a classic puzzle novel, but one in which the pieces of the puzzle are given at odd moments, too early, too late. Deeply interesting. Not as easy as the Judge Dee novels, not at all.

    So... Back to the Wet & Sticky paint model, colour management, selections, DICOM images and liturgical theology.


    2005-01-24

    Caravaggio

    Timothy Wilson-Smith

    I haven't seen many paintings by Caravaggio in museums; but then, I haven't been around much, I tend to go to the same places again and again, like the Frans Hals museum in Haarlem or the Stedelijk Museum in Zwolle, seeing the same paintings again and again.

    Still, Caravaggio repays study, as much nowadays, as for his Dutch pupils, in the seventeenth century. He was the master of light; but as this catalogue makes clear, he was a dark master of light, a man who would be diagnosed with a mental disorder nowadays and not be allowed near anything stronger than water colours on a piece of wet paper.

    This Phaidon Golden Library edition was quite cheap; and the reproductions are a bit grainy. The accompanying text isn't all that great, either. But it's a very useful introduction all the same.

    (I just remember that I've bought and used a lot of other art books in the past year, too, varying from a book on Flemish paintings in the United states to a book on the process of converting a drawing into a painting (in French, no less), and a book on art in the National Museum in Washington; I should do a notice on them, if only for my bookkeeping, but I probably won't.)


    Pieter Claesz -- meester van de Gouden Eeuw.

    We went to a great exhibition of still life paintings by Pieter Claesz in the Frans Hals Museum in Haarlem. This exhibition will travel first to Zürich and then to Washington. Pieter Claesz is -- in my opinion -- the greatest master of the genre, even better than Heda.

    I seldom buy the catalogue of the exhibition, but this book, published by Waanders, like Het Nederlandse Stilleven, and Waanders always prints excellent reproductions; there are many art books, like the Phaidon book on Caravaggio, that are much worse, with indistinct, lifeless, flat reproductions.

    But Waanders' books are excellent; and the text is scholarly and thorough, too. I tend to skip the text in art books, but I sometimes got engrossed enough to skip the paintings. And then I started thumbing back, and forth.

    If you like painting -- a liking for still life is not required, there's one very excellent painting of cat killing an eel -- and if you're near Haarlem, Zürich of Washington, then this exhibition is one to go to. And the book one to buy.

    We had a lot of fun; the kids like this kind of thing, too, and surprised an elderly gentleman by exclaiming that they'd recognized a particular knife in a series of paintings over and over again. They discovered the reflection of the painter in a tin jar, the difference between a berkemeier and a roemer, decided that the painter in his later period began to deliver sloppy work -- and so on. Full marks for observation, those kids.

    Next time we're going to Haarlem, we'll take Danitia, one of our kids' close friends and pay a long visit to the artist's materials shop, buying stuff. We have what I'd almost call a regular club; Saturday afternoon, and Sundays after Church the four girls sit down with me and we experiment with stuff, paint, ink, charcoal -- everything is fair game. They don't get any art lessons at school anymore, so it's up to the parents to make sure they know oil from gouache, ink from charcoal, wax from clay. And it gives me an excuse to buy cool stuff, and to take a bunch of kids to a museum.


    2005-01-19

    Wet and Sticky: A Novel Model for Computer-based Painting

    Malcolm Tundle Cockshott

    I got a PDF copy of the microfiched version of this 1991 dissertation from the website of Bill Baxter, where you can also find his own dissertation. This is one of the first works on making painting on the computer something approaching real painting, with real viscous, thick paint.

    Read more ...


    2005-01-14

    Boring...

    We were in need of a new printer. Our HP Deskjet 500 was still in relatively fine fettle, considering its decade and a half of service, but the output isn't good enough for today's agents and editors.

    So we went and bought a new printer. A real laser printer -- if you'd asked me ten years ago that in 2005 I'd own a laser printer I'd have ridiculed you with all the sarcasm that I could muster. But now we have on of the little (yes, they're small, nowadays) beasts.

    And it's boring... Really, utterly boring. A Brother HL-5150D, and it just works. Copy the ppd file from the CD, feed it to cups, tell cups everyone in the house is allowed to print, and there we are. Everything works. No challenge at all, it's not fair. I'd counted on an interesting Friday evening messing with drivers, googling, testing and then proudly presenting the slain animal to my wife, like my forebears presented their hunk of dinosaur to their wives. But no scope for my hunterly instincts, no, with thanks to Peggy Seeger, mighty restored hunter. It just works.

    Except for printing pdf's with two pages to the sheet from KGhostview. Maybe I can salvage my honor! Here's luck, let's crack some skulls and give a toast!


    2005-01-13

    Een kleine geschiedenis van wijn

    Rod Phillips

    Buy this book (in English...)

    A cheapo find in the local bookshop, Praamstra, at only 6,50 euros for a hard-back. Most books about wine are quite pretentious (like the old Het Book van den Wijn) and seldom deal exhaustively with history. This book is true to its title: a short history of wine.

    As such, it's quite a success. Possibly the English has lost something in translation as the prose is not uniformly rivetting, but it is serviceable enough even in pedestrian Dutch. The author know what he's writing about: a professor in the history of alcohol in Canada.

    Anyway, despite (or perhaps because of) it's being a bit dry for it's subject, it made me long for a glassful of the best, the reddest wine I could get when I was reading it. A good glass of something Italian, that's the ticket...


    Balladen en andere gedichten -- het gebroken hart

    J.W.F. Werumeus Buning

    I may very well be the last Dutchman to actually enjoy Werumeus Buning's literary output, but it's still not easy to find his books in the second-hand bookshops. This little paperback Irina found for me in Haarlem. It's a combination of some poems I already had in his collected works, and a very sentimental, but also funny and pleasant little novelette which I read with a lot of pleasure.

    The illustrations are by J.F. Doeve, who also illustrated other books by Werumeus Buning, and who is eminently collectible. That'll account for the rarity of a new find... Werumeus Buning is these days best know for his recipe books and his writing about wine, if people at all know about him...


    Oosterse christenen binnen de wereld van de islam

    Herman Teule en Anton Wessels (editors)

    This book is 438-page collection of small papers about the history of Christian churches in countries controlled by the Islam, and about the present-day situation. Seeing that my Patriarch resides in Constantinople, Istanbul for those buying a plane ticket, and that he still isn't allowed to re-open his theological university on Halki Island, this topic is pretty interesting to me.

    Read more ...


    Don Camillo

    Giovannino Guareschi

    My parents had three Don Camillo books -- a little surprising, because they were both from a rather anti-papist Dutch Reformed church family, even if they were both Church-leavers, and the Don Camillo books are very Roman-Catholic -- and as a teenager I devoured them.

    Read more ...


    2005-01-07

    Shading palettes

    Tool palettes have always been a problem with Krita. Or rather, with Qt and KDE. There's simply no good widget that offers the following features:

    • Can dock to the inside border of a widget.
    • Can dock to each other.
    • Can shade to the height of the title bar.
    • Can contain tabs that can be dragged to other dockers, or into thin air where they magically form the first tab of a new docker.
    • Have an extensible array of widgets that can be added to the right-top corner.
    • Don't stutter when dragged from a docked position to a floating position (QDockWindow quickly moves to application (0,0)).
    • Has window decorations taken from the current theme, but smaller.
    • And, most importantly, don't take focus from the main window when floating so all shortcuts in the main window still work.

    For a while, Krita has used Kivio's sliding dockers. Quite clever little things that slide back into the window border when the mouse leaves them. But they posed some unpleasant usability issues and hard-to-solve bugs, so for the moment, I've gone back to QDockWindow-based dockers. In Qt 4, the stuttering appears to have been solved, at least, even if the other problems persist. But I've added a shade button, so even people with small screens (say 1600x1200...) can use Krita without having two columns of dockers.

    The future will learn whether we'll keep this arrangement... Krita already has had many attempts at solving the problem of where to keep tool options and palettes -- take a look at the screenshots at our screenshot page. But I don't want to spend too much time at an issue that is in fact a library problem and has little to do with making a paint app.

    Anyway, here's a piccy of Krita with most dockers shaded:

    And here's the download of the cvs binary snapshot with this feature:

    http://www.xs4all.nl/~bsarempt/krita-cvs-current.tar.bz2


    2005-01-06

    New Krita snapshot

    Michael Thaler has completed a port of the oilify filter from the digikam plugins to Krita and Chris Clayton has pointed out a bug I had always intended to fix but had forgotten with the filters that have a preview. So that's enough for a new snapshot, I thought, and here it is. Please, if you manage to run this snapshot mail me and if you didn't succeed, mail me too. I need to have some idea about how well these snapshots work.

    krita-cvs-current.tar.bz2


    2005-01-05

    Audacity saves the day

    Or rather, the lady. A friend of ours, a Dutch composer, is going to give a series of lectures on the interaction between music and physics (the scientific discipline, I mean). She had carefully ripped 31 tracks from CD's, extracted the bits she wanted to use in her demonstration, and then lost everything.

    Enter the audiocd io slave, audacity & k3b. In an hour and a half -- and it would have been less had not my laptop overheated after an hour -- we did the work that had taken her more than a day. Audacity is really stable and really fast nowadays. And while k3b initially crashed when I copied the tracks to an audiocd project, on a subsequent attempt it was on its best behaviour.

    And everything was easy as pie... Once I had taken a few initial hurdles. First, audacity wouldn't run on SuSE because of some conflict with the installed GTK lib. Then, audacity being wxWidgets, and not a bona-fide KDE application, I couldn't easily use the audiocd:/ ioslave to load the files directly from CD into audacity. The "do you really want to junk everything you've done" dialogs must miss some window hint, because they never surface above the other audacity dialogs. And lastly, audiocd:/ telling me over and over again that the cd I was ripping was damaged a bit got old really soon, especially when it meant I couldn't do anything with the files on the desktop when that messagebox was playing hide-and-seek with my other windows.

    But still, niggles aside, these three great applications did save the day.


    Raindrops...

    Today's Krita binary snapshot contains Michael Thaler's new raindrop filter plugin -- a really cool effect ported from the digikamplugins.

    http://www.xs4all.nl/~bsarempt/krita-cvs-current.tar.bz2

    By the way -- it seems as if the KMainWindow::setIcon(QPixmap) is quite new, since Tom Chance is using 3.3.1, which gives the error:

    Starting Krita ...
    ./.bin/krita: symbol lookup error: ./lib/libkofficecore.so.2: undefined 
    symbol: _ZN11KMainWindow7setIconERK7QPixmap
    

    And I see that this method is going to be removed in KDE 4.0 anyway. But since I'm typing this on my way home, I cannot investigate further. I'm going to do some work on making the dockers switchable between sliding and QDockWindows.

    Oh, and Kevin tells me that the $KDEHOME/.env trick should be: $KDEHOME/env and that it should work from KDE 3.3.0 -- I'm going to test that tomorrow.


    And now the right one

    There were some problems with the tarball of Krita I put up yesterday evening, most notably a total lack of all the necessary KOffice libs. Silly me, I tried to correct another problem and created a broken tarball. This one does work for me, I tested it... Note that you really need to restart all of KDE to use the new version of Krita -- and SuSE users may need to put the same line in their .bashrc as users from other distributions.

    Oh, and Tom Chance mailed me with an error that indicates that Krita really needs KDE 3.3.2 at least -- the startup script doesn't check for that. If you have an earlier version of KDE, you will see an error like:

    Starting Krita ...
    ./.bin/krita: symbol lookup error: ./lib/libkofficecore.so.2: undefined 
    symbol: _ZN11KMainWindow7setIconERK7QPixmap
    

    Not having an old version of KDE, there's not much that I can do about it, I'm afraid.

    http://www.xs4all.nl/~bsarempt/krita-cvs-current.tar.bz2


    2005-01-04

    Krita, ready to run (almost)

    I'm not really elated, because the hacks are dirty and the installation hassles can be significant, but I do have a binary version of Krita that may be runnable for other people. I've tested it with SuSE 9.1 and Ubuntu, and in both cases I didn't have any trouble. Your mileage will vary... And of course, because it's today's CVS snapshot, the version of Krita I've packaged shows some big holes where we're working on. CMYK is broken for now; colour profiles is half-done and may lead to crashes. You cannot clear a selection. Some tools don't do anything. Autogradients are being worked on. Most tools don't mind selections, and besides, if you move a layer, it's selection stays in situ. Work, but in progress, and that's a good thing.

    Okay, these are the installation instructions. Read them.

    This binary release of Krita can be installed anywhere you want. It has been tested with SuSE 9.1 and Ubuntu Hoary and did work on those distributions.

    For Ubuntu (and probably most other distributions):

    add the line

    export KDEDIRS=/path/to/krita-cvs:$KDEDIRS

    to your .bashrc. If you use tcsh, adapt accordingly.

    Restart KDE, cd to /path/to/krita-cvs and type ./krita

    For SuSE 9.1

    SuSE has changed a lot to the startkde script, and one of the changes is that they unset KDEDIRS. Find the line

    unset KDEDIRS

    in /opt/kde3/bin/startkde and add AFTER that line:

    KDEDIRS=/path/to/krita-cvs:/opt/kde3

    Restart KDE, cd to /path/to/krita-cvs and type ./krita

    Untested, but supposedly universal and a lot cleaner, if you use at least KDE 3.3.3

    Add a file called .env to $KDEHOME containing the line:

    export KDEDIRS=/path/to/krita/:$KDEDIRS

    However, I don't have 3.3.3 yet, so I cannot confirm that.

    If you have a better way for making a binary distribution of a KParts based KDE application that can be used without installing into the standard KDE location, tell me. Please!

    If you want to help me with maintaining binary packages from source snapshots, please mail me and earn my undying gratitude.

    If these instructions are not clear enough, please mail me with suggestions.

    And now for the big secret: the place where you can download Krita:

    This is not Slashdottable! Don't be a cad, don't post this link to Slashdot! I need some bandwidth for myself for the rest of the month:

    http://www.xs4all.nl/~bsarempt/krita-cvs-current.tar.bz2

    Whenever I think there's something neat completed or nearly completed, I'll post an update on Fading Memories.


    A disappointment...

    I've spent a bit of time recently to finally create a binary snapshot of Krita. The source tarballs Daniel Molkentin makes (or made -- they're disabled for now) weren't trouble-free. A lot of people, including me, couldn't get them to compile.

    So I decided to take a leaf out Clarence Dang's book and create binary package using autopackage's apbuild. However, the resulting packages makes Ubuntu hang hard and doesn't work at all on my wife's SuSE 9.1 laptop. And I had to do nasty things to the startup script, like restarting kdeinit, to get it to work on my own laptop. So I'm back to the drawing board... If anyone has a few good tips, I remain obed. yours, boud@valdyas.org


    2005-01-03

    A large pile of Wodehouse novels

    Strewn over my desk and floor was the result of a few weeks of feeling none-too-fit. So, I'm going to jot a note about all of 'em in a big entry, because otherwise I'll never find my corkscrew.

  • Enter Psmith
  • Psmith is always a pleasure to meet, and in this book, part two of the complete novel Mike, we meet him for the first time.

  • The little Nugget
  • A very early book, where Wodehouse apparently still wasn't sure whether he was writing humor or straight novels. It's fun, but one of the most date Wodehouses.

  • The Mating Season
  • The book with the immortal scene where Wooster, masquerading as Fink-Nottle teaches aunt-pecked Haddock a hunting song using the port decanter a a baton.

  • Sam the Sudden
  • One of my favorites -- a Valley Fields book.

  • The CLicking of Cuthbert
  • A new addition to my collection -- a collection of golf stories from the time when the clubs still had names.

  • Spring Fever
  • Not part of a series, but a nice country-house romp from the middle period, made better by the appearance of Augustus Robb, who is everything a personal man shouldn't be, including impertinent and a reformed house breaker.

  • Aunt's Aren't Gentlemen
  • No, definitely not... And no respect for a convalescent youngster either.

  • Jeeves in the Offing
  • Jeeves on a holiday, which leaves Bertie nicely in the soup,

  • The Luck of the Bodkins
  • I've never been able to read this one end-to-end. If there's such a thing as a boring Wodehouse novel, then this is it.

  • Young Men in Spats
  • A classic collection of shorts -- with the great tale of the hats that have gone through the fourth dimension, and the wooing of Mordred.


    Ten Lords A-Leaping

    Ruth Dudley Edwards

    Ten Lords A-Leaping is perhaps the best of the three Ruth Dudley Edwards books I've read. A strong plot, a sometimes merciless, but fair, dissection of the characters and motivations of the two sides in the fight for the banning of fox hunting and great descriptions of such institutions as the House of Lords and the English countryside.

    As always, I have some problems squaring my lefty tendencies with the stance chosen by Ruth Dudley Edwards. I do think that there are better ways of fox control than having caravans of cars follow cavalry charges that follow a nightmare of dogs that follow one little fox. And I do think, too, that it's not always necessary to mess with other people's occupations, no matter how distasteful. It's like adultery; it's not something I do, but I don't concern myself with other people's proclivities -- not even when adultery almost always means someone gets hurt. Likewise, if people want to hunt, let them hunt. And if they hunt an edible animal, so much the better, since a nice game pie with deer, pheasant, mincemeat, saffron, ginger, cinnamon, cloves, onions and eggs is definitely a Good Thing.

    Anyway, her book, first published in 1995, now has been made into a fantasy by the British government, so I wasn't even sure where to file my note of it...