Subscribe to Planet KDE feed
Planet KDE -
Updated: 35 min 9 sec ago

Updating the Shop!

3 hours 26 min ago

Today we finally updated the offerings in the Krita webshop. The Comics with Krita training DVD by Timothée Giet is available as a free download using bittorrent, but if you want to support the Krita development, you can now download it directly for just €9,95. It’s still a really valuable resource, discussing not just Krita’s user interface, but also the technical details of creating comic book panels and even going to print.

We’ve also now got the USB sticks that were rewards in last year’s kickstarter for sale. By default, you get Comics with Krita, the Muses DVD and Krita 2.9.2 for Windows and OSX, as well as some brushes and other resources. That’s €34,95. For five euros more, I’ll put the latest Krita builds and the latest brush packs on it before sending it out. That’s a manual process at the moment since we release so often that it’s impossible to order the USB sticks from the supplier with the right version pre-loaded!

Because you can now get the Muses DVD, Comics with Krita and Krita itself on a USB Stick, we’ve reduced the price of the Muses DVD to €24,95! You can select either the download or the physical DVD, the price is the same.

And check out the very nice black tote bags and cool mugs as well!

All prices include shipping and only in the Netherlands, V.A.T. is added.


KDE signs the User Data Manifesto 2.0 and continues to defend your freedom

8 hours 38 min ago

I believe that in today’s world where more an more of our daily life depends on technology it is crucial that people have control over that technology. You should be empowered to know what your technology does and you should be empowered to influence it. This is at the core of Free Software. Unfortunately it is not at the core of most of the technology people interact with every day – quite the opposite – walled gardens and locks wherever you look with few exceptions. KDE is working hard to provide you with technology that you control every single day so you are empowered and the one ultimately in charge of your technology, data and life – the basis for freedom for many today. This is written down in the first sentence of our manifesto: “We are a community of technologists, designers, writers and advocates who work to ensure freedom for all people through our software.”

Therefor I am proud to announce that KDE (through KDE e.V.) is one of the launch partners and thereby initial signatories of the User Data Manifesto 2.0. The User Data Manifesto defines basic rights for people to control their own data in the internet age:

  • Control over user data access
  • Knowledge of how the data is stored
  • Freedom to choose a platform

Do you want to join us in providing more people with more access to Free technology? Today is a good day!

Calligra 2.9.7 Released

9 hours 18 min ago

The Calligra team is pleased to announce the release of Calligra Suite, and Calligra Active 2.9.7. It is recommended update that brings further improvements to the 2.9 series of the applications and underlying development frameworks.

Bugfixes in This Release

Here is an overview of the most important fixes. There are several others that may be not mentioned here.

  • Removed a number of memory leaks in common code
  • Properly set normal default paragraphstyle as parent to footnote/endnote default ones
  • Fix copying text from inside a table cell without copying the entire cell (bug 350175)
  • Optimalization of table cell formatting
  • Fix: pressing Backspace in some cases didn’t delete the selected table (bug 350426)
  • Fix: Inserting a variable when having a selecion should overwrite the selection (bug 350435)
  • Fix: Pasting into the before-table-paragraph breaks it (bug 350427)
  • Make the final spell checking markup could be drawn the wrong way giving some weird visual glitches (bug 350433)
  • Fix writing direction button not working the first time in some cases. Changed the way of detection the current direction. (bug 350432)
  • Make icon size of the toolbox configurable (right-click on the toolbox to select a new size) (bug 336686)
  • Add a couple smaller toolbox icon sizes (14 pixels)
  • Make the default toolbox icons 14px since that looks closest to what they were before
  • Update tool tips to include keyboard shortcut (tool tips will automatically change with changes to shorcuts) (bug 348626)
  • Make the default size of the toolbox buttons dependent on screen resolution
  • Create subfolders for presets (related bug 321361)
  • Initialize colors to black, as per docs
  • Improved memory usage (use vectors)
  • Set the full file name as default directory in file dialogs
  • General:
    • Fix vertical alignment of text in command link button widgets, it was especially broken in Breeze widget style
  • Tables:
    • Restore ability to altering table design. This was serious regression present in Kexi 2.9.5 and 2.9.6. (bug 350457)
  • Queries:
    • Don’t force saving when switching never stored query to Data view (on 2nd try)
  • CSV Import:
    • Fix detection of primary key column on CSV import (bug 351487)
    • Fix updates of primary key detection when value of ‘Start at line’ changes
  • SQLite databases:
    • Better results and error reporting for prepared statements
  • Highlights:
    • As is traditional, our September release has the first Google Summer of Code results. Wolthera’s Tangent Normal Brush engine has already been merged and provides:
      • Tangent Normal Brush Engine
      • Phong Bumpmap now accepts normal map input
      • Normalize filter
      • Tilt Cursor
    • We’ve got all-new icons!
    • You can configure the size of the icons used in the toolbox
    • Colorspacebrowser: if you want to know the nitty-gritty details about the colorspaces and profiles Krita offers, all information is now available in the new colorspace browser. Still under heavy polishing!
    • You can pick colors and use the fill tool everwhere in wrap-around mode
  • Other new features:
    • Implement ‘Scalable smoothness’ feature for Stabilizer smoother
    • Update tooltips for toolbox icons
    • Right click to undo last path point
    • Update tooltips to include keyboard shortcut
    • Make the default size of the toolbox buttons dependent on screen resolution
    • Added ability to merge down Selection Masks
    • Improve loading of PSDs of any colour space big time; 16bit CMYK psd files can now be loaded
    • Add three shortcuts to fill with opacity
    • Implement loading for ZIP compressed PSD files
    • XCF: load group layers from XCF files v3 or higher
    • Allow ‘shift’-modifer after dragging an assistant handle to snap lines
    • Add snap-single checkbox under assistant snapping.
    • Update brushes with optimised versions.(Basic_tip_default.kpp, Basic_tip_soft.kpp, Basic_wet.kpp, Block_basic.kpp, Block_bristles.kpp, Block_tilt.kpp, Ink_brush_25.kpp, Ink_gpen_10.kpp, Ink_gpen_25.kpp)
    • Mathematically robust normal map combination blending mode
    • Slow down updates for randomized brushes.
    • added convert to shape for selections
    • Added Trim to Image Size action
    • Optimise dodge and burn filter
    • Multiple layers merge with layer styles on Ctrl+E. (1) “Merge selected layers” is now deprecated and you can use usual Ctrl+E to merge multiple selection, (2) Mass-merging of layers with layer styles works correctly now, (3) Merging of clone layers together with their sources will not break Krita now)
    • Make color to alpha work with 16f channel depths
    • Add new shortcuts (Scale Image to new size = CTRL+ALT+I, Resize Canvas = CTRL+ALT+C, Create Group, Layer = CTRL+G, Feather Selection = SHIFT+F6)
  • Bug fixes:
    • Fix abr brush loading (bug 351599)
    • Remember the toolbar visibility state (bug 343615)
    • Do not let the wheel zoom if there are modifiers pressed (patch by Thanks!) (bug 338839)
    • Fix active layer activation mask (bug 347500)
    • Remove misleading error message after saving fails
    • Prevent Krita from loading incomplete assistant (bug 350289)
    • Add ctrl-shift-s as default shortcut for save as (bug 350960)
    • Fix Bristle brush presets
    • Fix use normal map checkbox in phongbumpmap filter UI
    • Fix loading the system-set monitorprofile
    • Make cs-convert UI attempt to automatically determine when to uncheck optimise
    • Do not share textures when that’s not possible (related bug 351488)
    • Remove disabling of system profile checkbox
    • Update the display profile when moving screens (related bug 351488)
    • Update the display profile after changing the settings
    • Fix crash due to calling a virtual method from c-tor of KisToolPaint
    • Disable the layerbox if there’s no open image (bug 351664)
    • Correctly install the xcf import plugin on Windows (bug 345285)
    • Fix Fill with… (Opacity) actions
    • Make a transform tool work with Pass Through group layers (bug 351548)
    • Fix parsing XML with MSVC 2012
    • Make all the lines of paintop options look the same
    • Make sure a default KoColor is transparent (bug 351560)
    • Lots of memory leak fixes (pointers that weren’t deleted are now deleted)
    • Blacklist “photoshop”:DateCreated” when saving (bug 351497)
    • Only add shortcuts for Krita
    • Only ask for a profile for 16 bits png images, since there we assume linear by default, which is wrong for most png images
    • Don’t build the thumb creator on Windows or OSX
    • Work around encoding issues in kzip (bug 350498)
    • Better error message in PNG export (bug 348099)
    • Don’t rename resources
    • Also change the color selector when selecting a vector layer (bug 336693)
    • Remove old compatibility code (bug 349554)
    • Disable the opacity setting for the shape brush (bug 349571)
    • Initialize KoColor to black, as per apidox
    • Add some explanation to the recovery dialog (related bug 351411)
    • Load resources from subfolders (bug 321361)
    • Recreate a default bounds object on every KisMask::setImage() call (related bug 345619)
    • Fix a severe crash in Transformation Masks (bug 349819)
    • Add a barrier between sequentially undone commands with setIndex (bug 349819)
    • Fixed API of KisPNGConverter to not acces the entire KisImage
    • Check which color spaces PNG supports before passing the preview device to it (bug 351383)
    • Save CMYK JPEG’s correctly (bug 351298)
    • Do not crash saving 16 bit CMYK to JPEG (bug 351298)
    • Fix slowdown when activating “Isolate Layer” mode (bug 351195)
    • Fix loading of selection masks
    • Accept events so oxygen doesn’t get them (bug 337187)
    • Added optional flags to KisDocument::openUrl() and made “File Layer” not add its file to the recent files list (bug 345560)
    • Fix crash when activating Passthrough mode for a group with transparency mask (bug 351224)
    • Don’t truncate fractional brush sizes on eraser switch (patch by Alexey Elnatanov. Thanks!) (bug 347798)
    • Fix layout of the color options page (bug 351271)
    • Don’t add new layers to the group if it is locked
    • Transform invisible layers if they are part of the group
    • All Drag & Drop of masks (bug 345619)
    • Optimisize advanced color selector
    • Select the right list item in the fill layer dialog
    • Remove excessive qDebug statements (bug 349871)
    • Remove the non-working fast grid settings (bug 349514)
    • Make the luma inputboxes aware of locale (bug 344490)
    • Don’t crash if there isn’t a pattern (bug 348940)
    • Fix location of colon in color management settings (bug 350128)
    • Don’t hang when isolating a layer during a stroke (bug 351193)
    • Palette docker: Avoid showing a horizontal scrollbar (bug 349621)
    • Stamp and Clipboard brush fixes
    • Sort the dockers alphabetically
    • Add the toolbox to the docker menu (bug 349732)
    • Make it possible to R-select layers in a pass-through group (bug 351185)
    • Set a minimum width for the tool option popup (bug 350298)
    • Fix build on ARM (bug 351164)
    • Fixing pattern png loading on bundles
    • Don’t stop loading a bundle when a wrong manifest entry is found
    • Fix inherit alpha on fill layers (bug 349333)
    • Fix to resource md5 generation
    • Fix full-screen/canvas-only state confusion (patch by Alexey Elnatanov, Thanks!) (bug 348981)
    • Brush editor Stamp and Clipboard refactoring (bug 345195)
    • Don’t crash on closing krita if the filter manager is open (bug 351005)
    • Fix a memory leak in KisWeakSharedPtr
    • Re-enable antialias for selection tools (bug 350803)
    • Open the Krita Manual on F1 on all platforms (bug 347285)
    • Update all the action icons when the theme is changed
    • Workaround for Surface Pro 3 Eraser (bug 341899)
    • Fix an issue with mimetype detection
    • Fix a crash when PSD file type is not magic-recognized by the system (bug 350588)
    • Fix a hangup when pressing ‘v’ and ‘b’ in the brush tool simultaneously (bug 350280)
    • Fix crash in the line tool (bug 350280)
    • Fix crash when loading a transform mask with a non-affine transform (bug 350507)
    • Fixed Flatten Layer and Merge Down actions for layer with layer styles (bug 349479)
