Home About Meetings FOSS

February 14 2023 NixOS, Kdialog, ShellCheck, FSlint, Kdenlive, Xenix

Posted on February 22, 2023
( 8 minute read )

Brian has been looking at NixOS, a Linux distribution built on top of the Nix package manager. There is a description of it in Linux Downtime Episode 65. In relation to using the Nix package manager with a different distribution, David anticipated that there might be problems with dependencies and consistency with another distribution.

Brian had also been looking at how many virtual managers you can nest as discussed in Linux After Dark Episode 36.

David mentioned his surprise at the Lenovo ARM Thinkpad costing £1,183.99 at which Brian mentioned the introduction of tabbed browsing on Windows 11 and David recalled that, in Windows 3.1 you could open two panes and move files between them which John commented was how you still do things in PCManFM.

David shared a couple of emails when his connection had gone down and his provider was trying to claim there had been no fault. In the first David wrote:

Hi, no, that is not true.

The engineer diagnosed a break in the wire, and I quote directly, 124 metres back towards the cabinet. He left the premises to go find it and fix it.

He also replaced the old faceplate/master socket with a new one. If there was no fault, how come the engineer spent 40 mins away from my property, came back, and now got a dial tone and a sync at 48 Mbits where for 2 weeks there had been no dial tone and sync was flapping between 12 and 18?

I can provide graphs of the sync speed over this period, and a photo of the new master socket.

The engineer himself was polite, house trained, helpful and competent.

At no time was I asked to sign any paperwork that said ‘fault not found’ (or any other paperwork).

Someone ‘higher up" ... is trying to take us for a ride.

As a result, David got a reply saying:

We have identified you are entitled to compensation for the following service

Service identifier: ... Product: Line Rental

Reason for compensation: Delayed repair following a loss of service – 4 day(s)

Compensation amount due: £33.60.

The credit will be applied to your next bill.

Brian then demonstrated Alexa’s capabilities and David tested them out across Jitsi.

Darren is working on a project to create a splashscreen using Kdialog over a command line program telling you what the program is doing. David stressed the importance of having a code review using coding standards and good practice standards, in particular consistency. He recommended that Darren put his script through ShellCheck which David had used on BASH scripts of over 1,000 lines. You can also suppress warnings that relate to obscure constructs.

Darren reported that it was telling him he was using bad style and David said that was because bad style leads to bugs — a longstanding example in BASH being the use of backticks which can lead to all sorts of problems with nested expressions. It is far better to use $expression and to use quoted variables.

David advised Darren to click on the code numbers to find an explanation for the comment.

There is an very interesting talk by Stephen Bourne on what he did to clean up the UNIX shell at the start [the reason why backticks are undesirable comes after about 25 minutes].

John asked if ShellCheck could also check the Kdialog and David said that it could. David went on to say that you use black or lint in Python.

Bernard mentioned test driven development which he had tried but which was ridiculously tedious.

David explained that in terms of the human factors in engineering, in the code you were trying to get rid of all the human factors whereas in the interface the human factors are very relevant. That prompted John to comment on the line length advice he had received as a student journalist: it becomes more difficult to jump back to the start of a line the longer the line; so newspapers ensure that their columns are narrow enough to allow people to do that easily. But a great many websites have very long line lengths!

Darren asked about using MD5 checksums to confirm that two files are the same and David said that MD5 had been long known to produce collisions — that is, identical checksums for different material — but was probably unlikely to do so in the use case which Darren was contemplating. However, he could use a direct comparison such as cmp or diff.

Darren should bear in mind that, as cmp already exists, his project should aim to provide some added value over that which cmp already offers.

David also mentioned that he had in the past used FSlint which is no longer maintained and has been superseded by Czkawka, a Rust implementation of FSlint.

Brian asked about transcoding as a way of improving the quality of downloaded videos. John said that he used the File->Transcode Clips option in Kdenlive; this offers a number of options which it calls FFmpeg to implement. He uses it mainly for creating DVD versions of videos.

David noted that some file endings relate to formats and some to containers; for example mkv is a container. However, it was unlikely that Brian could do real time transcoding because of the speed of the storage available and the I/O limitations involved in reading and writing.

Darren mentioned that he had come across Xenix, a version of Unix developed by Microsoft.