Language Selection

English French German Italian Portuguese Spanish

Kde Planet

Syndicate content Planet KDE
Planet KDE
Updated: 7 hours 47 min ago

PinePhone unboxing and first try!

16 hours 23 min ago

PinePhone unboxing and first try!

Cross Platform Light & Dark Themes and Icons

18 hours 34 min ago
The State on X11/Wayland (more or less since a few years)

On the most Unices that use X11/Wayland and therefore are capable of running the full Plasma Desktop the state of light & dark themes and the accompanied icon themes is really good for KDE Frameworks based application.

Just take a look at these two screenshots of a light and dark mode Kate running on GNU Linux/X11 & Plasma Desktop.

To create these, I even just switched between some light and dark Breeze themes on the fly via “Settings -> Color Scheme”.

To be honest, the 20.12 version of Kate did then still miss to update some colors like in the Documents pane, that is fixed in master and therefore with the upcoming 21.04. But overall, even 20.12 works well, in the worst case, you need to restart your application to have properly applied themes. Given one (at least me) only rarely switches the color theme, that seems “OK”.

The State on Windows & macOS (January 2021)

Unfortunately, the state on other platforms isn’t that charming.

Whereas the theme chooser in principle works even on Windows and macOS, one serious issue exists there: The color is switched but the icons are not re-colored. This leads to unusable results like can be seen below in the screenshot taken 1:1 from this bug for Kate.

The version there still had an old KTextEditor framework that didn’t follow the global theme color to choose the matching KSyntaxHighlighting theme. That was already rectified in Frameworks 5.75 as described here. Still, you end up with a program that has the most icons just close to invisible, as they stay black, even for dark themes. This is no Kate specific issue, e.g. Okular will just look the same.

Naturally not all applications show these issues. Some ship their own icons/styles/themes or will you just not let switch your theme to something dark. Thought, if you do no special handling, like in Kate/Okular/Filelight/… and I assume most stuff we have around on, the Windows and macOS builds will show the above behavior if you get them to use dark mode at all.

How to fix these Icon Issue on Windows & macOS?

This issue was known since long, we just had no time to tackle it.

First, some generic info about how icon themes work on non-Unices for KDE Frameworks base application (at least if they have no own logic for that).

  • The Breeze icons (the light variant usually) are installed inside the application bundle as binary Qt resource file. For example the tooling will do this via Craft.

  • Some magic inside the KIconThemes Framework detects if such an icon theme resource file is around and does the needed setup to use that. If you need details, take a look in kicontheme.cpp and search for initRCCIconTheme. It is open source, you can see all the awful stuff we do in no time ;=)

We went for this method years ago to ensure we don’t need to deploy XXX individual files and to have no need for boiler plate code in the individual applications. As long as you link KIconThemes in some way, you are ready to go. This might be hacky, but it works ;=)

Why does this inhibit the proper icon coloring?

The icon coloring is handled by the KIconThemes Framework, too. The SVG Breeze icons are processed on load and adapted to the current palette. This works perfect, as long as the KIconLoader is at all used.

On your typical Plasma Desktop this is the case, as the KdePlatformTheme will ensure that the KIconEngine is used as QIconEngine for your application. Unfortunately, that will cease to work if you either set a theme via QIcon::setThemeName like we do for our resource hack or if you don’t have this platform theme loaded, as is the case for Windows & macOS.

One first idea how to fix this was to bundle both light & dark theme and just switch between them on application palette change. We drafted some prototype for this. Unfortunately, as least without more hacks, this would have needed some application modification to setup it, here the boiler plate for Kate.

After some more research, be better idea came to mind: why not let Qt just use the KIconEngine always as icon engine for SVG icons? Then this would work even if some theme name is set or the platform theme doesn’t know about it.

Interesting enough, KIconThemes already had a icon engine plugin, we just never registered it properly, as it was just thought for some serialization. This was now merged for Frameworks 5.80 and the Craft blueprints already have it as patch. The latest 20.12 store builds of e.g. Kate/Okular/Filelight have this already deployed.

The State on Windows & macOS (March 2021)

This means, we now have the following state on Windows and macOS (light & dark mode) with the Frameworks 5.80 variant without any adaptions to the application code. The only requirement is that the KIconThemes framework is deployed inside the application bundle.

The current Windows Store version of Kate 20.12:

The current builds of Kate for macOS from the Binary factory links on this page.

If you look closely to the macOS screenshots, you see there is still the above mentioned Documents pane error visible: the icon/text color there didn’t swap, is fixed in master ;=)

More help welcome ;=)

Naturally, not all is great. The changes for this did show some difference in KIconEngine/KIconLoader vs. default SVG QIconEngine regarding non-square icons. This should be fixed for Frameworks 5.81. As you can see in all linked merge requests, we are short at hands, if you happen to have more issues with icons (or other stuff), please show up and help out!


A matching thread for this can be found here on r/KDE.

KDE Code Formatting

Saturday 6th of March 2021 01:20:00 PM
Short history of the ‘KDELIBS’ coding style

Once upon a time, in the monolithic KDELIBS world, we had some document describing the KDELIBS coding style.

Over the years, that evolved a bit and ended up here as Frameworks Coding Style.

As noted there, it is more or less the same stuff Qt does style wise.

How was that coding style handled in practice?

Actually, this styling was really never enforced on a global scale.

During the “we split KDELIBS up into Frameworks” time, on the initial import, the code was once run through astyle to ensure that coding style was kept.

But after the initial import, nothing of that sort happened anymore (at least not in some coordinated fashion).

Beside, for non-Frameworks, such a mandatory style application never happened. Actually, it was never be agreed that this style is mandatory beside for KDELIBS itself, anyways.

Naturally, individual sub-projects/maintainers started to enforce either the stuff linked above or individual similar styles through different means.

e.g. in kate.git we noted in the README that we wanted to follow that style. That was it ;=)

Why is that sub-optimal?

Over the years, a lot of code started to diverge from the wanted style, both in Frameworks and other parts that actually want to use the above coding style.

On the other side, as there was no easy way to apply the coding style on changes (beside if you start to tell each new-comer how to use astyle or other scripts), often new contributors struggled with the purely style related comments they got on their merge requests. I can understand that, you step up to fix some bug and the first feedback you get: please some spaces here, some spaces less here and the ‘{’ into the next line.

The solution: include the formatting into the workflow

After years of no improvements in that area, we now are at a state that allows a much better integration of the coding style handling in our workflow.

Central managed clang-format configuration

Our Extra CMake Modules Framework now provides a centrally maintained clang-format configuration.

As you can see, after the introduction over one year ago, this got more fine tuned to match the style we actually use in Frameworks.

CMake functionality to re-format your stuff

The Extra CMake Modules provides CMake functions to apply the style to your project, too.

Let’s take a look how that is e.g. used in KTextEditor:

include(KDEClangFormat) file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h) kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})

