Python Code Review Service

Recently I analyzed my OpenHub profile which I try to keep up-to-date with all contributions I have made to the different open source projects over the years. I was amazed that it has already been 15 years since my first commit to an open source project. Many commits and involvements to different projects have followed like becoming the main maintainer of Django REST framework JSON:API project or creating the Diodon Clipboard Manager to only mention two.

Open Hub profile for Oliver Sauder

During those years I have worked in several software engineering teams and reviewed loads of different pull requests and had lots of sessions and discussion how a project respectively its code can be improved. I was wondering how could I use this experience and combine it with the compassion for open source? So I stumbled upon the Fiverr platform, a place to offer or find freelance services. I have decided that I want to offer a Python Code Review service there and hopefully through this support be able to continue or strengthen my involvement in various open source projects.

So if you are curious and you have a Python project you would like to to review, check out my gigs below.

Long outstanding Diodon issues resolved

It is amazing how time flies. Since the first version of Diodon more than 10 years pasted already. Lately because of lack of time I haven’t shown Diodon too much love. I have kept using it on my machine all way long though and addressed all issues which bothered me on my setup. Those issues mainly affected packaging. I know though that there have been two very annoying bugs dating back to 2015 and 2016. Those have been fairly frustrating especially for new users. I finally got around to look into those in more detail. With this post I want to give you some background story and show you how you can install the new version 1.12.0 which hopefully fixes those long outstanding issues for you as well.

Menu pops up very rarely on hotkey press

In version 1.4.0 registering of a keybinding to open Diodon per shortcut has been moved to use the functionality available in the respective desktop environment (see previous post). This worked very well at the time for Gnome and Unity but unfortunately not always that well with other desktop environments. Through the years Unity basically disappeared and Gnome made changes which made using keybinding with Diodon unstable.

Basically the issue is that there is a race condition between Gtk and X11 events. So depending which one will be faster the clipboard history pops up or not. In the past I tried to overcome this with a sleep of the process as I assumed the X11 events are happening outside the Diodon process. This somewhat improved the situation but not always. So what I’ve now did is to use a timeout handler instead of a sleep which allows other events to be processed before the clipboard history opens. I have tested this and the hotkey press worked without any problems. I hope it will work for you as well. If you still have issues with clipboard history rarely poping up on hotkey press with version 1.12.0 or higher, let me know in below comments. Do not forget to mention what desktop environment you use.

No clipboard items shown on the very first run

I haven’t paid much attention to this issue because I thought there is an easy workaround. After the installation a simple restart of Diodon is enough and clipboard items will appear in the clipboard history from that point onward. When looking at the reviews in Gnome Software I noticed though that for new users this has been a very frustrating issue. It seemed Diodon did not work and they quickly uninstalled it.

This issue had been a complicated one to fix as well as the error was not in Diodon itself but in the library Zeitgeist which we use to store clipboard items. The issue occurred when Diodon started and the Zeitgeist database file at ~/.local/share/zeitgeist/activity.sqlite had not been initialized yet. In such a situation Zeitgeist Daemon did notify Diodon of new events but when Diodon wanted to read those new events (aka clipboard items) it would get none.

It turned out that libzeitgeist has a local database reader per default enabled. This means the Diodon process directly read from the sqlite database file. Because on the very first run the database schema had not been initialized yet by the Zeitgeist Daemon Diodon got an empty database and not notice the changes which came after it. Thankfully there is an environment variable ZEITGEIST_LOG_DIRECT_READ when set to 0 disables the local reader and the error disappears. The new Diodon version sets this now per default when started.

Diodon Version 1.12.0

To get the version with the above mentioned bug fixes applied you can either download the new release per tarball or install it through the ppa with the following commands:

sudo apt-add-repository ppa:diodon-team/stable
sudo apt-get update
sudo apt-get install diodon
# and for all Unity users there is also a scope
sudo apt-get install unity-scope-diodon

As always any feedback is very welcome. And if you feel like you would like to help maintain Diodon please contact me by leaving a comment below. Any help is very appreciated.

Diodon 1.10.0 making primary selection support usable

There is another release of Diodon out the door tagged 1.10.0. This times it comes with a fix to an old issue that when using the primary selection feature it uses a lot of CPU respectively battery. If you are a user of primary selection support check this release out and let us know what you think. To be noted though is that Diodon now fully relies on GTK+ to detect primary selection, so it might be that some selection are not detected as before. However those are hopefully edge cases and are outwayed by the decreased battery usage.

Additionally in this release we switched to Ayatana AppIndicator. This package is available in more distributions then the former used AppIndicator and therefore should make packaging easier.

To get started beside installing newest version from git you can either download new release as tarball or install it through the ppa with the following commands:

sudo apt-add-repository ppa:diodon-team/stable
sudo apt-get update
sudo apt-get install diodon
# and for all Unity users there is also a scope
sudo apt-get install unity-scope-diodon

Diodon 1.9.0, storing clipboard items in memory and more

After a longer time of silence the new Diodon release 1.9.0 has just been released. This release is a maintenance release which allows Diodon to be build in 2020 and beyond.

Besides support for Valac 0.46+ and updated translations, the build system has been changed to meson which is also commonly used in the Gnome community. This change should make the work easier for package maintainers and new contributors alike.

To get started beside installing newest version from git you can either download new release as tarball or install it through the ppa with the following commands:

sudo apt-add-repository ppa:diodon-team/stable
sudo apt-get update
sudo apt-get install diodon
# and for all Unity users there is also a scope
sudo apt-get install unity-scope-diodon

To note is that with this release Xenial is not supported anymore, but older versions of Diodon will still work of course.

Storing clipoard items in memory

This is not a new feature but a very commonly asked question which I wanted to address. Diodon uses Zeitgeist to store clipboard items. Per default Zeitgeist persists all events in a database. This means clipboard items are also persisted and available across reboots. Some concerns have been raised that copied passwords are also stored on the filesystem.

As explained in this blog post it is possible to exclude certain application copy events like the once from password managers to be added to the clipboard history. However this might not always be sufficient for you. So what you can do instead is to make Zeitgeist store all events in memory. This means once you reboot your machine the clipboard history will be empty again.

To enable this memory storage I recommend you first clear your clipboard history and then execute the following command in a terminal:

echo "ZEITGEIST_DATABASE_PATH=:memory:" >> ~/.pam_environment

After a reboot the memory storage should be activated.

Comments

Previously on esite.ch the Disqus comment system had been used. As the plugin constantly broke the theme and Disqus started adding ads I have decided to switch back to the common WordPress comment system. Unfortunately Disqus only allowed to import comments from the last year so this means there won’t be any older comment visible anymore. However I want to encourage you to continue writing comments as your feedback is very valuable.