Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

How to Gradient When You Can't

While this topic isn't anything new (the asset in question is probably a decade old) I never shared a dirty little secret about some of our symbolic assets.

UI icons in GNOME are to a major extent monochrome. They behave like text and can be rendered with various foreground colors depending on context. In a small subset of icons we use partially shaded elements. Those are done as a solid fill as well, but lowered opacity. Then can still remain recolorable at runtime.

What we don't have is the ability to draw a gradient that remains recolorable, because we'd need more somphisticated machinery to rewrite the stops of the gradient definition. Or can we? Unless you're reading this on Planet or in your fancy RSS reader, you can see the spinner we've been using for well over 7 years now:

It actually isn't filtered particularly well in Firefox, but is nice and clean in gtk. Firefox amplifies one of the big downsides of this method, it's quite prone to moiré. If you hover over the spinner, it reveals the nasty hack how the fade to transparency has been achieved.

Let me show you how it's done in Inkscape. The UI is a bit of afterthought, but you can make actual objects follow a path.

  • The first step will be to create our spinner in its linear form. Create a rectangle, convert it into a shape with Ctrl+Shift+C and subdivide one of the sides a couple of times using the Add Node button in the context menubar.
  • To create the etch-gradient, select every even node on the side and move them horizontally.
  • Next step is to create the curve this object will follow. The easiest is to use the Ellipse primitive and only make it go along around 270deg rather than a full circle.
  • Now onto the magic. Putting shapes onto curves is done with a pattern along curve path effect found in the path menu. Despite the odd terminology, path effects can be previewed in real time and working with them is much easier than filters. Setting the source shape can be done multiple ways, but I found pasting from clipboard the easiest. If the source object is actually on canvas, the shape will remain linked and editing the source shape will result in the path effect updating on the target curve in real time, allowing iteration into perfection.

I bet there is a filter that can produce halftoning out of a gradient, but who's brave enough to spend an evening in the filters menu.

The best thing about the spinner is that Software is now getting a lot less of it. Phillip & Milan, thank you.

a silhouette of a person's head and shoulders, used as a default avatar

How to Gradient When You Can’t

While this topic isn’t anything new (the asset in question is probably a decade old) I never shared a dirty little secret about some of our symbolic assets.

UI icons in GNOME are to a major extent monochrome. They behave like text and can be rendered with various foreground colors depending on context. In a small subset of icons we use partially shaded elements. Those are done as a solid fill as well, but lowered opacity. Then can still remain recolorable at runtime.

What we don’t have is the ability to draw a gradient that remains recolorable, because we’d need more somphisticated machinery to rewrite the stops of the gradient definition. Or can we? Unless you’re reading this on Planet or in your fancy RSS reader, you can see the spinner we’ve been using for well over 7 years now:

It actually isn’t filtered particularly well in Firefox, but is nice and clean in gtk. Firefox amplifies one of the big downsides of this method, it’s quite prone to moiré. If you hover over the spinner, it reveals the nasty hack how the fade to transparency has been achieved.

Let me show you how it’s done in Inkscape. The UI is a bit of afterthought, but you can make actual objects follow a path.

  • The first step will be to create our spinner in its linear form. Create a rectangle, convert it into a shape with Ctrl+Shift+C and subdivide one of the sides a couple of times using the Add Node button in the context menubar.
  • To create the etch-gradient, select every even node on the side and move them horizontally.
  • Next step is to create the curve this object will follow. The easiest is to use the Ellipse primitive and only make it go along around 270deg rather than a full circle.
  • Now onto the magic. Putting shapes onto curves is done with a pattern along curve path effect found in the path menu. Despite the odd terminology, path effects can be previewed in real time and working with them is much easier than filters. Setting the source shape can be done multiple ways, but I found pasting from clipboard the easiest. If the source object is actually on canvas, the shape will remain linked and editing the source shape will result in the path effect updating on the target curve in real time, allowing iteration into perfection.

I bet there is a filter that can produce halftoning out of a gradient, but who’s brave enough to spend an evening in the filters menu.

The best thing about the spinner is that Software is now getting a lot less of it. Phillip & Milan, thank you.

a silhouette of a person's head and shoulders, used as a default avatar

a silhouette of a person's head and shoulders, used as a default avatar
the avatar of Klaas Freitag

Kraft Version 0.97

Ich freue mich, die Kraft-Version 0.97 herauszugeben. In dieser Version sind wieder einige Bugfixes und Detailverbesserungen zu finden, die die Arbeit mit Kraft noch weiter erleichtern werden.

Eine neue Funktion ist, Kraft im Nur-Lesen Modus zu starten. Damit können Benutzende Dokumente zwar lesen und abgeschlossene Dokumente auch Drucken, aber nicht verändern. Somit können Anwendungen mit mehreren Arbeitsplätzen, in dem einer der „Hauptarbeitsplatz“ ist, der die Angebote und Rechnungen erstellt. Andere können die Dokumente gefahrlos einsehen.

Die Version 0.97 ist über die Download-Seite der Homepage herunterzuladen.