This will allow you to later just do e.g.

make clang-format

to reformat all your stuff with the proper ECM provided clang-format configuration.

Provide Git hooks

Still, you might easily forget to run this and still commit stuff that doesn’t match. Or, for new contributors, to create merge requests containing such potential badly formatted stuff.

To advert that, ECM provides functionality to auto-register Git hooks, too, that will avoid that you commit such stuff.

include(KDEGitCommitHooks) kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)

Now, if you forget to adhere to the stuff that is verifiable by clang-format, you will get a message like

ERROR: You have unformatted changes, please format your files. You can do this using the following commands: git clang-format --force # format the changed parts git clang-format --diff # preview the changes done by the formatter

on a commit try.

This should make it much easier to avoid such style mistakes to slip in.

What’s missing?

Naturally, all this is cool, but not that useful, if not really applied.

Ahmad and Alexander are currently applying this to more or less all Frameworks, the progress can be tracked in this issue.

Alexander and others do the same for Plasma, as can be tracked in yet another issue.

Naturally, if you want to help out, that is always welcome, just show up in the above issues to have this coordinated ;=)

KDE Itinerary @ German Open Transport Meetup

Saturday 6th of March 2021 10:00:00 AM

I’ll be talking about KDE Itinerary at the German Open Transport Meetup next week, Wednesday March 10th at 20:00 CET on Big Blue Button.

Open Transport Meetup

The German Open Transport Meetup started mid last year, as a get-together for anyone interested or involved in mobility or transportation in general, and in Open Data/Free Software in that context in particular.

Being forced to be virtual from the start due to the pandemic is probably what gave it the critical mass to keep up the unusual high pace for such an event with its bi-weekly rhythm, and with no shortage on topics in sight.

Many of the things discussed at the meetup so far had immediate impact on KDE Itinerary (and the KPublicTransport library in particular), the biggest example probably being the rental bike/scooter support. A large number of the attendees actually working for local or national transport operators or public administration has also been invaluable for getting first-hand access and insights.

While mostly in German and sometimes covering very German-spcific topics, there have been international guests as well, like the Digitransit team from Helsinki or the Navitia team from Paris (who had previously invited me to present KDE Itinerary at the French Open Transport Meetup in 2018).

As KDE Itinerary isn’t targeting a specific country I’d love to eventually see something similar to the national Open Transport Meetups emerge on the international level as well, or at least on an European level as a next step, I still have questions about the Swiss railway QR code date/time format for example ;)

This week in KDE: Adaptive panel opacity and auto-restored unsaved documents in Kate!

Saturday 6th of March 2021 05:27:09 AM

A big Plasma feature was added this week: adaptive Plasma panel opacity! Now the panel and panel applets are more transparent than they were before, allowing more of a tint from the beautiful wallpaper on your desktop! But what’s this? You’re about to complain that you maximize all your windows so the increased transparency will look ugly? In fact, we now make your panel and panel applets 100% opaque when there are any maximized windows, ensuring no ugly effect! But what if you don’t want that either? Well, if you don’t want adaptive opacity we now let you make your panel and panel applets always transparent, or always opaque! Hopefully that should make everyone happy.

Web Review, Week 2021-09

Friday 5th of March 2021 04:51:00 PM

Let’s go for my web review for the week 2021-09.

India Targets Climate Activists With the Help of Big Tech

Tags: india, surveillance, authoritarianism, gafam, zoom, activism, ecology

The usual suspects from Silicon Valley silently complying (again…) with the demands of a government becoming more and more authoritarian… This time to crackdown on labor and climate activists in India. Those companies really lack any form of moral centre, as long as there’s money to be made from surveillance and public influence.

Common Nginx misconfigurations that leave your web server open to attack | Detectify Blog

Tags: tech, nginx, security

A nice list of easy mistakes one can make in their Nginx configuration opening the door to security issues.

Linux System Monitoring Fundamentals

Tags: tech, linux, monitoring

A neat little catalogue of monitoring tools on Linux. Learned a couple of them I didn’t know of.

‘Millions of people’s data is at risk’ — Amazon insiders sound alarm over security

Tags: tech, amazon, security, gdpr

Sitting on a massive trove of data, prioritizing growth over all else and driven by hubris… What could possibly go wrong? Well not knowing what data you really have and risks of breaches. Nothing much. ;-)

Data Manipulation: Pandas vs Rust

Tags: tech, rust, pandas, data-science

Interesting comparison even though the conclusion is slightly unsurprising: Pandas is slower but more convenient, Rust is fast, consumes less memory but more work is involved. At least this gives a few indications on what type of APIs could be added to Rust to ease some things. It also indicates that Pandas can be great to develop the pipeline with then a switch to Rust when this needs to be optimized for higher volumes of data.–1d70e7fc

Google charts a course towards a more privacy-first web

Tags: tech, privacy, google, surveillance

Now this is kind of a surprising move… At least that shows that when some strong regulation comes around even behemoths need to move with it. I guess now let’s wait and see for an actual implementation, the devil is often in the details. I mean, in the end it doesn’t mark the end of profiling just maybe reduction of the ability to identify a particular person. And we know the root cause of most current problems is the profiling and the impact on personal behavior which goes with it. This is unlikely to go away.

Google’s FLoC Is a Terrible Idea | Electronic Frontier Foundation

Tags: tech, privacy, google, surveillance

So talking about the devil being in the details… That confirms profiling is still very much in the picture (unsurprisingly) but more disturbing:

  • this has implications which creates new venues for easier fingerprinting (so extra risks!)
  • this is in fact not that hard to cross-reference cohort and user identity (oops, wasn’t it main initial motive to prevent this?)
  • thus, this will help with monitoring behavior changes over time

And of course that’s to be added to the fact that targeted advertising is very much not going away. FLoC or third party cookies… pick your poison I guess?

Vaccine Efficacy, Statistical Power and Mental Models

Tags: tech, sociology, facebook, statistics, vaccines

Fascinating account on mental models and then statistical power

It starts with how a flawed mental model (coming from Facebook’s founder) about identity and social role became imposed on others.

Then it continues on the mental model we tend to apply to vaccines. That shows again how bad we are at intuitively grasping statistics and their application. They do require an effort even when you’re trained at them.

First vaccine to fully immunize against malaria builds on pandemic-driven RNA tech

Tags: vaccines, medecine, biology

The wonderful world of RNA vaccines, it really opens the door to curing really problematic diseases… In this case malaria which I’ve been hoping we’d address for the past 15 years. Let’s hope they’ll make sure it’s affordable for everyone.