Document filters
  • Fix encoding of import filter source files for Applix* files
Try It Out

Download small

The source code of the release is available for download here: calligra-2.9.7.tar.xz.
Also translations to many languages and MD5 sums.
Alternatively, you can download binaries for many Linux distributions and for Windows (users: feel free to update that page).

What’s Next and How to Help?

The next step after the 2.9 series is Calligra 3.0 which will be based on new technologies. We expect it later in 2015.

You can meet us to share your thoughts or offer your support on general Calligra forums or dedicated to Kexi or Krita. Many improvements are only possible thanks to the fact that we’re working together within the awesome community.

(Some Calligra apps need new maintainers, you can become one, it’s fun!)
How and Why to Support Calligra?

Calligra apps may be totally free, but their development is costly. Power, hardware, office space, internet access, travelling for meetings – everything costs. Direct donation is the easiest and fastest way to efficiently support your favourite applications. Everyone, regardless of any degree of involvement can do so. You can choose to:

Support entire Calligra indirectly by donating to KDE, the parent organization and community of Calligra:


Support Krita directly by donating to the Krita Foundation, to support Krita development in general or development of a specific feature:


Support Kexi directly by donating to its current BountySource fundraiser, supporting development of a specific feature, or the team in general:
About the Calligra Suite

Calligra Suite is a graphic art and office suite developed by the KDE community. It is available for desktop PCs, tablet computers and smartphones. It contains applications for word processing, spreadsheets, presentation, databases, vector graphics and digital painting. For more information visit

About KDE

