Skip to main content Skip to navigation


Stripping Rust static libraries: symbols begone!

Posted on .

One of my first tasks with the fine folks at Centricular was to sort out a problem we had with the distribution of Rust libraries. GStreamer’s Rust-based plugins are implemented as a C ABI library through the cargo-c tool. When the binary distribution is put together, these plugins are compiled into dynamic libraries by default, but there are two platforms that require static libraries: iOS and Android. For these two platforms, a dynamic library that would weigh around 10 MB gets replaced by a static library of ~550MB.

Why Performance Improvements are Good

Posted on .

This blog post quotes an excellent video I got shared by a friend, which thoroughly debunks why performance improvements should not be allowed in production applications.

Notes on packaging Krita with G’MIC

Posted on .

This blog post explains the rationale behind the new G’MIC-Qt plugin we ship as part of Krita 5, and how to build and package it.

It has also been published as the new in the Krita repo.

Reading and writing a Photoshop TIFF

Posted on .

This blog post draws on my experience adding reading and writing support for our app, and is intended to clarify the ambiguities in the official standard.

SeExpr status update!

Posted on .

Hey all!

It’s been quite a while since my last post. Exams for my teaching certification have not gone as expected – had to pull out after being flattened in quite a critical one…

Buuuut! I am glad to announce that the SeExpr documentation is now available in the Krita manual!

Status update: merged!

Posted on .

Hey all!

I’m glad to announce that my GSoC 2020 project has been merged!

You should be able to use Disney’s SeExpr for fun and profit as soon as the next nightly.

The next objective is getting the docs in shape – see this merge request for more information; and, of course, we still need your help for a good batch of scripts to bundle with!

Thank you all for helping out!

Compiling Krita for ARM: an AppImage tale

Posted on .

The AppImage running on a Raspberry Pi 3B+. It's slow, but it works 😄

Someone on #krita, can’t remember their exact nick, asked if it was possible to run Krita on ARM-based computers, specifically the Raspberry Pi 3B+. AFAIK, no one has tried to do so, so I will tell you: yes, it is possible! (Although it will run as slow as a turtle!) This work took me the whole weekend, but it was an excellent experience as well as a wonderful way to test our infrastructure.

A key warning before moving on: DO NOT TRY THIS ON YOUR PI. It will be unbearably slow 😄 I built mine with a Ryzen 7 with 12 threads and it still took me two 12-hour shifts!

This post covers three steps: setting up the build environment, compiling the dependencies and Krita itself, and finally packaging the AppImages themselves. As per the official instructions, we’ll target Ubuntu 16.04 ARM. I chose the armhf port to match the Raspberry Pi’s default distro, Raspbian. I also tested aarch64 – see the last section for the necessary changes.