And to think that the research on RNA based vaccines was chronically under funded…

Bye for now!

Updated Snaps for KDE Apps

Friday 5th of March 2021 11:26:50 AM

I’m updating the KDE snaps and would like to ask for some testing.

Please install these from –candidate and let me know how they get on:

  • kblocks
  • labplot
  • okular

More to come.

You can also ping me for chat in Matrix room

KDE Plasma 5.22: Adaptive Transparency!

Friday 5th of March 2021 09:04:51 AM

KDE Plasma 5.22: Adaptive Transparency!

bhyve for Calamares Development

Thursday 4th of March 2021 11:00:00 PM

bhyve (pronounced “bee hive”) is a hypervisor for BSD systems (and Illumos / openSolaris). It is geared towards server workloads, but does support desktop-oriented operation as well. I spent some time wayyyy back in November wrestling with it in order to replace VirtualBox for Calamares testing on FreeBSD. The “golden hint” as far as I’m concerned came from Karen Bruner and now I have a functioning Calamares test-ground that is more useful than before.

bhyve Intro

The bhyve manpage is quite extensive, and the FreeBSD handbook has another whole chapter on it, but none of them could answer my question:

How to boot a Linux live ISO to a KDE Plasma desktop in bhyve

I spent some time messing around with the configurations, and with chyves and vm-bhyve and looked at cbsd, but those are largely tools that hide what bhyve is doing, and do not advance my goal of (shouting again):

Desktop Linux computing in a virtual machine on FreeBSD

The most valuable hint came from Karen Bruner, on Twitter:

A Valuable Hint: shop around for VNC clients

and a second-most-valuable piece of information, came from bhyve developers themselves, also on the Twits:

A Valuable Example: it can work

With a snippet in hand with “this works” I could confirm that at least it’s possible, and with the hint that VNC clients are annoying, I went and tried other VNC clients.

.. and the skies opened up, and a ray of light shone forth.

What I did wrong

As Rebecca Cran points out, boot is excruciatingly slow with UEFI. It really does take a minute or two to get through to the-Linux-kernel-is-starting, or Plymouth, or whatever. Once the Linux kernel starts, performance is fine. However, my impatience made me conclude that things were not working when they really were .. just .. glacially .. slow.

This was true in November. I think Rebecca has since updated the EFI firmware ports, because it now boots in seconds.

Karen Bruner hinted that not all VNC clients are equal. The one I was using has rendering issues, which didn’t improve my perception of bhyve’s usability for desktop VMs. See my VNC-client testing, below.

Dumb luck prompted me to try VNC from my Slimbook laptop (running openSUSE Tumbleweed) to my FreeBSD server after a reboot of the server and that worked, while running vncviewer locally on the FreeBSD machine the night before got me a garbled UEFI boot screen and no way to provide keyboard input. This taught me that bhyve reboots are not like VirtualBox reboots: it’s essential to destroy the VM with bhyvectl --destroy before, say, swapping out disks and CD images and other things. Or, as in this lucky case, reboot the host.

Thanks to Karen, Rebecca and the bhyve developers, I know now what went wrong, so here’s some more notes on what goes right.

bhyve Installation

bhyve itself is part of the base system. Additional firmware for the VMs needs to be installed – in particular, UEFI firmware, possibly GRUB as well. I did the following:

# pkg install bhyve-firmware grub2-bhyve # pkg install uefi-edk2-bhyve uefi-edk2-bhyve-csm

There is no UI to speak of in bhyve. Instead, the VM can have a serial console attached – which is lovely for a FreeBSD server VM, or for CentOS grinding through Java workloads but totally unsuitable for looking at recent Manjaro releases. The VM can also expose a UEFI framebuffer through VNC.

I’m going to recommend tigervnc-viewer, for the fairly-pedestrian reasons that it works well and I also happen to have it installed on my laptop. See the section on VNC-client testing, below.

# pkg install tigervnc-viewer bhyve Host

It may be necessary to load the virtualization kernel module to get virtualization support at all.

# kldload vmm

Since bhyve is a virtualization system, it stands to reason that the host FreeBSD system needs some virtualized resources. The documentation is, again, extensive, but I’ve applied my amazing kolourpaint skills to the problem as well. First we need to virtualize some network bits.

A Virtualised bridge and interfaces

To connect the VM to the outside world, it needs to have a virtual network interface. These are tap devices, and they are created via ifconfig create tapN where N is a number. The handbook is inconsistent in numbering them, but it’s possible to create a handful (say, tap0, tap1, tap2 and tap3) so that there are enough interfaces for whatever networking is needed.

# ifconfig tap0 create # ifconfig tap1 create # ifconfig tap2 create # ifconfig tap3 create

These interfaces are just dangling in the void, so we can wire them up to a network bridge – let’s pretend it’s a switch, so that my illustration matches (in any case the label br0 in the illustration is incorrect, bridges must be named bridge). All four virtualized network interfaces go on the bridge.

# ifconfig bridge0 create # ifconfig bridge0 addm tap0 addm tap1 addm tap2 addm tap3

The bridge so far has no access to the outside world. Depending on intended use, that might be fine. For my Calamares testing, though, I’ll need a connection so the VMs can download packages. This bit is host specific, since it ties the bridge to a physical interface on the host machine – and then the bridged traffic goes out on that interface. I have a re0 interface that I’ll offer to the VM; this does not have to be exclusive to the VM bridge. Then I’ll bring the bridge up and configure the virtualized network interfaces to come up on demand.

# ifconfig bridge0 addm re0 # sysctl # ifconfig bridge0 up

That’s all there is to it – keeping these settings beyond reboots is an exercise for another time.

bhyve Storage

This is where ZFS gets a chance to shine. You can carve out a block device from available storage and use that as a “dedicated disk”. I’ve written about it when it goes wrong and how to fix it, but not how to set things up normally.

ZFS has storage pools. Usually there’s one called zroot, but there may be more. I bought a 4TB HDD at one point, and it is a storage pool of its own, called zbigone (from ‘Allo ‘Allo). I can create a 16GB block device on that with zfs create. I don’t want it to be examined by GEOM, so it gets some special settings.

# zfs create -o volmode=dev -V 16G zbigone/bhyve-scratch` bhyve Command Line

The bhyve command-line is a bear. Basically you are configuring a virtual PC on the command-line, so there are tons of options. The documentation gives an example, but here’s what I use. My VM’s need to run X11, they boot from a Linux ISO, and they need enough memory to build Calamares as well.