KDE is an international technology team that creates free and open source software for desktop and portable computing. Among KDE’s products are a modern desktop system for Linux and UNIX platforms, comprehensive office productivity and groupware suites and hundreds of software titles in many categories including Internet, multimedia, entertainment, education, graphics and software development. KDE’s software available in more than 60 languages on Linux, BSD, Solaris, Windows and Mac OS X.

} .button:hover{ padding:11px 32px; border:solid 1px #004F72; -webkit-border-radius:10px; -moz-border-radius:10px; border-radius: 10px; font:18px Arial, Helvetica, sans-serif; font-weight:bold; color:#E5FFFF; background-color:#3BA4C7; background-image: -moz-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -webkit-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -o-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -ms-linear-gradient(top, #3BA4C7 0% ,#1982A5 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1982A5', endColorstr='#1982A5',GradientType=0 ); background-image: linear-gradient(top, #3BA4C7 0% ,#1982A5 100%); -webkit-box-shadow:0px 0px 2px #bababa, inset 0px 0px 1px #ffffff; -moz-box-shadow: 0px 0px 2px #bababa, inset 0px 0px 1px #ffffff; box-shadow:0px 0px 2px #bababa, inset 0px 0px 1px #ffffff;

} .button:active{ padding:11px 32px; border:solid 1px #004F72; -webkit-border-radius:10px; -moz-border-radius:10px; border-radius: 10px; font:18px Arial, Helvetica, sans-serif; font-weight:bold; color:#E5FFFF; background-color:#3BA4C7; background-image: -moz-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -webkit-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -o-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -ms-linear-gradient(top, #3BA4C7 0% ,#1982A5 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1982A5', endColorstr='#1982A5',GradientType=0 ); background-image: linear-gradient(top, #3BA4C7 0% ,#1982A5 100%); -webkit-box-shadow:0px 0px 2px #bababa, inset 0px 0px 1px #ffffff; -moz-box-shadow: 0px 0px 2px #bababa, inset 0px 0px 1px #ffffff; box-shadow:0px 0px 2px #bababa, inset 0px 0px 1px #ffffff; }

.button a,.button a:link, .button a:visited, .button a:hover, .button a:active { color:#E5FFFF; } -->

Kontact and GnuPG under Windows

Wed, 2015/09/02 - 9:53pm

Kontact has, in contrast to Thunderbird, integrated crypto support (OpenPGP and S/MIME) out-of-the-box.
That means on Linux you can simply start Kontact and read crypted mails (if you have already created keys).
After you select your crypto keys, you can immediately start writing encrypted mails. With that great user experince I never needed to dig further in the crypto stack.

select cryptokeys step1 select cryptokeys step2

But on Windows there is no GnuPG installed as default, so I need to dig into the whole world of crypto layers,
that are between Kontact and the actual part that does the de-/encryption.

Crypto Stack

Kontact uses a number of libraries that the team has written around GPGME.

The lowest level one is gpgmepp which is an object oriented wrapper for gpgme. This lets us avoid having to write code in C for KMail. Than we have libkleo which is a library built on top of gpgmepp that KMail uses to trigger de-/encryption in the lower levels. GPGME is the only required dependency to compile Kontact with crypto support.

But this is not enough to send and receive encrypted mail with Kontact on Windows, as I mentioned earlier. There are still runtime dependencies that we need to have in place. Fortunatelly the runtime crypto stack is already packaged by the GPG4Win team. Simply installing is still not enough to have crypto support, though. With GPG4Win, it is possible to select OpenPGP keys, create and read encrypted mails, but unfortunatelly it doesn't work with S/MIME.

So I had to dig futher into how GnuPG is actually working.

OpenPGP is handled by the gpg binary and for S/MIME we have gpgsm. Both are directly called from GPGME, using libassuan. Both application than talk to gpg-agent, which is actually the only programm that interacts with the key data. Both application can be used from the commandline, so it was easy to verify, that they were working and that we have no problems with GnuPG setup.

So first we start by creating keys (gpg --gen-key and gpgsm --gen-key) and than further testing what works with GPG4Win and what does not. We found a bug in GnuPG in the used version, but this one was closed in a newer version. Still Kontact didn't want to communicate with GPG4Win. The reason was a wrong standard path, preventing gpgme from finding gpgsm. With that fixed, we now have a working crypto stack under windows.

But to be honest, there are more application involved in a working crypto stack. At first we need gpgconf and gpgme-w32-spawn to be available in the Kontact directory. gpgconf helps gpgme to find gpg and gpgsm and is responsible to modify the content of .gnupg in the user's home directoy. Additionally, it infoms you about changes in config files. gpgme-w32-spawn is responsible for creating the other needed processes.

For having a UI where you can enter ypur password you need pinentry. S/MIME needs another agent, that does the CRL / OCSP checks. This is done by dirmgnr. In GnuPG 2.1 dirmgnr is the only component that performs connections to the outside. So every request that requires the Internet is done via dirmgnr.

This is, in short, the crypto stack that needs to work together to give you working encrypted mail support.

We are happy, that we now have a fully working Kontact under windows (again!). There are rumours, that Kontact was working also before that under windows with crypto support, but unfortunatelly when we started the crypted part was not working.

This work has done in the kolabsys branch, which is based on KDE Libraries 4. The next steps are to merge changes over to make sure that the current master branch of Kontact, which uses KDE Frameworks 5, is also working.


Coming up next week is the yearly Randa meeting where we will have the chance to sit together for a week and work on the future of Kontact. This meetings help tremendously in injecting momentum into the project, and we have a variety of topics to cover to direct the development for the time to come (and of course a lot of stuff to actively hack on). If you’d like to contribute to that you can help us with some funding. Much appreciated!

randa meeting

Randa – KDE sprints 2015

Wed, 2015/09/02 - 9:25pm

So, following this year’s Google Summer of Code, I have now the opportunity to be a part of the annual KDE sprints which will be hosted in Randa, Switzerland from the 6th to the 13th of September this year. Thankfully, I have all my documents sorted out and I’ll be flying to Switzerland on from […]

FreeBSD on Beagle Bone Black (with networking)

Wed, 2015/09/02 - 8:41pm

I set out to run FreeBSD on my Beagle Bone Black (now dubbed “smurf” by the kids on account of it’s small and blue), for network services. My DSL modem is a crappy under-configurable thing, but I don’t dare to start hacking on it directly because it runs the telephony side of things, too. So I decided to use the Beagle Bone Black to take control of my home network.

The modem is, of course, responsible for the actual internet connection. Its internal IPv4 address is, and it functions as the router for the whole house. Smurf is wired to one of the LAN ports on the modem, and it lives at There’s a switch wired to another LAN port on the modem, and the rest of the wired network lives behind that switch. Wifi (still) goes through the modem. I might change that too, since the range is lousy compared to my old WRT 54GL. It looks something like this:

Network diagram described in text

Network diagram showing services and hostnames

Inside the network, there are a couple of machines with specific roles. There’s the printer, and the media server, and the NAS, and the poudriere builder, and a couple more. Most of these machines run services with some form of autodiscovery — like the printer and the media server — but not all of them. And there’s the configuration aspect of each: not only do I need to be able to find the printer’s IPP service, I may also need to reach the printer’s configuration webpage. It’s most convenient when I can put http://printer/ into a browser anywhere in the house and get the webpage for exactly that.

There’s probably plenty of solutions for this, but the one I settled on is somewhat old-school: control over DHCP and over DNS, with DHCP handing out fixed addresses in-house to the machines that need it (e.g. the printer is always and DNS set to something I control that can respond with 3600 IN A For the non-special machines — random desktops, laptops, phones — I don’t need any kind of in-house naming, those machines just need an address.

Starting DHCP. On the modem side, I had to change two settings: DHCP server off, and DHCP relay on (to the fixed IP address for smurf). Until I got DHCP up and running on smurf, this effectively killed new wireless connections and wired connections that weren’t set to a fixed address, (this was mostly annoying for the kids on their phones).

Smurf is configured with a fixed address, and fixed routing to the outside world, and nameservers as provided by my ISP (I suppose I could add some public DNS there too — in the example configuration below, that’s Google). I used the isc-dhcp41-server package that I’d previously built with poudriere. Basic configuration was really simple (in /usr/local/etc/dhcpd.conf):

option domain-name ""; option domain-name-servers; authoritative; subnet netmask { range; option routers; }

A little testing shows that yes, the DHCP server is handing out addresses. I left a non-daemonized, verbose logging version of the server running while testing the rest.

Fixed DHCP. Next up is assigning fixed addresses to my special machines. Before starting on this, I had them all configured with fixed IPv4 addresses, so they all need to be changed to use DHCP, and on the DHCP side of things, their MAC addresses need to be associated with a fixed address. The easiest way to gather the necessary information seemed to me to be a combination of nmap(1) and arp(8) — use nmap to ping the whole network, then get the MAC addresses out of the ARP cache:

$ nmap -sn $ arp -a

For each special host, I added a host block to the DHCP server configuration, like so:

host printer { hardware ethernet e8:9a:db:db:db:db; fixed-address; }

Note that I’m using a hostname in this configuration, so I added a line to /etc/hosts as well to fix the IPv4 address for that name. That’s needed as long as I don’t have DNS set up to resolve hostnames “printer” and “” to the desired address.

Starting DNS. FreeBSD has recently switched to shipping unbound(8) with the base system. Previously you could use BIND(8) or unbound(8) from ports. Unbound is much smaller and lighter, especially for the home-network situation. I can use it as DNS for the whole home network, and it will cache requests — but it also gives me control over the naming inside the house.

I followed an Unbound DNS tutorial, which was pretty comprehensive. On FreeBSD it’s even easier: set up the right nameservers in /etc/resolv.conf, then add local_unbound_enable="YES" to /etc/rc.conf, and start the local_unbound service. A configuration file is generated and unbound(8) is started. The unbound.conf example under Authoritative, validating, recursive caching DNS setup and install in that tutorial is pretty much what I ended up using.

Unfortunately, the auto-setup of unbound(8) seems to leave two things out: it runs unbound(8) in a chroot where there’s no /dev/random, and then everything comes to a DNS-crashing halt. It took me a while to figure that out even though it’s mentioned in the documentation. I ended up just adding it to /etc/fstab:

devfs /etc/unbound/dev devfs rw 0 0

After that, unbound started complaining about its DNSSEC trust root file. I couldn’t quickly figure out what that was about, so I ended up just disabling the auto-trust-anchor-file in the configuration. The config files are spread out a bit, but here’s the most important bits:

# Server listens on the local network and allows all queries server: interface: interface: access-control: allow access-control: allow unblock-lan-zones: yes domain-insecure: domain-insecure: # Forward to Google's public DNS forward-zone: name: "." forward-addr:

After a few tests with host(1) — which initially all returned SERVFAIL until I had the random-number thing sorted out — I was confident I could use this from smurf and from hosts in the local network as DNS. So the next step was to switch the option “domain-name-servers” in the DHCP configuration over to unbound(8) running on smurf.

Fixed DNS. The last step in this setup is to associate the names for machines on the local network with the local IPv4 addresses I’ve chosen for them. This is done through local-data and local-data-ptr records in the unbound(8) configuration. FreeBSD has an /etc/unbound/conf.d/ directory to drop configuration files into, so I added a local.conf with the local network definitions:

server: local-zone: "" static local-data: " IN A" local-data: " IN A" local-data-ptr: "" local-data-ptr: ""

Once that is done, then all the hosts in my local network that use DNS from smurf — and that means all of them that use DHCP — can use “smurf” as a hostname, and they’ll resolve, and reach the Beagle Bone Black.

With these two services in place, I can take each machine in the house and switch it to use DHCP, knowing that the ones that need a fixed address will still get one — and better yet, that they now have a useful name from all over the local network — and that the rest will have the names of the fixed-address machines available.

Musings. Conceptually, I’m working with configuration triplets: a particular MAC address has a particular name and designated IPv4 address. In the configuration, though, the triplet gets scattered across a number of configuration files, each in a different format. The issue expands with DNS, since then I have to repeat some of the information from /etc/hosts. Let’s call the elements of these triplets (M, N, A). I could make a small table of them. But getting that information into the right places is annoying, since the data gets spread out like this (with a bunch of hand-wavey notation):

  • N, A -> /etc/hosts format “${A} ${N} ${N}”,
  • N, A -> /etc/unbound/conf/local.conf format “local-data: ‘${N} IN A ${A}” (but it has to be at the right spot in the file),
  • N, A -> /etc/unbound/conf/local.conf for the local-data-ptr line,
  • M, N -> /usr/local/etc/dhcpd.conf for the MAC-to-IPv4 mapping.

For my small home network, as long as I don’t go crazy buying devices that need a fixed address and name, the management burden is small. But it cries out for some kind of automation, so that I only need to write down the essentials somewhere once.

Krita 2.9.7 Released!

Wed, 2015/09/02 - 7:58pm

Two months of bug fixing, feature implementing, Google-Summer-of-Code-sweating, it’s time for a new release! Krita 2.9.7 is special, because it’s the last 2.9 release that will have new features. We’ll be releasing regular bug fix releases, but from now on, all feature development focuses on Krita 3.0. But 2.9.7 is packed! There are new features, a host of bug fixes, the Windows builds have been updated with OpenEXR 2.2. New icons give Krita a fresh new look, updated brushes improve performance, memory handling is improved… Let’s first look at some highlights:

New Features: Tangent Normal Brush Engine

As is traditional, in September, we release the first Google Summer of Code results. Wolthera’s Tangent Normal Brush engine has already been merged!


It’s a specialized feature, for drawing normal maps, as used in 3d engines and games. Check out the introduction video:

There were four parts to the project:

  • The Tangent Normal Brush Engine. (You need a tilt-enabled tablet stylus to use it!)
  • The bumpmap filter now accepts normal map input
  • A whole new Normalize filter
  • And a new cursor option: the Tilt Cursor
Fresh New Icons

We’ve got a whole new, carefully assembled icon set. All icons are tuned so they work equally well with light and dark themes. And it’s now also possible to choose the size of the icons in the toolbox.


If you’ve got a high-dpi screen, make them big, if you’re on a netbook, make them small! All it takes is a right-click on the toolbox.


And to round out the improvements to the toolbox, the tooltips now show the keyboard shortcuts you can use to activate a tool and you can show and hide the toolbox from the docker menu.

Improvements to the Wrap-around mode

Everyone who does seamless textures loves Krita’s unique wraparound mode. And now we’ve fixed two limitations, and you can not just pick colors from anywhere, not just the original central image, but also fill from anywhere!


New Color Space Selector

Wolthera also added a new dialog for picking the color profile: The Color Profile browser. if you just want to draw without worries, Krita’s default will work for you, of course. But if are curious, or want to go deeper into color management, or have advanced needs then this browser dialog gives you all the details you need to make an informed choice!

Krita ships with a large set of carefully tuned ICC profiles created by Elle Stone. Her extensive notes on when one might prefer to use one or the other are included in the new color profile browser.

Compatibility with the rest of the world

We improved compatibility with Gimp: Krita can now load group layers, load XCF v3 files and finally load XCF files on Windows, too. Photoshop PSD support always gets attention. We made it possible to load bit/channel CMYK and Grayscale images, ZIP compressed PSD files and improved saving images with a single layer that has transparency to PSD.

Right-click to undo last path point

You can now right-click in the middle of creating a path to undo the last point.

More things…
  • The freehand tools’ Stabilizer mode has a new ‘Scalable smoothness’ feature.
  • You can now merge down Selection Masks
  • We already had shortcuts to fill your layer or selection with the foreground or background color or the current pattern at 100% opacity. If you press Shift in addition to the shortcut, the currently set painting opacity will be used.
  • We improved the assistants. You can now use the Shift key to add horizontal snapping to the handles of the straight-line assistants. The same shortcut will snap the third handle of the ellipse assistant to provide perfect circles.
  • Another assistant improvement:  there is now a checkbox to assistant snapping that will make the snapping happen to only the first snapped-to-assistant. This removes snapping issues on infinite assistants while keeping the ability to snap to chained assistants while the checkbox is unticked.
  • Several brushes were replaced with optimized versions: Basic_tip_default, Basic_tip_soft, Basic_wet, Block_basic, Block_bristles, Block_tilt, Ink_brush_25, Ink_gpen_10, Ink_gpen_25 now are much more responsive.
  • There is a new and mathematically robust normal map combination blending mode.
  • Slow down cursor outline updates for randomized brushes: when painting with a brush with fuzzy rotation, the outline looked really noisy before, now it’s smoother and easier to look at.
  • You can now convert any selection into a vector shape!
  • We already had a trim image to layer size option, but we added the converse: Trim to Image Size for if your layers are bigger than your image. (Which is easily managed with moving, rotating and so on).
  • The dodge and burn filter got optimized
  • Fixes to the Merge Layer functionality: you can use Ctrl+E to merge multiple selected layers, you can merge multiple selected layers with layer styles and merging of clone layers together with their sources will no longer break Krita.
  • The Color to Alpha filter now works correctly  with 16 bits floating point per channel color models.
  • We added a few more new shortcuts: scale image to new size using CTRL+ALT+I,  resize canvas with CTRL+ALT+C, create group kayer is CTRL+G, and feather selection = SHIFT+F6.
Fixed Bugs:

We resolved more than 150 bugs for this release. Here’s a highlight of the most important bug fixes! Some important fixes have to do with loading bundles. This is now more robust, but you might have problems with older bundle files. We also redesigned the Clone and Stamp brush creation dialogs. Look for the buttons in the predefined brush-tip tab of the brush editor. There are also performance optimizations, memory leak fixes and more:

  1.  BUG: 351599 Fix abr (photoshop) brush loading
  2. BUG:343615 Remember the toolbar visibility state when switching to canvas-only
  3. BUG:338839 Do not let the wheel zoom if there are modifiers pressed
  4. BUG:347500 Fix active layer activation mask
  5. Remove misleading error message after saving fails
  6. BUG 350289 : Prevent Krita from loading incomplete assistant.
  7. BUG:350960 Add ctrl-shift-s as default shortcut for “Save As” on Windows.
  8. Fix the Bristle brush presets
  9. Fix use normal map checkbox in the bumpmap filter UI.
  10. Fix loading the system-set monitor profile when using colord
  11. When converting between linear light sRGB and gamma corrected sRGB, automatically uncheck the “Optimize” checkbox in the colorspace conversion dialog.
  12. BUG:351488 Do not share textures when that’s not possible. This fixes showing the same image in two windows on two differently profiled monitors.
  13. BUG:351488 Update the display profile when moving screens. Now Krita will check whether you moved your window to another monitor, and if it detects you did that, recalculate the color correction if needed.
  14. Update the display profile after changing the settings — you no longer need to restart Krita after changing the color management settings.
  15. BUG:351664 Disable the layerbox if there is no open image, fixing a crash that could happen if you right-clicked on the layerbox before opening an image.
  16. BUG:351548 Make the transform tool work with Pass Through group layers
  17. BUG:351560 Make sure a default KoColor is black and transparent (fixes the default color settings for color fill layers)
  18. Lots of memory leak fixes
  19. BUG:351497 Blacklist “photoshop”:DateCreated” when saving. Photoshop adds a broken metadata line to JPG images that gave trouble when saving an image that contained a JPG created in Photoshop as a layer to Krita’s native file format.
  20. Ask for a profile when loading 16 bits PNG images, since Krita assumes linear light is default for 16 bits per channel RGB images.
  21. Improve the performance of most color correction filters
  22. BUG:350498 Work around encoding issues in kzip: images with a Japanese name now load correctly again.
  23. BUG:348099 Better error messages when exporting to PNG.
  24. BUG:349571 Disable the opacity setting for the shape brush. It hasn’t worked for about six years now.
  25. Improve the Image Recovery dialog by added some explanations.
  26. BUG:321361 Load resources from nested directories
  27. Do not use a huge amount of memory to save the pre-rendered image to OpenRaster or KRA files.
  28. BUG:351298 Fix saving CMYK JPEG’s correctly and do not crash saving 16 bit CMYK to JPEG
  29. BUG:351195 Fix slowdown when activating “Isolate Layer” mode
  30. Fix loading of selection masks
  31. BUG:345560 Don’t add the files you select when creating a File Layer  to the recent files list.
  32. BUG:351224 Fix crash when activating Pass-through mode for a group with transparency mask
  33. BUG:347798 Don’t truncate fractional brush sizes on eraser switch
  34. Don’t add new layers to a locked group layer
  35. Transform invisible layers if they are part of the group
  36. BUG:345619 Allow Drag & Drop of masks
  37. Fix the Fill Layer dialog to show the correct options
  38. BUG:344490 Make the luma options in the color selector settings translatable.
  39. BUG:351193 Don’t hang when isolating a layer during a stroke
  40. BUG:349621 Palette docker: Avoid showing a horizontal scrollbar
  41. Many fixes and a UI redesign for the Stamp and Clipboard brush creation dialogs
  42. BUG:351185 Make it possible to select layers in a pass-through group using the R shortcut.
  43. Don’t stop loading a bundle when a wrong manifest entry is found
  44. BUG:349333 fix inherit alpha on fill layers
  45. BUG:351005 Don’t crash on closing krita if the filter manager is open
  46. BUG:347285: Open the Krita Manual on F1 on all platforms
  47. BUG: 341899 Workaround for Surface Pro 3 Eraser
  48. BUG:350588 Fix a crash when the PSD file type is not recognized by the system
  49. BUG:350280 Fix a hangup when pressing ‘v’ and ‘b’ in the brush tool simultaneously
  50. BUG:350280 Fix  crash in the line tool.
  51. BUG:350507 Fix crash when loading a transform mask with a non-affine transform

Jonathan Riddell™ IP Policy

Wed, 2015/09/02 - 4:54pm

This is the Jonathan Riddell™ IP Policy.  It applies to all Jonathan’s intellectual property in Ubuntu archives.  Jonathan is one of the top 5 uploaders, usually the top 1 uploader, to Ubuntu compiling hundreds of packages in the Ubuntu archive.  Further Jonathan reviews new and updated packages in the archive.  Further Jonathan selects compiler defaults and settings for KDE and Qt and other packages in the Ubuntu archive.  Further Jonathan builds and runs tests for Ubuntu packages in the archives.  Further Jonathan Riddell™ is a trademark of Jonathan Riddell™in Scotland, Catalunya and other countries; a trademark which is included in all packages edited by Jonathan Riddell™.  Further Jonathan is the author of numberous works in the Ubuntu archive.  Further Jonathan is the main contributor to the selection of software in Kubuntu. Therefore Jonathan has IP in the Ubuntu archive possibly including but not limited to copyright, patents, trademarks, sales marks, geographical indicators, database rights, compilation copyright, designs, personality rights and plant breeders rights.  To deal with, distribute, modify, look at or smell Jonathan’s IP you must comply with this policy.

Policy: give Jonathan a hug before using his IP.

If you want a licence for Jonathan’s IP besides this one you must contact Jonathan first and agree one in writing.

Nothing in this policy shall be taken to override or conflict with free software licences already put on relevant works.


facebooktwittergoogle_pluslinkedinby feather

OpenStack Summit Tokyo 2015: Presentation

Tue, 2015/09/01 - 2:09pm

The schedule for the next OpenStack Summit in Tokyo this year was announced some days ago. One of my submissions was accepted. The presentation "99.999% available OpenStack Cloud - A builder's guide" is scheduled for Thursday, October 29, 09:50 - 10:30.

Also other presentations from the Ceph Community have been accepted:

Checkout the links or the schedule for dates and times of the talks

Comparing DPMS on X11 and Wayland

Tue, 2015/09/01 - 12:06pm

On the Plasma workspaces Display Power Management Signaling (DPMS) is handled by the power management daemon (powerdevil). After a configurable idle time it signals the X-Server through the X11 DPMS Extension. The X-Server handles the timeout, switching to a different DPMS level and restoring to enabled after an input event all by itself.

The X11 extension is a one-way channel. One can tell the X-Server to go to DPMS, but it neither notifies when it has done so nor when it restored. This means powerdevil doesn’t know when the screens are off. Granted, there is a call to query the current state, but we cannot perform active polling to figure out whether the state changed. That would be rather bad from a power management perspective.

So overall it’s kind of a black box. Our power management doesn’t know when the screens turn off, Neither does any other application including KWin. For KWin it would be rather important to know about it, because it’s the compositor and there is no point in running the compositor to render for something which will never be visible. The same is obviously true for any other application: it will happily continue to render updated states although it won’t be visible. For a power management feature this is rather disappointing.

Now let’s switch to Wayland – in this case kwin_wayland. Last week I started to implement support for DPMS in KWin. Given that KWin is responsible for DRM, we need to add support for it in KWin. Of course we want to leverage the existing code in powerdevil, so we don’t add the actual power management functionality, but rather an easy to use interface to tell KWin to enter a DPMS state on a given output.

Of course we tried to not repeat the mistake from X11 and thus the interface is bi-directional: it notifies when a given state is entered. Although in a Wayland world that’s not so important any more: KWin enables DPMS and knows that DPMS is enabled and can make internal use of this. So whenever the outputs are put into standby the compositor loop is stopped and doesn’t try to repaint any more. If the compositor is stopped windows are not being repainted and aren’t signaled that the last frame got painted. So all applications properly supporting frame callbacks stop rendering automatically, too. This means on Wayland we are able to properly put the rendering of all applications into an off state when the connected outputs are in standby mode. A huge improvement for power management.

Announcing Marble Maps for Android Open Beta

Tue, 2015/09/01 - 5:00am

It’s my pleasure to announce the Open Beta version of Marble Maps for Android. Marble Maps is a port of the Desktop application Marble Virtual Globe and right now features an OpenStreetMap viewer, search and routing. The app is not yet feature complete; future updates will add turn-by-turn navigation, improve vector rendering and add basic OSM editing capabilities.

Marble Maps on Android - Search  Marble Maps on Android - Routing  a3

Our first Marble Maps release builds on the foundations of the Marble library, which runs on Linux, Windows and Mac OS X. The port to Android could be realized thanks to the recent great advances of Qt on Android. The porting itself was done by Gábor Péterffy during his GSoC project which just recently finished. Now we have a small team working on advancing the app further towards our goals of creating fast, visually appealing, easy-to-use free software. Give it a try, it works very nice already despite its early development state :-)

Among the next updates will be support for turn-by-turn navigation. At the same time we are working on support for vector tile rendering. Have a look at the third screenshot above (a manually opened .osm file) for a sneak preview. Vector tile rendering will replace the current image based maps with vector based ones. This will not only reduce the amount of data to be downloaded, but also result in a much better looking/readable map display. Once we reach that point we’ll also look into context sensitive map rendering like night, hike, bike and similar modes.

Fortunately many of the needed pieces for vector tile rendering are already available. To bring them together we will meet in the Swiss Alps and have in intensive week of hacking in the upcoming KDE Sprint in Randa. If you want to support us, please donate some money to cover travel and accomodation expenses for the sprints.

FreeBSD on Beagle Bone Black (with X11)

Mon, 2015/08/31 - 8:57pm

X11 clients on the Beagle Bone Black .. that’s X11 over the network, with the X Server elsewhere. No display as yet. The FreeBSD wiki notes that there’s no (mini) HDMI driver yet. So I built some X11 programs, xauth(1) and xmessage(1), and installed them on the Bone. Since I bought a blue case for the Bone, and it is the smallest computer in the house (discounting phones .. let’s call it the smallest hackable computer in the house) the kids decided to call it smurf. Here’s a screenshot of poudriere’s text console as it builds packages.

Poudriere build console

Poudriere build console

Timestamps on the left are since the start of the overall build, so after 20 minutes and 11 seconds I had an xmessage(1) package built. Building that package only took (timestamp in the middle) 1 minute and 41 seconds, with the time preceding that all spent in building dependencies, like X Athena Widgets. Woo! Rock the pre-Qt dancefloor.

Since smurf pulls packages from my (cross-)build machine, all I needed to to was pkg install xauth xmessage to install everything, and that leads to screenshots like this:

Screenshot with xmessage(1)

XMessage running on the Beagle Bone Black

I’d show a screenshot with Qt5 designer, too (cross-compiling all of Qt5 took a little over a day, with 16 hours of that on qt5-webkit), but that mostly shows it dumping core as it fails to find a system- or user-dbus. Once I have that sorted, I’ll have a nice little machine on which it’s totally pointless to run Qt apps, but I will finally have an excuse to do a little QML and C++ to write a Qt5, ARMv6-FreeBSD, Beagle Bone Black user LED application — so’s to rock the house with four blinkin’ LEDs.

Randa Meetings 2015 – What I plan to do

Mon, 2015/08/31 - 5:23pm

It is time for one more Randa Meetings this year, and over 50 KDE developers are going to participate in it along with me as well. The Randa Meetings is a codesprint sponsored by KDE and organized by Mario Fux, in which KDE developers from all across the globe are invited, and get to sit under the same roof and work together to collaborate on different ideas, coming up with some awesome feature implementations within a time span of about a week. These meetings generally focus on a common topic every year. Last year (2014) it was focused mainly on porting of various KDE applications to the KF5 framework. Similarly, this year we have a common focus as well, and it is aimed at bringing more of KDE to the mobile platform as much as possible. Now, since I am a Marble developer, let me tell you in brief what are my plans for Randa Meetings this year.

Marble is a virtual globe software, released for use in Desktops for now, but we’re working on “Marble Maps” for Android currently, which brings the openstreetmap + navigation/routing parts of Marble to Android. Although this Android app is still in its beta version for now and is going through a lot of testing at the moment, it will be openly available in the Play Store for being installed by everyone very soon. Along with that, we also plan to release an app called “Marble Globe” for Android later, which will focus more on different map themes, different planets, satellites and so on. For Marble Globe we think that it would be very interesting to include the “interactive tours” feature there prominently. So there could be a tour that shows landing sites on the moon. And another one that introduces certain interesting spots of a historical map. And so on. We would need declarative/qml support for tours to do that, and probably some other extensions as well that plain KML tours do not support out of the box. So we are interested in exploring these stuff, and are going to discuss these topics in Randa. Apart from that I am going to polish the existing feature in the desktop version as well.

I am really excited to meet Dennis and Torsten once again this year in Randa, along with the rest of the Marble team. Hope to have a lot of fun, loads of food, and a whole lot of hacking! :) Although, all this can only be possible if you can provide us your support in this. So, please make sure to donate to the Randa fundraising to encourage the time and energy spent by all the KDE developers in this meeting, if you are an user or supporter of KDE in any way. Your every small contribution will be as precious as the rest! :)

