-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-</description>
- </item>
-
- <item>
- <title>Is the desktop recommending your program for opening its files?</title>
- <link>https://people.skolelinux.org/pere/blog/Is_the_desktop_recommending_your_program_for_opening_its_files_.html</link>
- <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Is_the_desktop_recommending_your_program_for_opening_its_files_.html</guid>
- <pubDate>Sun, 29 Jan 2023 11:00:00 +0100</pubDate>
- <description><p>Linux desktop systems
-<a href="https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html">have
-standardized</a> how programs present themselves to the desktop
-system. If a package include a .desktop file in
-/usr/share/applications/, Gnome, KDE, LXDE, Xfce and the other desktop
-environments will pick up the file and use its content to generate the
-menu of available programs in the system. A lesser known fact is that
-a package can also explain to the desktop system how to recognize the
-files created by the program in question, and use it to open these
-files on request, for example via a GUI file browser.</p>
-
-<p>A while back I ran into a package that did not tell the desktop
-system how to recognize its files and was not used to open its files
-in the file browser and fixed it. In the process I wrote a simple
-debian/tests/ script to ensure the setup keep working. It might be
-useful for other packages too, to ensure any future version of the
-package keep handling its own files.</p>
-
-<p>For this to work the file format need a useful MIME type that can
-be used to identify the format. If the file format do not yet have a
-MIME type, it should define one and preferably also
-<a href="https://www.iana.org/assignments/media-types/media-types.xhtml">register
-it with IANA</a> to ensure the MIME type string is reserved.</p>
-
-<p>The script uses the <tt>xdg-mime</tt> program from xdg-utils to
-query the database of standardized package information and ensure it
-return sensible values. It also need the location of an example file
-for xdg-mime to guess the format of.</p>
-
-<pre>
-#!/bin/sh
-#
-# Author: Petter Reinholdtsen
-# License: GPL v2 or later at your choice.
-#
-# Validate the MIME setup, making sure motor types have
-# application/vnd.openmotor+yaml associated with them and is connected
-# to the openmotor desktop file.
-
-retval=0
-
-mimetype="application/vnd.openmotor+yaml"
-testfile="test/data/real/o3100/motor.ric"
-mydesktopfile="openmotor.desktop"
-
-filemime="$(xdg-mime query filetype "$testfile")"
-
-if [ "$mimetype" != "$filemime" ] ; then
- retval=1
- echo "error: xdg-mime claim motor file MIME type is $filemine, not $mimetype"
-else
- echo "success: xdg-mime report correct mime type $mimetype for motor file"
-fi
-
-desktop=$(xdg-mime query default "$mimetype")
-
-if [ "$mydesktopfile" != "$desktop" ]; then
- retval=1
- echo "error: xdg-mime claim motor file should be handled by $desktop, not $mydesktopfile"
-else
- echo "success: xdg-mime agree motor file should be handled by $mydesktopfile"
-fi
-
-exit $retval
-</pre>
-
-<p>It is a simple way to ensure your users are not very surprised when
-they try to open one of your file formats in their file browser.</p>
-
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-</description>
- </item>
-
- <item>
- <title>Opensnitch, the application level interactive firewall, heading into the Debian archive</title>
- <link>https://people.skolelinux.org/pere/blog/Opensnitch__the_application_level_interactive_firewall__heading_into_the_Debian_archive.html</link>
- <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Opensnitch__the_application_level_interactive_firewall__heading_into_the_Debian_archive.html</guid>
- <pubDate>Sun, 22 Jan 2023 23:55:00 +0100</pubDate>
- <description><p>While reading a
-<a href="https://sneak.berlin/20230115/macos-scans-your-local-files-now/">blog
-post claiming MacOS X recently started scanning local files and
-reporting information about them to Apple</a>, even on a machine where
-all such callback features had been disabled, I came across a
-description of the Little Snitch application for MacOS X. It seemed
-like a very nice tool to have in the tool box, and I decided to see if
-something similar was available for Linux.</p>
-
-<p>It did not take long to find
-<a href="https://github.com/evilsocket/opensnitch">the OpenSnitch
-package</a>, which has been in development since 2017, and now is in
-version 1.5.0. It has had a
-<a href="https://bugs.debian.org/909567">request for Debian
-packaging</a> since 2018, but no-one completed the job so far. Just
-for fun, I decided to see if I could help, and I was very happy to
-discover that
-<a href="https://github.com/evilsocket/opensnitch/issues/304">upstream
-want a Debian package too</a>.</p>
-
-<p>After struggling a bit with getting the program to run, figuring
-out building Go programs (and a little failed detour to look at eBPF
-builds too - help needed), I am very happy to report that I am
-sponsoring upstream to maintain the package in Debian, and it has
-since this morning been waiting in NEW for the ftpmasters to have a
-look. Perhaps it can get into the archive in time for the Bookworm
-release?</p>
-
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-</description>
- </item>
-
- <item>
- <title>LinuxCNC MQTT publisher component</title>
- <link>https://people.skolelinux.org/pere/blog/LinuxCNC_MQTT_publisher_component.html</link>
- <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/LinuxCNC_MQTT_publisher_component.html</guid>
- <pubDate>Sun, 8 Jan 2023 19:30:00 +0100</pubDate>
- <description><p>I watched <a href="https://yewtu.be/watch?v=jmKUV3aNLjk">a 2015
-video from Andreas Schiffler</a> the other day, where he set up
-<a href="https://linuxcnc.org/">LinuxCNC</a> to send status
-information to the MQTT broker IBM Bluemix. As I also use MQTT for
-graphing, it occured to me that a generic MQTT LinuxCNC component
-would be useful and I set out to implement it. Today I got the first
-draft limping along and submitted as
-<a href="https://github.com/LinuxCNC/linuxcnc/pull/2253">a patch to the
-LinuxCNC project</a>.</p>
-
-<p>The simple part was setting up the MQTT publishing code in Python.
-I already have set up other parts submitting data to my Mosquito MQTT
-broker, so I could reuse that code. Writing a LinuxCNC component in
-Python as new to me, but using existing examples in the code
-repository and the extensive documentation, this was fairly straight
-forward. The hardest part was creating a automated test for the
-component to ensure it was working. Testing it in a simulated
-LinuxCNC machine proved very useful, as I discovered features I needed
-that I had not thought of yet, and adjusted the code quite a bit to
-make it easier to test without a operational MQTT broker
-available.</p>
-
-<p>The draft is ready and working, but I am unsure which LinuxCNC HAL
-pins I should collect and publish by default (in other words, the
-default set of information pieces published), and how to get the
-machine name from the LinuxCNC INI file. The latter is a minor
-detail, but I expect it would be useful in a setup with several
-machines available. I am hoping for feedback from the experienced
-LinuxCNC developers and users, to make the component even better
-before it can go into the mainland LinuxCNC code base.</p>
-
-<p>Since I started on the MQTT component, I came across
-<a href="https://yewtu.be/watch?v=Bqa2grG0XtA">another video from Kent
-VanderVelden</a> where he combine LinuxCNC with a set of screen glasses
-controlled by a Raspberry Pi, and it occured to me that it would
-be useful for such use cases if LinuxCNC also provided a REST API for
-querying its status. I hope to start on such component once the MQTT
-component is working well.</p>
-
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-</description>
- </item>
-
- <item>
- <title>ONVIF IP camera management tool finally in Debian</title>
- <link>https://people.skolelinux.org/pere/blog/ONVIF_IP_camera_management_tool_finally_in_Debian.html</link>
- <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/ONVIF_IP_camera_management_tool_finally_in_Debian.html</guid>
- <pubDate>Sat, 24 Dec 2022 08:00:00 +0100</pubDate>
- <description><p>Merry Christmas to you all. Here is a small gift to all those with
-IP cameras following the <a href="https://www.onvif.org/">ONVIF
-specification</a>. There is finally a nice command line and GUI tool
-in Debian to manage ONVIF IP cameras. After working with upstream for
-a few months and sponsoring the upload, I am very happy to report that
-the <a href="https://tracker.debian.org/libonvif">libonvif package</a>
-entered Debian Sid last night.</p>
-
-<p>The package provide a C library to communicate with such cameras, a
-command line tool to locate and update settings of (like password) the
-cameras and a GUI tool to configure and control the units as well as
-preview the video from the camera. Libonvif is available on Both
-Linux and Windows and the GUI tool uses the Qt library. The main
-competitors are non-free software, while libonvif is GNU GPL licensed.
-I am very glad Debian users in the future can control their cameras
-using a free software system provided by Debian. But the ONVIF world
-is full of slightly broken firmware, where the cameras pretend to
-follow the ONVIF specification but fail to set some configuration
-values or refuse to provide video to more than one recipient at the
-time, and the onvif project is quite young and might take a while
-before it completely work with your camera. Upstream seem eager to
-improve the library, so handling any broken camera might be just <a
-href="https://github.com/sr99622/libonvif/">a bug report away</a>.</p>
-
-<p>The package just cleared NEW, and need a new source only upload
-before it can enter testing. This will happen in the next few
-days.</p>
-
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-</description>
- </item>
-
- <item>
- <title>Managing and using ONVIF IP cameras with Linux</title>
- <link>https://people.skolelinux.org/pere/blog/Managing_and_using_ONVIF_IP_cameras_with_Linux.html</link>
- <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Managing_and_using_ONVIF_IP_cameras_with_Linux.html</guid>
- <pubDate>Wed, 19 Oct 2022 12:30:00 +0200</pubDate>
- <description><p>Recently I have been looking at how to control and collect data
-from a handful IP cameras using Linux. I both wanted to change their
-settings and to make their imagery available via a free software
-service under my control. Here is a summary of the tools I found.</p>
-
-<p>First I had to identify the cameras and their protocols. As far as
-I could tell, they were using some SOAP looking protocol and their
-internal web server seem to only work with Microsoft Internet Explorer
-with some proprietary binary plugin, which in these days of course is
-a security disaster and also made it impossible for me to use the
-camera web interface. Luckily I discovered that the SOAP looking
-protocol is actually following <a href="https://www.onvif.org/">the
-ONVIF specification</a>, which seem to be supported by a lot of IP
-cameras these days.</p>
-
-<p>Once the protocol was identified, I was able to find what appear to
-be the most popular way to configure ONVIF cameras, the free software
-Windows tool named
-<a href="https://sourceforge.net/projects/onvifdm/">ONVIF Device
-Manager</a>. Lacking any other options at the time, I tried
-unsuccessfully to get it running using Wine, but was missing a dotnet
-40 library and I found no way around it to run it on Linux.</p>
-
-<p>The next tool I found to configure the cameras were a non-free Linux Qt
-client <a href="https://www.lingodigit.com/onvif_nvcdemo.html">ONVIF
-Device Tool</a>. I did not like its terms of use, so did not spend
-much time on it.</p>
-
-<p>To collect the video and make it available in a web interface, I
-found the Zoneminder tool in Debian. A recent version was able to
-automatically detect and configure ONVIF devices, so I could use it to
-set up motion detection in and collection of the camera output. I had
-initial problems getting the ONVIF autodetection to work, as both
-Firefox and Chromium <a href="https://bugs.debian.org/1001188">refused
-the inter-tab communication</a> being used by the Zoneminder web
-pages, but managed to get konqueror to work. Apparently the "Enhanced
-Tracking Protection" in Firefox cause the problem. I ended up
-upgrading to the Bookworm edition of Zoneminder in the process to try
-to fix the issue, and believe the problem might be solved now.</p>
-
-<p>In the process I came across the nice Linux GUI tool
-<a href="https://gitlab.com/caspermeijn/onvifviewer/">ONVIF Viewer</a>
-allowing me to preview the camera output and validate the login
-passwords required. Sadly its author has grown tired of maintaining
-the software, so it might not see any future updates. Which is sad,
-as the viewer is sightly unstable and the picture tend to lock up.
-Note, this lockup might be due to limitations in the cameras and not
-the viewer implementation. I suspect the camera is only able to
-provide pictures to one client at the time, and the Zoneminder feed
-might interfere with the GUI viewer. I have
-<a href="https://bugs.debian.org/1000820">asked for the tool to be
-included in Debian</a>.</p>
-
-<p>Finally, I found what appear to be very nice Linux free software
-replacement for the Windows tool, named
-<a href="https://github.com/sr99622/libonvif/">libonvif</a>. It
-provide a C library to talk to ONVIF devices as well as a command line
-and GUI tool using the library. Using the GUI tool I was able to change
-the admin passwords and update other settings of the cameras. I have
-<a href="https://bugs.debian.org/1021980">asked for the package to be
-included in Debian</a>.</p>
-
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-
-<p><strong>Update 2022-10-20</strong>: Since my initial publication of
-this text, I got several suggestions for more free software Linux
-tools. There is <a href="https://github.com/quatanium/python-onvif">a
-ONVIF python library</a> (already
-<a href="https://bugs.debian.org/824240">requested into Debian</a>) and
-<a href="https://github.com/FalkTannhaeuser/python-onvif-zeep">a python 3
-fork</a> using a different SOAP dependency. There is also
-<a href="https://www.home-assistant.io/integrations/onvif/">support for
-ONVIF in Home Assistant</a>, and there is an alternative to Zoneminder
-called <a href="https://www.shinobi.video/">Shinobi</a>. The latter
-two are not included in Debian either. I have not tested any of these
-so far.</p>
-</description>
- </item>
-
- <item>
- <title>Time to translate the Bullseye edition of the Debian Administrator's Handbook</title>
- <link>https://people.skolelinux.org/pere/blog/Time_to_translate_the_Bullseye_edition_of_the_Debian_Administrator_s_Handbook.html</link>
- <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Time_to_translate_the_Bullseye_edition_of_the_Debian_Administrator_s_Handbook.html</guid>
- <pubDate>Mon, 12 Sep 2022 15:45:00 +0200</pubDate>
- <description><p align="center"><img align="center" src="http://people.skolelinux.org/pere/blog/images/2020-10-20-debian-handbook-nb-testprint.jpeg" width="60%"/></p>
-
-<p>(The picture is of the previous edition.)</p>
-
-<p>Almost two years after the previous Norwegian Bokmål translation of
-the "<a href="https://debian-handbook.info/">The Debian Administrator's
-Handbook</a>" was published, a new edition is finally being prepared. The
-english text is updated, and it is time to start working on the
-translations. Around 37 percent of the strings have been updated, one
-way or another, and the translations starting from a complete Debian Buster
-edition now need to bring their translation up from 63% to 100%. The
-complete book is licensed using a Creative Commons license, and has
-been published in several languages over the years. The translations
-are done by volunteers to bring Linux in their native tongue. The
-last time I checked, it complete text was available in English,
-Norwegian Bokmål, German, Indonesian, Brazil Portuguese and Spanish.
-In addition, work has been started for Arabic (Morocco), Catalan,
-Chinese (Simplified), Chinese (Traditional), Croatian, Czech, Danish,
-Dutch, French, Greek, Italian, Japanese, Korean, Persian, Polish,
-Romanian, Russian, Swedish, Turkish and Vietnamese.</p>
-
-<p>The translation is conducted on
-<a href="https://hosted.weblate.org/projects/debian-handbook/">the
-hosted weblate project page</a>. Prospective translators are
-recommeded to subscribe to
-<a href="http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators">the
-translators mailing list</a> and should also check out
-<a href="https://debian-handbook.info/contribute/">the instructions for
-contributors</a>.</p>
-
-<p>I am one of the Norwegian Bokmål translators of this book, and we
-have just started. Your contribution is most welcome.</p>
-