Here is the command-line, split out into bullet points, first the general machine configuration:

  • /usr/sbin/bhyve That’s the command.
  • -HP This machine will yield the virtual CPU on HALT and PAUSE instructions; that’s polite.
  • -A This machine gets ACPI tables.
  • -c 4 Four CPU cores.
  • -m 4096M Four gibibyte of RAM.
  • -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd Boot UEFI.
  • -l com1,stdio Hook the serial console of the guest to stdio so you can watch it in konsole.

So far, so good. Next, we put together the PCI slot configuration of the virtual machine. It’s like soldering your own motherboard! We’ll need a bunch of parts, including a PCI-ISA bridge to hook that serial console to. I threw away the last motherboards I had with ISA slots this year, but virtually they live on. PCI slots are numbered. There are some some conventional assignments, but plenty of space for VMs with different device setups (e.g. removing the CD ROM drive after installation). I’ve left some gaps in the numbers here to allow extra devices.

  • -s 0:0,hostbridge The VM bridge to the host. Required.
  • -s 1:0,lpc A PCI-ISA bridge. Required for that serial console.
  • -s 2:0,virtio-net,tap0 A virtual network adapter, connected to one of the virtual interfaces. That’s tap0 in this case, but the VM could be hooked up to a different one (for multiple VMs at once, a must) or multiple ones. Remember that you can’t jam two network cards into one PCI slot, so you’ll need a different number for other cards.
  • -s 4:0,virtio-blk,/dev/zvol/zbigone/bhyve-scratch A virtual block device. This is the ZFS block device created earlier. It is possible to have more disks attached.
  • -s 6:0,ahci-cd,/zbigone/vm/iso/Pep11-dba4-20210131.iso A virtual CD device. The ISO image is specified; here I’m using a Peppermint image. There is no “empty CD drive” device as far as I know. To boot the VM with no CD, unsolder the PCI slot with the drive in it.
  • -s 29,fbuf,tcp=,w=800,h=600,wait A (EFI) framebuffer. This one will be accessible on localhost at port 5900 and is an 800x600 framebuffer. That’s fairly limited for modern desktop Linux. Bigger sizes are possible. The wait argument means the machine won’t boot until a VNC client connects, which may be useful for initial-boot debugging.
  • -s 30,xhci,tablet The mouse.

So my virtual machine has 7 PCI slots: slots 4 and 6 specify the HDD and CD. And after all that, I still need to give it a name, too!

The complete command-line is

# /usr/sbin/bhyve \ -HP \ -A \ -c 4 \ -m 4096M \ -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \ -l com1,stdio \ -s 0:0,hostbridge \ -s 1:0,lpc \ -s 2:0,virtio-net,tap0 \ -s 4:0,virtio-blk,/dev/zvol/zbigone/bhyve-scratch \ -s 6:0,ahci-cd,/zbigone/iso/Pep11-dba4-20210131.iso \ -s 29,fbuf,tcp=,w=800,h=600,wait \ -s 30,xhci,tablet \ pep11

It’s no wonder there’s a half-dozen scripts and tools out there that wrap up bhyve command-lines into something slightly easier to manage.

bhyve VM Shutdown

Connecting via VNC generally works fine. After I’m done with the VM I can power it down via the desktop buttons (logout / poweroff or whatever in KDE Plasma or XFCE or the desktop environment of the day). That closes the VNC viewer, and the bhyve command returns.

But the VM is not really dead. It needs an extra stroke, bhyvectl --vm pep11 --destroy to get rid of it for real. Some of my previous struggles came from not understanding how to really switch off and reboot a VM.

VNC-Client Testing

I use tigervnc-viewer which, as I said, “works well” and which is something I had installed on my laptop too. But for completeness, here’s a list of what I found in ports with port names *vnc*:

  • net/gtk-vnc – a library only, not a full client
  • net/libvncserver – a library for writing VNC servers
  • net/neatvnc – a library for writing VNC servers
  • net/remmina-plugin-vnc – plugin for something
  • net/ssvnc – enhanced tightVNC client

Plasma Mobile tarball release: bugfixes and new releases

Thursday 4th of March 2021 12:00:00 AM

This release includes three new modules,

  • krecorder
  • qmlkonsole
  • kirigami-addons

kirigami-addons is released as a unstable module and does not provide any API or ABI gurantees in this release

This release also includes the following bugfixes,

  • Properly unset the suspend inhibition so that after call system is not stuck in awake state.
  • Fix icon rendering in the QtSVG that caused ugly look in Plasma Mobile
  • Fix phone number normalization so that messages where sender address have alphabetical characters can be opened
  • Add spacing in search bar to be consistent with other applications

Below are the details for this release items,

All of the tarballs are signed with my PGP key,

0AAC775BB6437A8D9AF7A3ACFE0784117FBCE11D bshah at mykolab dot com

Happy packaging!

Italian Poetry: Non Sono Che Suoni

Wednesday 3rd of March 2021 02:57:08 PM

I've just published – mostly as an experiment – my latest (italian) poetry story to wattpad. This story is about a long and elaborated wet dream of an engaged boy who easily gets crushes. It talks about girls (mostly), various flashbacks, angry teenagers, chit chat, and all the other stuff you hated in High School. If you know Italian or want to try your hand at it, check out the story here:

Fosdem 2021: A painting timelapse with comments

Wednesday 3rd of March 2021 12:23:15 PM

Ramon Miranda was preset at virtual Fosdem 2021 in the KDE booth to demonstrate Krita. Here’s a timelapse of the event, with comments! If you want to know more about the free and open source software community where Krita came into existence, watch it!

The post Fosdem 2021: A painting timelapse with comments appeared first on Krita.

Season Of KDE – Project Update 1

Monday 22nd of February 2021 12:17:18 PM

It’s been a long time since I have published my first blog on SoK. To make up for that, I plan on writing successive blog posts to catch you all up with the progress of my project, foKusfoKus is a simple task management app for plasma mobile. 

I have written why we need a dedicated task management app instead of using a calendar app to plan our days in my proposal for SoK. Here I want to highlight the main reason for the need for a dedicated task management app. Calendar apps are great for static events like meetings, appointments, etc. Tasks management apps are great for actionable items(tasks) that we need to do in a day or a week. Sometimes the Calendar might become overpopulated with the “tasks”(which may be small things like listening to a podcastwalk the dog) and might be counter-productive. Using the Calendar and the Task management app in tandem together, we can be our most productive selves. As the task management app isn’t heavy, it won’t affect the performance of the device(if that is your concern). 

Like most other apps of KDE, foKus is also built using the Kirigami and Qt. I had to start the app from scratch as there were no todo apps that I could use as a base for my app. As I was new to this community (and also to programming, this is my first coding project), these past 40 days have been a challenge. I had a tough time writing the backend logic as it was full of pointers, classes, and objects which I didn’t understand back then(admitting the weakness was the first sign of improvement). But with the help of my mentor, I am learning more than ever and getting better every day.