Thanks a lot to Mario for organizing this amazing event. And I hope to have another awesome week in Randa this year. Cheers! :)


Hack fonts for Fedora and Epel

Mon, 2015/08/31 - 3:34pm

I just made a package and submitted to upstream to the newly release Hack fonts.

The copr repository can be found here:


Kubuntu Site Revamped

Mon, 2015/08/31 - 2:34pm

With the move to Plasma 5, updating the Kubuntu website seemed timely. Many people have contributed, including Ovidiu-Florin Bogdan, Aaron Honeycutt, Marcin Sągol and many others.

We want to show off the beauty of Plasma 5, as well as allow easy access for Kubuntu users to the latest news, downloads, documentation, and other resources.

We want your help! Whether you code/program or not.

Web development, packaging, bug triage, documentation, promotion and social media are all areas where we can use your talents and skill, as well as offering help to new or troubled users.

For instance, people regularly report problems on Facebook, Reddit, Google+, Twitter, Telegram now and of course, #kubuntu on Freenode IRC, rather than filing bugs.

Sometimes their problems are easily solved, sometimes they have encountered real bugs, which we can help them file.

Please use our new site to find what you need, and tell us if you find something which needs improvement.

Interview with Brian Delano

Mon, 2015/08/31 - 8:00am
big small and me 4 and 5 sample Could you tell us something about yourself?