Wir wünschen viel Spaß und Erfolg mit Kraft.

the avatar of openQA-Bites

Use local go modules

When dealing with go modules, sometimes it’s handy to test some changes from a local repository instead of using the upstream one.

Now, go programs are typically relying only on the upstream packages. Take the module file of openqa-mon as example:

a silhouette of a person's head and shoulders, used as a default avatar

Elasticsearch 7.14 and Opensearch 1.0 Are Available and Work Fine With Syslog-ng

One of the most popular destinations in syslog-ng is Elasticsearch. Due to the license change of the Elastic stack, some people changed quickly to Grafana/Loki and other technologies. However, most syslog-ng users decided to wait and see. Version 1.0.0 of OpenSearch, a fork of the Elastic code base from before the license change is now available. Elastic also published a new release last week.

For this blog, I tested the latest and greatest from both product lines and I’m sharing my experiences. For the impatient: both work perfectly well.

For details read my blog at https://www.syslog-ng.com/community/b/blog/posts/elasticsearch-7-14-and-opensearch-1-0-are-available-and-work-fine-with-syslog-ng

a silhouette of a person's head and shoulders, used as a default avatar

Turris, syslog-ng and me

Yes, it’s a syslog-ng blog from me, and it’s not on https://syslog-ng.com/ :-) The reason is simple: this is not a technical blog. This is my story about how I found the Turris Omnia Linux router and how this lead to working together with the Turris guys.

The beginnings

When I ordered my Turris Omnia, I did not know that it ran syslog-ng. All I knew that it was an ARM device and that it ran Linux. It has a reasonable amount of RAM, storage can be extended, and I can also run containers on it, including my favorite OS: openSUSE. Crowdsourcing was very popular at that time. I ordered my box through Indiegogo.

Working together

Once my Turris Omnia was up and running, I realized that TurrisOS uses syslog-ng for logging. Even if it was an ancient version (3.0), I was very happy about it. I featured the Turris Omnia in some of my blogs as a log source. Finally, a device that could provide me with some interesting real-life log messages!

It turned out that the Turris team has a member whom I already knew from the openSUSE project. We met at conferences, exchanged some e-mails. Soon, syslog-ng was updated to 3.9 in TurrisOS, jumping almost a decade in code and adding many interesting features along the way.

Every now and then, I helped in version updates, suggested new features and changes to the configuration, which helped to greatly extend the feature set of syslog-ng in TurrisOS without adding too many extra dependencies. Using syslog-ng on the Turris Omnia (and most likely on all the other Turris devices), you can now parse many types of incoming log messages and send log messages to Elasticsearch and various cloud services.

Mutual benefits

To me, working with Turris is completely a hobby project. Still, there are mutual benefits both for Turris and Balabit (now One Identity Hungary). I help Turris with syslog-ng and include Turris Omnia in my blogs. It’s a fantastic log source. For example, if you click the YouTube icon in the upper right corner, you will see some timelapse videos built from Turris logs. The blogs describing how to make those heat maps and videos were quite popular for a while: https://www.syslog-ng.com/community/b/blog/posts/creating-heat-maps-using-new-syslog-ng-geoip2-parser

For Turris, it means that even more people learn about their products. For Balabit, it strengthens the syslog-ng everywhere image: running everywhere from embedded devices, like the Kindle e-book reader and Turris Omnia router up to some of the largest HPC clusters of the world.

It was a pleasure working with the Turris team at cz.nic as it allowed me to intersect my work interests with my hobby. Getting swag from them did not hurt either. I am a t-shirt maniac, and the USB converter with four different plugs and a Turris logo is not just nice, but also quite practical :-)

On the photo below you can see me in my latest t-shirt and mask:

CzP in Turris t-shirt and mask

the avatar of Nathan Wolf

a silhouette of a person's head and shoulders, used as a default avatar

openSUSE Tumbleweed – Review of the week 2021/31

Dear Tumbleweed users and hackers,

How often did you update your machine during the last week? If you were to follow every single snapshot, you had to do it seven times. That’s how many snapshots passed openQA and had been pushed out to the mirrors.

What were the main changes in the snapshots 0729…0804?

  • Mozilla Firefox 90.0.2
  • KDE Plasma 5.22.4
  • Pipewire 0.3.32
  • Postfix 3.6.2
  • Parted 3.4: supports F2FS
  • Mesa 21.1.6
  • Bash 5.1.8
  • Linux kernel 5.13.6
  • Systemd 248.6
  • Zypper 1.14.48: experimental support for singletrans rpm commits
  • Network Manager 1.32.6
  • Freetype 2.11.0

During the next two weeks, Richard will be taking care of openSUSE Tumbleweed. Naturally, I tried to leave him only a small pile of things in the stagings. Currently, there are:

  • Linux kernel 5.13.8
  • systemd 249
  • rpmlint 2.0
  • openssl 3
  • glibc 2.34

Most of them requiring a good bunch of build fixes to make them acceptable. So, I can only ask you all to support Richard during the next few days and offer him as many build fixes as you possibly can.