As of today, foKus is at a better place than I have expected it to be. The basic model of the app will be ready after I add the local storage(to store the tasks, which I plan on doing tonight or mostly by tomorrow). The user interface of the app is still crude. I’ll refine it once the basic model is ready. 

That’s it for this post, and thank you for reading. Until next time, cheers!

The Application Of New Things

Monday 22nd of February 2021 12:13:00 PM
KDE has, for a very long time, had this thing called Get Hot New Stuff, which is the name for a whole pile of tech which all exists just so you can just click a button in your wallpapers dialog that will pop up a dialog where you can, well, get hot new wallpapers for your system. Or mouse cursors. Or Plasma themes. Or books in Peruse. Or templates in a bunch of apps, or any variety of other things.
For a while now, it's been possible to add something called an adoption command, which is what will make a button show up in that dialog, and in Discover, labelled "Use". It's been used in a few places, but i recently sat down and got a bunch of little tools done that lets you set various things from the command line, and that in turn allowed me to also add those tools as adoption commands for the Get Hot New Stuff dialogues which download the stuff that those tools can apply.
How To Use A Wallpaper
What that means is that, fresh off the back of the 5.21 release, we've got that merged in, and it should become available to anybody running master pretty much immediately, and anybody who doesn't, well, hopefully in not too long.
The specific things that have had an adoption command added are:
  • Window Decorations - that is, themes for KWin's Aurora theming engine
  • Wallpapers - technically there was already an adoption command set, but it didn't work very reliably
  • Cursor Themes - cursor as in mouse cursor
  • Color Schemes - the things which define what colours your entire desktop uses
  • Plasma Themes - what defines how Plasma draws all it's UI components (panels, applets, all that lovely stuff)
  • Global Themes - complete packages of full-desktop settings, which adapt the look and feel of your entire desktop to something new
What all this means is that when scrolling through the content of one of the dialogues which let you grab these things, if there's a way to just outright guess what the thing should be applied to, in a global sort of fashion, there should be an adoption command for it.
It also means that, apart from the KWin tool, which is not installed as a systemwide tool (look for kwin-applywindowdecoration in your libexec if you want a play), you can now interact with these things from the command line. This is more or less done the same way you've been able to do with Global Themes for a while now using lookandfeeltool, which with this patch also got a quick bit of attention to make sure it would work as an adoption command, as well as a quick rename to match the naming scheme for the new tools. The new tools are all named plasma-apply-(thingtheyapply), so if you just type that out and tap the tab button, you should see all of them show up for you to play with.
What Desktop Themes Does leinir Have?
Finally, if you spot a dialog that seems like it should have this, but doesn't, do give me a poke, either here or on, and we can try and sort it out. Also, if you look at the merge request itself, you'll notice how these tools really aren't particularly scary for the most part. If you would like somewhere nice and self contained to jump in and do some work? Well, there's a good spot for you :)The word of the day is: User. The thing you become upon clicking the Use button in a Get Hot New Stuff dialog ;)

Understanding KDE Plasma theming system

Monday 22nd of February 2021 09:38:19 AM

KDE Plasma's theming system is actually quite complex. It has many ways to be customized. It's normal ever for expert users to not fully get how it works. I'll try to explain how it works to the best of my knowledge.

For all of these topics, there's section on the KDE Store where you can see all the avaiable options and download them.

Global Theme

Let's start with the Global Theme. This has potentially control over many settings, but let's simplify it into the main smaller components it determines:

  • App Style
  • Plasma Style
  • Colors
  • Window Decorations
  • Fonts
  • Icons
  • Cursors
  • Splash Screen
  • Desktop Layout

When a global theme is set it can set all of these things, but it does not have to set all of them. This means that setting a Global Theme is actually a potentially “destructive” action, meaning that you might have to re-set your preferred App Style, Plasma Style, etc. if you had customized them. In fact, you can customize each one of the above elements to your liking!

Here's an example Global Theme, Sweet KDE:

App Style

This category lists the QStyles you have installed. These customize the appearance of the 'widgets' in your QT applications: buttons, frames, tabs, checkboxs, context menus, and so on. The QStyle covers QWidgets app natively, whilst we have a qcc2 theme that mimicks the QStyle for qml apps. In this KCM you can also customize the GTK theme for, err, GTK apps.

This is where Kvantum comes into play: it is a QStyle that reads from a SVG how to draw the various widgets. This makes it much simpler for Style creator to make a new style, as they only have to make in Inkscape the various components instead of writing C++; of course, it also limits what you can do with it (e.g.: it's impossible to customize animations). A distinction must then be drawn for “native” QStyles and the Kvantum styles. It is very rare to see an original QStyle, but they usually feel of “higher quality” compared to Kvantum ones.

A QStyle can choose to follow the global colorscheme or decide ignore it and use its own colors. Most Kvantum styles set their own colors. Most “native” QStyles follow the global colorscheme.

Here's an example of a “native” QStyle, Lightly:

Plasma Style

This one customized the look of Plasma: the panel, the task manager, the system tray icons, krunner, the app launcher, etc. Everything that's not a window is (usually) part of Plasma.

Similarly to Kvantum, Plasma themes are defined using SVGs. If you would like to know how to make one, I'm doing a guide on my youtube channel.

Again, a Plasma Style can choose to follow the colorscheme or ignore it. If it does follow the colorscheme, it will display a round rainbow in the theme selector. This is why there's a Breeze theme, a Breeze Light one and a Breeze Dark one: Breeze follows coloscheme, Breeze Light forces a light coloscheme, and Breeze Dark forces a dark coloscheme.

Here's an example of a Plasma Theme called ROUNDED. (That's the name, yeah.)


Here you can define the colorscheme of everything. Of course, it will be up to single components (App Style, Plasma Style, Titlebar) to decide whether to actually follow the coloscheme or now.

The coloscheme is one of the few components that the users can edit straight away. Just click on the edit icon of any existing coloscheme and KColorSchemeEditor will pop up. I've heard there might be a redesign of this dialog coming up!

Window Decoration

This one customize the titlebar, which is the component with the app name and the minimize, maximize, close buttons. I'll admit I'm a bit more ignorant of how this one works: I think there are two types of decorations, one written in C++ and another mostly in QML through Auroræ. Again, the decoration can decide whether to follow the colorscheme or not.

In this KCM you can also decide how to customize the buttons in the titlebar: whether to keep the minimize button or ditch it, but also whether to have the App Menu as a button there, have a keep above button, a shade one, etc.