My name is Brian Delano. I’m a musician, writer, futurist, entrepreneur and artist living in Austin, Texas. I don’t feel I’m necessarily phenomenal at any of these things, but I’m sort of taking an approach of throwing titles at my ego and seeing whichones stick and sprout.

Do you paint professionally, as a hobby artist, or both?

I’m more or less a hobby artist. I’ve made a few sales of watercolors here and there and have had my pieces in a few shows around town, but, so far, the vast majority of my art career exists as optimistic speculation between my ears.

What genre(s) do you work in?

I mostly create abstract art. I’ve been messing around with web comic ideas a bit, but that’s pretty young on my “stuff I wanna do” list. Recently, I’ve been working diligently on illustrating a children’s book series that I’ve been conceptualizing for a few years.

Whose work inspires you most — who are your role models as an artist?

Ann Druyan & Carl Sagan, Craig & Connie Minowa, Darren Waterston, Cy Twombly, Theodor Seuss Geisel, Pendelton Ward, Shel Silverstein and many others.

How and when did you get to try digital painting for the first time?

My first exposure to creating digital art was through the mid-nineties art program Kid Pix. It was in most every school’s computer lab and I thought it was mind-blowingly fun. I just recently got a printout from one of my first digital paintings from this era (I think I was around 8 or so when I made it) and I still like it. It was a UFO destroying a beach house by shooting lightning at it.