Here's an example of a third party decoration, FormaN:


This is where the various icons are customized. These are used both in apps and in Plasma; although the Plasma Theme can override some of them. In this KCM you can also customize the icon size in various places: toolbars, dialogs, the panel.

Icons are actually usually compatible with GTK and other DEs as well. However, there might be missing icons!


Again, this one is pretty intuitive. In this KCM you can also customize the size of the cursor.

Here's Volantes, a third party cursor theme:

Splash Screen

Here you can customize the loading screen to use when you are logging in Plasma. You can actually choose to have no loading screen at all, but you will be displayed a Plasma that might not be ready (e.g.: Panel not shown yet).

These are written in QML.

Here's an example of a third party splash screen, Quarks: (gotta say, it's beautiful. Highly recommended)

Desktop Effects

There are various “effects” that Kwin – the window manager – can provide to the user. These are usually graphical: animations, blur, transparency, etc. I cannot go over them all, but I'll say that you can find more of them on the store, such as the grayscale effect and a rubberband maximize animation. The default ones are mostly C++, but it's possible to also write QML ones.

Kwin Scripts

These are scripts that can interact with your windows in various ways. A common exaple are tiling scripts, that arrange your windows for you. But there are many others: a shortcut to minimize and restore windows, forcing blur behind windows, grouping windows, etc. These can use the JS API.

Wallpaper Types

Well, it's not like a static image is for everyone. A wallpaper can be many things: a slideshow, a vide. In general, these plugins define how wallpaper looks and behaves: some might blur it when a window is opened (highest rated one), some might use shaders for cool 3D animations, some tint the wallpaper based on the hour of the day.

Wallpaper Image

Yes, there's a section on the KDE Store for these as well.

Anything else?

Well, yeah, it just doesn't stop here. However, other sections are less used and I'm not sure I remember them all. So I'll stop here! Hopefully I've made stuff a bit more clear. Also, I've only showed sections that you can customize with third party themes or plugins, but of course there are so many other things you can customize Plasma!

That's all, see you!

My name's Niccolò Venerandi, my website is here, you can contact me on Telegram as [at] veggero and you can support my work on KDE on liberapay, paypal or patreon.

Season of KDE 2021 and my first time blogging

Saturday 20th of February 2021 03:17:17 PM
Season of KDE 2021 and my first ever blog

Hi everyone! I am Rohan Asokan. I am currently doing my undergraduate studies in Computer Science in IIITH, a university in India. I can program quite proficiently in C, C++, Javascript, Python and have some knowing some basic Q#, R, FORTRAN, QBasic (I don’t think even primitve coders know about this anymore). I am interested in AI/ML (obviously, cuz that seems to be trend anyways) and any tech that seems really simple but is infact as good as it gets, out of which my favourite is Ray Tracing and Ray Marching - I do have some projects on this, do checkout my github.

I am a fan of camelCase and PascalCase, so ig that says a lot about me. ;)

I am also a decent full-stack developer and am well versed with some common javascript and python frameworks for full stack development - Flask, Django, Express.js, Node.js, React.js, Vue.js, Svelte.js..(Guess I’ll just stop there out of modesty).

I am also quite a bit of a gamer myself - ping me if you wanna play a few matches of Valorant or Rocket League even.

I am quite a curious soul, looking for all kinds of stuff to get myself into. And by came SoK, and I just couldn’t keep myself from getting my feet wet and that’s how the story begins. One project seemed to impress me quite a lot - Kalk, a calculator built over the Kirigami Framework and that is exactly what I am working on. But, what happened next is the story for another day and until then have a great time.

Some Socials:


Twitter - Not very active on it though

Github - I am developer afterall, so this counts as a social ;)


Discord - arena_grenade#7429

unique_ptr difference between libstdc++ and libc++ crashes your application

Saturday 20th of February 2021 01:51:48 PM
KDE Project:

Thanks to the KDE FreeBSD CI, which runs our code on top of libc++, we discovered an interesting difference between libstdc++ and libc++'s implementation of unique_ptr. This is quite unexpected, and the actual result for users is even more unexpected: it can lead to crashes in specific situations. This happens when a widget -- using unique_ptr for its d pointer, as is customary these days -- installs an event filter. That event filter will be triggered during destruction of child widgets (at least for the QEvent::Destroy event, I've also seen it with QEvent::Leave events for instance). And, depending on how the event filter is written, it might use the d pointer of the widget, possibly before checking the event type. That's where it gets interesting: the libc++ implementation of unique_ptr sets it to null *before* calling the destructor (because it's implemented in terms of reset(nullptr);. In libstdc++ however, unique_ptr's destructor just calls the destructor, its value remains valid during destruction.

Here's a testcase of the crash, extracted from the KIO code for which you can see the fix here. It works with gcc/libstdc++, and crashes with clang/libc++, because MyWindow::eventFilter() is using a d pointer that is null already.
In this particular case the fix is easy, testing the event type before anything else. That's good practice anyway, for performance reasons. But there are other cases, where the situation was a bit different and the solution was to remove the event filter upon destruction.

I like unique_ptr, but beware of the interaction with event filters...

Join the KDE e.V.

Saturday 20th of February 2021 01:13:00 PM

The KDE e.V. is a registered non-profit organization that represents the KDE Community in legal and financial matters.

The KDE e.V. is for example responsible for paying the servers that run our GitLab instance and all our other web services. The e.V. takes care of sponsoring developer sprints and contributor travel costs, too.

You did participate at some Akademy? This wouldn’t have been possible without the KDE e.V., both by sponsoring and helping to organize the event!

If you are an active KDE contributor, consider to join the e.V. to be able to vote on its future direction. This includes very important things like the KDE Free Qt Foundation.

At the moment, already a lot of our KDE community members are e.V. members, too.

But naturally, as people enter and leave our community, we need to outreach to new contributors to join the e.V.. The e.V. shall stay a representation of the currently active KDE contributors/community and not some club of KDE oldies =)

Just take a look at the 2002 e.V. meeting group photo below:

A few of this people are still active, some of them many of the current active KDE community members have never heard of. The group pictured above isn’t that diverse either. It looks a bit like you take a group photo of some computer science course in a university in Germany of that time. And yes, I am on that photo, too (as usual, wrongly written as Cullman, like my nice county). I actually fished that picture out of my private data storage .P

Let’s take a look at the Akademy 2020 group photo below (CC BY 4.0, created by the Akademy team):

This looks a lot more like the KDE community we all know and love. Therefore it would be fantastic if active people take care to join the e.V., too!

If you want to join, just take a short look at this guide.

You will need some e.V. member that suggests you, I assume you will know someone from the e.V. members list to ask to do so.

This week in KDE: Plasma 5.21 is finally here!

Saturday 20th of February 2021 05:09:06 AM

This week we released Plasma 5.21 and have been hard at work fixing the bugs you fine folks have found with it.

Web Review, Week 2021-07

Friday 19th of February 2021 10:02:20 PM

We’re now well into February 2021 and I didn’t even do a proper recap of 2020. Needless to say I’ve been quite a bit neglecting this space… at the same time I’ve been reading quite a lot (as usual) and I have been posting said articles on the Fediverse (with a bot cross-posting to Twitter as well). Very often I posted just the title and they’d happen in batches which was probably annoying.

That’s why for 2021 I think it’s time for a new experiment in this space. I’ll try to post a weekly web review here. Obviously topics of choice will be Free Software but I might cover other areas which might be a bit more surprising (management, business, sociology… you name it). Hopefully that will make it more interesting than if I stay too focused.

Without further ado… let’s go for my first web review!

FOSDEM 2021 - Open Source is More Than Just a License

Tags: tech, free-software, criticism, ethics

Very interesting FOSDEM talk which I see as part of the debate about “Open Source as just licenses”/“Post Open Source”. This shows very well how the OSD is very narrow and that their should be a better alignment between what is labelled FOSS and the actual customs. This is something which licenses alone can’t capture.

Acceptance of Pattern Matching PEPs 634, 635, 636, Rejection of PEPs 640 and 642 - python-committers -

Tags: python

Looking forward to Python 3.10 in October which will finally get pattern matching!

C++ | unique_ptr, shared_ptr, weak_ptr, or reference_wrapper for class relationships - nextptr

Tags: c++

Interesting use of reference_wrapper… I wonder why it didn’t occur to me earlier as a good use to deal with ownership like that.

Au-delà des licences libres ? · Bastien Guerry - Informatique et liberté

Tags: tech, free-software, criticism, ethics, economics

This is a bit of a less rigorous counterpoint of the paper from Nathan Schneider “the tyranny of openness”. I think it’s interesting to see that despite a few strawmen it reaches a somewhat similar conclusion: it’s not just about licenses, it’s also about customs”.

The Clubhouse App and the Rise of Oral Psychodynamics - Insight

Tags: tech, culture, literacy

Interesting account on orality vs literacy. Never occurred to me before this article that orality could be written (somewhat Twitter) and that literacy could be spoken (for example news anchors). This is why you sometimes end up with a) people talking like a book or b) people writing like they talk.

Reclaim Your Face - Reclaim Your Face

Tags: tech

Petition for a new low to regulate facial recognition

You are invited to contribute to the future « Contributing to Free-Libre Open Source Software » MOOC by Télécom Paris and Framasoft – Framablog

Tags: tech, free-software, mooc, framasoft

You know a thing or two about contributing for FOSS? You’d like that knowledge to be passed on? Here is your chance with that MOOC in development.

LAPD Asked for Ring Surveillance Video Related to Black Lives Matter Protests

Tags: tech, surveillance, capitalism, ring, amazon

Some more example of surveillance capitalism as a mean to social control. Are we surprised? Not really… still they all need to be documented and known to the public.

The Tyranny of Openness: What Happened to Peer Production?

Tags: tech, free-software, criticism, feminism, ethics, economics

This is a great paper. Truly mind bending in my opinion. In my case it helped me pinpoint things in the FOSS movement which I felt were there while being unable to clearly explain them. This is a clear enabler and explains why we need to move beyond the “licensing and only licensing” position the FOSS movement is in, it’s the only chance to finally encompass ethics and economics which are both very much needed. It’s the only chance to converge toward proper commons without the faked meritocracy distortion.

I could go on much longer… but it’s not the point here. Go read it!

And if you’re still wondering “why not more women in the FOSS movement?” or “why are women mostly in community stewardship roles?”, well there are answers for that too.

I’ll close with two quotes which I found really important in that paper:

“Ehmke stresses that information ethics and social ethics need not be mutually exclusive but that they should coexist. She frequently celebrates what Open Source has achieved through information freedoms and hopes for more through the addition of social ethics. […] Yet this evolution means being open in new ways and more closed in others.”

”“The frame of social provisioning reveals how the unrest in Open Source emerges from a cluster of basic concerns that peer production communities have taught themselves to treat as invisible or inadmissible. It remains to be seen whether Open Source can stretch to incorporate more of its participants’ humanity.”

Basic Intro to Elliptic Curve Cryptography - Qvault

Tags: tech, cryptography, security

Nice and very approachable introduction to the use of elliptic curves for cryptography. I think I finally understood properly how those work. :-)

CSS transitions and hover animations, an interactive guide

Tags: tech, css, animation, design

Very nice introduction to animations with CSS. Per usual for me coming from a QML background it often sounds more involved than it should be but overall nice facilities are now provided straight from the browser.

Ekylibre convertit les agriculteurs au logiciel libre | Les Echos

Tags: free-software, agriculture

Article in French

Very nice to see some initiative toward providing Free Software for agriculture use. I have some concerns regarding the type of agriculture which will use this though.

Critical Thinking isn’t Just a Process - Insight

Tags: politics, epistemology, science, lies, authoritarianism

As usual with Zeynep Tufekci a mind bending article about the heuristics one might use at times when official institutions are simply trying to lie to your face and when they switch to authoritarian mode. This is indeed times when it becomes very hard to trust information and make sense of the world… how to overcome that? Well there are a few examples in that article.

Ces pays sont toujours officiellement en guerre, et ils l’ont oublié |

Tags: history, surprising, war

Article in French

Surprising history little article about how even on something as important as declaring a war as over, sometimes simply… we forget.

Is Westernisation fact or fiction? The case of Japan and the US | Aeon Essays

Tags: history, japan, culture

Fascinating piece on how Japan dealt with the arrival of westerners. But also how the westerners did (and still) perceive the relationship with a lot of delusion due to arrogance and racism biases. It is a good example on how the winners tend to attempt to rewrite history.

It also shows how Japan somewhat turned into an inspiration for other Asian countries. I learned a lot.

Le gouvernement va créer une mission logiciels libres et communs numériques - ZDNet

Tags: tech, politics, free-software

Article in French

For once a step in the right direction the creation of this mission. It goes in the right direction indeed but let’s hope it’ll be respected.

Droit à la réparation : les fermiers obligés de pirater le firmware de leurs propres tracteurs en raison de l’enfermement propriétaire des constructeurs, l’UE et les USA œuvrent à changer la donne

Tags: tech, repair, vendor-lockin, embedded

Article in French

One more article on the preposterous vendor lock-in we experience with some devices (and yes, nowadays a tractor is yet another device with embedded code). Or why right to repair becomes an important freedom to defend.