What makes you choose digital over traditional painting?

Don’t get me wrong, traditional (I call it analog :-P) art is first and foremost in my heart, but when investment in materials and time is compared between the two mediums, there’s no competition. If I’m trying to make something where I’m prototyping and moving elements around within an image while testing different color schemes and textures, digital is absolutely the way to go.

How did you find out about Krita?

I was looking for an open source alternative to some of the big name software that’s currently out for digital art. I had already been using GiMP and was fairly happy with what it offered in competition with Photoshop, but I needed something that was more friendly towards digital painting, with less emphasis on imaging. Every combination of words in searches and numerous scans through message boards all pointed me to Krita.

What was your first impression?

To be honest, I was a little overwhelmed with the vast set of options Krita has to offer in default brushes and customization. After a few experimental sessions, some video tutorials, and a healthy amount of reading through the manual, I felt much more confident in my approach to creating with Krita.

What do you love about Krita?

If I have a concept or a direction I want to take a piece, even if it seems wildly unorthodox, there’s a way to do it in Krita. I was recently trying to make some unique looking trees and thought to myself ” I wish I could make the leafy part look like rainbow tinfoil…” I messed around with the textures, found a default one that looked great for tinfoil, made a bunch of texture circles with primary colored brush outlines, selected all opaque on the layer, added a layer below it, filled in the selected space with a rainbow gradient, lowered the opacity a bit on the original tin foil circle layer, and bam! What I had imagined was suddenly a (digital) reality!

What do you think needs improvement in Krita? Is there anything that really annoys you?

Once in a while, if I’m really pushing the program and my computer, Krita will seem to get lost for a few seconds and become non responsive. Every new release seems to lessen this issue, though, and I’m pretty confident that it won’t even be an issue as development continues.

What sets Krita apart from the other tools that you use?

Krita feels like an artist’s program, created by artists who program. Too many other tools feel like they were created by programmers and misinterpreted focus group data to cater to artists’ needs that they don’t fully understand. I know that’s a little vague, but once you’ve tried enough different programs and then come to Krita, you’ll more than likely see what I mean.

If you had to pick one favourite of all your work done in Krita so far, what would it be, and why?

I’m currently illustrating a children’s book series that I’ve written which addresses the size and scope of everything and how it relates to the human experience. I’m calling the series “BIG, small & Me”, I’m hoping to independently publish the first book in the fall and see where it goes. I’m not going to cure cancer or invent faster than lightspeed propulsion, but if I can inspire the child that one day will do something this great, or even greater, then I will consider my life a success.

big small and me cover sample

What techniques and brushes did you use in it?

I’ve been starting out sketching scenes with the pencil brushes, then creating separate layers for inking. Once I have the elements of the image divided up by ink, I turn off my sketch layers, select the shapes made by the ink layers and then fill blocks on third layers. When I have the basic colors of the different elements completed in this manner, I turn off my ink lines and create fourth and fifth layers for texturing and detailing each element. There are different tweaks and experimental patches in each page I’ve done, but this is my basic mode of operation in Krita.

Where can people see more of your work?

I have a few images and a blog up at, and will hopefully be doing much more with that site  pretty soon. I’m still in the youngish phase of most of the projects I’m working on so self promotion will most likely be ramping up over the next few months. I’m hoping to set up a kickstarter towards the end of the year for a first pressing of BIG, small & Me, but until then most of my finished work will end up on either or my facebook page.

Anything else you’d like to share?

It’s ventures like Krita that give me hope for the future of creativity. I am so thankful that there are craftspeople in the world so dedicated to creating such a superior tool for digital art.

Next week I’ll be in Randa

Sun, 2015/08/30 - 9:24pm

Since Akademy 2015 KSecrets Service development continued. I did lots of code cleanup. The async API now uses QFuture and the secrets file backend, based on libgcrypt, was added. Tests are there to confirm it’s not yet working. :-)

One week from now I’ll be in Randa. The hacking ambiance will surely help to hopefully get a first pre-alpha version of the service. I also look forward to peer reviews and feedback on this new codebase.

This kind of events is made possible by our generous donors. If you’d like to join them and donate, helping the KDE community and me, then just click the image below:
KDE Sprints Fundraiser

User Data Manifesto 2.0 launched

Sat, 2015/08/29 - 1:00pm

In October 2012 I announced the first version of the User Data Manifesto during the Latinoware Keynote in Brazil. The idea was to define some basic right that all users should have in the digital age. This was still before the Snowden revelations. But it was already very clear that the privacy and security is at risk by cloud services and SaaS solutions that totally ignore the rights and interests of their users. So the idea was to try to define what this rights should be in the internet age.