Uncovering a 24-year-old bug in the Linux Kernel – Skroutz Engineering

Tags: tech, linux, tcp, bug

Interesting exploration for a low level bug in the TCP stack. A proof that it’s not always the network being at fault. ;-)

Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies | by Alex Birsan | Feb, 2021 | Medium

Tags: tech, security, supply-chain

Very interesting new supply chain attack. Shows one of the big downsides of the very convenient packaging tools everyone uses lately. Interestingly in that particular case it seems less risky only with the publicly available components, it’s in the context of private repositories that the risk arises. Root cause seems to be the lack of control on how those tools resolve between private and public repositories.

Developers mentoring other developers: practices I’ve seen work well - The Pragmatic Engineer

Tags: tech, mentoring

Lots of good advice on how mentoring can be done. There are enough of them that you can pick and choose what makes sense for your own context. I like this kind of toolbox approaches.

Technical Mentorship Reimagined: Time-bound and No Awkward Asks Necessary — Culture

Tags: tech, mentoring

Interesting ideas on how mentorship can be organized in a company. This is obviously examples coming from a specific context but still, the whole time bound and matchmaking approach is a good food for thought. It sounds a bit too mechanical and systematic for my taste but I guess it makes sense in their context. A few good extra resources provided as well.

Hope this will be useful to someone. Depending how this goes in the coming weeks I might adjust the frequency, we’ll see. Bye for now!

More in Tux Machines

Audiocasts/Shows: Open Source Security Podcast, Linux Action News, and SMLR

Review: Artix Linux in 2021

Artix Linux is a fork (or continuation as an autonomous project) of the Arch-OpenRC and Manjaro-OpenRC projects. Artix Linux offers a lightweight, rolling-release operating system featuring alternative init software options, including OpenRC, runit, and s6. The distribution is available in many editions, including Base, Cinnamon, LXDE, LXQt, MATE, KDE Plasma and Xfce. With all of the desktop options, combined with the available init choices, there are 21 editions, not including community spins from which to choose. All editions appear to be built for 64-bit (x86_64) machines. Picking randomly, I selected Artix's Plasma edition featuring the runit init software. The download for this edition is is 1.3GB. Browsing the other editions it looks like most flavours are about 1.1GB to 1.3GB in size, though the minimal Base edition is a compact 618MB. The project's live media boots to the KDE Plasma desktop. On the desktop we find multiple documentation and README icons. There is also an icon for launching the system installer. The default layout places a panel at bottom of the screen where we can find the application menu and system tray. The default wallpaper is a soft blue while the theme for windows and menus is dark with high contrast fonts. [...] Artix Linux is one of those distributions I really enjoy using and yet struggle to review in a meaningful way because it doesn't really go out of its way to introduce new or exciting features and everything works smoothly. The distribution is wonderfully easy to install, offers top-notch performance, and is unusually light on resources. Artix is somewhat minimal, but still ships enough software to be immediately useful right out of the gate. We can browse the web, install packages, view files, and play videos. Meanwhile the application menu isn't cluttered with a lot of extras. The developers clearly expect us to install the functionality we need, while doing a really good job of providing enough for the desktop environment to feel base-line useful right from the start. Artix does a nice job of balancing performance and functionality while also juggling ease of use against not getting in the way. There is a little documentation, but no initial welcome screen or configuration wizards that might distract the user. The one piece I felt was missing was a graphical package manager which would have made it easier to build the extra functionality I wanted on top of the base distribution. However, that one piece aside, I felt as though Artix was really well designed and put together, at lease for someone like me. It's not a distribution geared toward beginners, it's not a "first distro". It is a bit minimal and requires command line knowledge. However, for someone with a little experience with Linux, for someone who doesn't mind the occasional trip to the command line or installing new applications as needed, then Artix provides an excellent experience. It's fast, light, looks (in my opinion) great with the default theme, and elegantly walks the line between minimalism and having enough applications ready to go out of the box to be immediately useful. I'm unusually impressed with how smooth and trouble-free my experience was with this distribution and the fact it offers such a range of desktop and init diversity is all the more appealing. Read more

Alpine Linux Review: Ultimate Distro for Power Users

Alpine Linux is gathering a lot of attention because of its super-small size and focus on security. However, Alpine is different from some of the other lightweight distros we covered on FOSSLinux. It isn’t your typical desktop distribution as it is terminal-based like Arch and is marketed as a “general purpose distro.” It is currently widely adopted as a Docker container thanks to its ultra-small footprint. However, it can be used for all sorts of Linux deployments that benefit from small, resource-efficient Linux distros. Now, that statement might feel too generic. But don’t worry, as we have put together an in-depth and comprehensive review of Alpine Linux, giving you a detailed look at what it has under the hood and how to use it. As such, by the end, you should have a clear understanding of whether you should consider Alpine Linux as your next Linux distro. So without further ado, let’s dive in. Read more

Programming Leftovers

  • How to manipulate strings in bash

    Without explicit support for variable types, all bash variables are by default treated as character strings. Therefore more often than not, you need to manipulate string variables in various fashions while working on your bash script. Unless you are well-versed in this department, you may end up constantly coming back to Google and searching for tips and examples to handle your specific use case. In the spirit of saving your time and thus boosting your productivity in shell scripting, I compile in this tutorial a comprehensive list of useful string manipulation tips for bash scripting. Where possible I will try to use bash's built-in mechanisms (e.g., parameter expansion) to manipulate strings instead of invoking external tools such as awk, sed or grep. If you find any missing tips, feel free to suggest it in the comment. I will be happy to incorporate it in the article.

  • Python Generators

    Python generators are very powerful for handling operations which require large amount of memory.

  • We got lucky

    If you’re having enough production incidents to be able to evaluate your preparation, you’re probably either unlucky or unprepared ;) If you have infrequent incidents you may be well prepared but it’s hard to tell. Chaos engineering experiments are a great way to test your preparation, and practice incident response in a less stressful context. It may seem like a huge leap from your current level of preparation to running automated chaos monkeys in production, but you don’t need to go straight there. Why not start with practice drills? You could have a game host who comes up with a failure scenario. You can work up to chaos in production.

  • React Testing Library – Tutorial with JavaScript Code Examples

    This post will help you to learn what React Testing Library is, and how you can use it to test your React application. This tutorial will assume you already know some basic JavaScript and understand the basics of how React works. React Testing Library is a testing utility tool that's built to test the actual DOM tree rendered by React on the browser. The goal of the library is to help you write tests that resembles how a user would use your application, so that you'll have more confidence that your application work as intended when a real user do use it.

  • Why I Moved From Ops to DevOps (and why you might want to)