The version 1.0 was instantly very popular and I got a ton of positive feedback and support. But over the time it also became clear that a few things could be expressed in a simpler and clearer way. So the idea came up to do a revision of the manifesto based on all the feedback.

During last years ownCloud Contributor Conference Hugo Roy from FSFE and ToS;DR, Jan-C. Borchardt and I started to work on the version 2. Now one year later I’m super happy to say that Hugo launched the new version of the manifesto during the ownCloud Contributor Conference keynote here in Berlin just a few minutes ago.
This is the result of a lot of discussion and the input from a lot of people and organizations. I’m also super proud to say that several well known organization are official launch partners of this 2.0 version of the manifesto and support the manifesto and the ideas behind this. This supporters are:

  • KDE
  • Free Software Foundation Europe
  • X-Lab
  • ToS;DR
  • Spreed
  • ownCloud
  • More information about the manifesto can be found here

    I hope that this Manifesto helps to promote the importance of privacy, data protection, security and control over the own data in the cloud age.
    If your organization, company or open source project wants to help to push this forward and want to support this manifesto then please send me a message and we will add you to the list of supporters.

    FreeBSD on Beagle Bone Black (easy as pie)

    Sat, 2015/08/29 - 11:35am

    For a long time, my Beagle Bone Black  sat on my desk, gathering dust. Recently I decided I would give it a purpose: as a replacement for the crappy DHCP server and DNS on my home router (it’s a Huawei g655d, and it has poor wireless range, a lousy interface, and wonky internal DNS). I ran an update on the Bone, which promptly downloaded a whole bunch of packages from the angstrom distribution. Over plain unauthenticated http. With, as far as I could see, no further checksumming or anything. Bad doggy.

    Resigned to replacing the on-board distro anyway, I decided I would try FreeBSD, since that’s my OS of choice — if it didn’t work out, OpenSUSE would do.

    Anyway. I wouldn’t be writing this if there weren’t a whole bunch of giants on whose shoulders I could stand, since actually, the whole process was deceptively simple and well-documented.

    Hardware Setup: Here’s a picture of my Beagle Bone, on an old DVD-case.

    Beagle Bone Black

    Beagle Bone Black on FreeBSD

    I started from the FreeBSD Beagle Bone wiki page. I power the Bone over USB from a powered hub. There’s a Olimex 3-pin serial cable attached. I spent a frustrating hour with this until I read somewhere that sometimes the TX and RX wires are reversed — so I swapped red and green and voila! You can see that in the picture.

    Here’s part of the boot messages:

    KDB: debugger backends: ddb KDB: current backend: ddb Copyright (c) 1992-2015 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 10.2-STABLE #0 r287149: Thu Aug 27 06:11:58 UTC 2015 arm FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512 CPU: Cortex A8-r3 rev 2 (Cortex-A core) Supported features: ARM_ISA THUMB2 JAZELLE THUMBEE ARMv4 Security_Ext WB disabled EABT branch prediction enabled LoUU:2 LoC:3 LoUIS:1 Cache level 1: 32KB/64B 4-way data cache WT WB Read-Alloc 32KB/64B 4-way instruction cache Read-Alloc Cache level 2: 256KB/64B 8-way unified cache WT WB Read-Alloc Write-Alloc real memory = 536870912 (512 MB)

    The FreeBSD image for Beagle Bone expands to fill the SD card, so I have a nice 8GB drive with a basic FreeBSD installation — hardly any different from when I create a fresh FreeBSD VM in VirtualBox.

    Software Setup: then I tried to compile something. There are no binary packages generally available for ARM targets from FreeBSD, but you can compile everything from FreeBSD ports, no problem. Except after about 40 minutes waiting on the very first port that needs to be done, pkg(8), I was about to give up on this path.

    At that point, Ralf Nolden asked something that totally turned this little project around: why don’t you use poudriere for cross-compiling?

    I’ll point to Randy Westlund for a simple and straightforward recipe. No need to repeat it here, since the only difference between my setup and his are a few minor filesystem path changes. Randy points at Doug and there’s more pointers from there if you want to follow the historical references. Giants.

    Suffice to say that poudriere is awesome.

    Really. Follow Randy’s “Installing the Tools” steps, take the required modifications
    to poudriere.conf from Doug, then continue with “Build the Environment”.

    On an i7 860 @2.8GHz, this took less than an hour, if I recall correctly. Maybe an hour and a half, which gave me time to read the documentation on other bits and pieces.

    I picked a few packages — isc-dhcp42-server and unbound — and kicked off a poudriere build. I turned off all the DOCS and EXAMPLES options, since I can get those on the build host and they don’t need to be on the Bone. From the extensive logging poudriere produces, I can see that it took a little over an hour and a half. For an overnight build, that’s cheap.

    And then the moment of truth:

    root@beaglebone:/usr # pkg install isc-dhcp41-server Updating bbbbuild repository catalogue... bbbbuild repository is up-to-date. All repositories are up-to-date. Updating database digests format: 100% The following 1 package(s) will be affected (of 0 checked): New packages to be INSTALLED: isc-dhcp41-server: 4.1.e_9,2 The process will require 2 MiB more space. 473 KiB to be downloaded.

    So there you go! FreeBSD and ARMv6 packaging is as easy as pie. Now the Bone is doing something useful, I can start using poudriere for silly things,
    like building Qt5 so I can write a Qt application to control the user LEDs on the board.

    Bringing Akonadi Next up to speed

    Sat, 2015/08/29 - 10:10am

    It’s been a while since the last progress report on akonadi next. I’ve since spent a lot of time refactoring the existing codebase, pushing it a little further,
    and refactoring it again, to make sure the codebase remains as clean as possible. The result of that is that an implementation of a simple resource only takes a couple of template instantiations, apart from code that interacts with the datasource (e.g. your IMAP Server) which I obviously can’t do for the resource.

    Once I was happy with that, I looked a bit into performance, to ensure the goals are actually reachable. For write speed, operations need to be batched into database transactions, this is what allows the db to write up to 50’000 values per second on my system (4 year old laptop with an SSD and an i7). After implementing the batch processing, and without looking into any other bottlenecks, it can process now ~4’000 values per second, including updating ten secondary indexes. This is not yet ideal given what we should be able to reach, but does mean that a sync of 40’000 emails would be done within 10s, which is not bad already. Because commands first enter a persistent command queue, pulling the data offline is complete even faster actually, but that command queue afterwards needs to be processed for the data to become available to the clients and all of that together leads to the actual write speed.

    On the reading side we’re at around 50’000 values per second, with the read time growing linearly with the amount of messages read. Again far from ideal, which is around 400’000 values per second for a single db (excluding index lookups), but still good enough to load large email folders in a matter of a second.

    I implemented the benchmarks to get these numbers, so thanks to HAWD we should be able to track progress over time, once I setup a system to run the benchmarks regularly.

    With performance being in an acceptable state, I will shift my focus to the revisioned, which is a prerequisite for the resource writeback to the source. After all, performance is supposed to be a desirable side-effect, and simplicity and ease of use the goal.


    Coming up next week is the yearly Randa meeting where we will have the chance to sit together for a week and work on the future of Kontact. This meetings help tremendously in injecting momentum into the project, and we have a variety of topics to cover to direct the development for the time to come (and of course a lot of stuff to actively hack on). If you’d like to contribute to that you can help us with some funding. Much appreciated!