Linux USA 05.2025
Linux USA 05.2025
DV S I D
IN
+
D E
without getting tracked
Secure
Browsers
Privacy-focused solutions
for the surveillance age
Info
[1] “Apple’s Siri Chief Calls AI Delays Ugly and Embarrassing,
Promises Fixes,” Bloomberg (paywalled): https://www.
bloomberg.com/news/articles/2025-03-14/apple-s-siri-chief- Joe Casad,
calls-ai-delays-ugly-and-embarrassing-vpromises-fixes Editor in Chief
[2] “Leaked Apple Meeting Shows How Dire the Siri Situation
Really Is,” The Verge:
https://www.theverge.com/news/629940/apple-siri-robby-
walker-delayed-ai-features
[3] “All-Hands Siri Team Meeting Leaks to Bloomberg,” Daring
Fireball: https://daringfireball.net/linked/2025/03/14/all-hands-
siri-team-meeting-leaks-to-bloomberg
[4] Siri History on Wikipedia: https://en.wikipedia.org/wiki/Siri
ON THE COVER
32 Automated Process Monitoring 70 Ad-Free Videos
A homegrown Python app keeps tabs on the An alternative front end for YouTube videos
system and sends a warning if a process goes down. keeps you free of ad trackers.
NEWS IN-DEPTH
8 News 28 Zen Browser
• CIQ Releases Security Hardened Version of Rocky Linux Zen Browser, an open source Firefox fork, promises users
• Gnome’s Dash to Panel Extension Gets a Massive Update greater convenience and improved data protection, along
• Blender App Makes It to the Big Screen with customizable display modes to help you stay focused
• Linux Mint Retools the Cinnamon App Launcher on your work.
• New Linux Tool for Security Issues
• Ubuntu 25.04 Coming Soon 32 Automated Process Monitoring
• Gnome Developers Consider Dropping RPM Support A simple Python script checks to see if a process is running
• openSUSE Tumbleweed Ditches AppArmor for SELinux and, if not, notifies the user via Telegram.
@linux-magazine.com
TWO TERRIFIC DISTROS
@linuxpromagazine
DOUBLE-SIDED DVD!
Linux Magazine SEE PAGE 6 FOR DETAILS
basic web-based file navigation and commands. Although this Linux Magazine disc has been tested and is to the
best of our knowledge free of malicious software and defects,
Among known issues, the release notes mention that the Linux Magazine cannot be held responsible and is not liable for
Anaconda installer shows only empty pages when help any disruption, loss, or damage to data and computer systems
related to the use of this disc.
buttons are clicked.
11 • Gnome Developers
Consider Dropping RPM
this distribution, the name won’t matter.
Here’s the deal. Rocky Linux from CIQ – Hardened is delivered via a secure supply
chain and packages, pre-configured security, code-level hardening that blocks com-
Support
• openSUSE Tumbleweed mon exploits, automated security updates, enhanced threat detection, and support.
Ditches AppArmor for This is all done while maintaining API and ABI compatibility with the usual standards
SELinux applied to Enterprise Linux.
Other important features of Rocky Linux from CIQ – Hardened include system-
level hardening, accelerated risk management, strong access controls, and simple
deployment.
According to Gregory Kurtzer, CEO of CIQ, “The creation of Rocky Linux from CIQ
– Hardened was a direct result of the countless conversations I have had with secu-
rity-concerned IT executives.” He continues, “Organizations struggle to consistently
thwart security attacks across their Linux environments where even a single exploit
poses a major risk. Rocky Linux from CIQ – Hardened makes it harder for malicious
attackers to break into critical software infrastructure by providing a more secure
foundation and defense in depth while maintaining compatibility with the Enterprise
Linux standard.”
You can read more and sign up for a technical preview on the official Rocky Linux
from CIQ – Hardened site (https://ciq.com/products/rocky-linux/hardened/ ).
The latest release of Dash to Panel has a new trick up its sleeve, one that a lot MORE ONLINE
of users will happily welcome. That feature makes it possible to use Dash to
Panel in dock mode. You can even set the margins to achieve a flowing panel/
dock look. Linux Magazine
You might be wondering, “Why not just use Dash to Dock?” One of the reasons www.linux-magazine.com
is because Dash to Panel offers a good number of customizations, such as grouping
apps with multiple windows together (so when you mouse over the app icon, the ADMIN Online
open windows will appear as previews so you can select the one you want), app http://www.admin-magazine.com/
icon badges, a new grayscale option for app icons, Intellihide remembering the last Core Linux Commands for HPC
state between reboots, and much more. • Jeff Layton
The latest release also includes Gnome 48 support and several visual tweaks, and Many people want to get into HPC but aren’t
per-monitor settings now behave more consistently across X11 and Wayland. You can sure how. We consider commands that would
check out the latest code for Dash to Panel on its official GitHub page (https://github. be a good starting point, especially if you
com/home-sweet-gnome/dash-to-panel), where you can read about the new features. want to build your own home system.
appearance. Up until now, the Cinnamon desktop menu was somewhat sparse and
looked a bit too old school for such a modern distribution.
This revamped menu will ship with Linux Mint 22.2 and the Cinnamon 6.6 desk-
top (as well as with any distribution that uses the latest version of Cinnamon).
QQQ
adding a new tree-wide static analysis bit of a middle ground. He felt that al- introduce new thread-safety attributes
to the kernel.” lowing maintainers to “opt in” would when useful to annotate kernel code. As
He went on to say, “In fact, what it simply result in many of them choosing an example, the Clang try_acquire_capa-
really is, is yet another dialect of C with never to do so. At the same time, he bility function attribute does not support
a ‘capability system’, with its own con- said, making the whole change all at functions that return pointers although
straints. I dislike Clang’s naming and once might be a bit much. As he ex- this is a common pattern in the Linux
the notion this is about ‘thread safety plained, “Opt-in just means some code kernel. I think that introducing a new
only’ – it’s not. It’s a simple capability will never get it. So I think we’ll need to function attribute to support functions
system, that can do much more.” eventually force all the useful capabili- that return pointers is a better solution
If one views the situation as proposing ties everywhere. Doing that step by step than trying to annotate such functions
to switch from one C dialect to another, by opt-in/opt-out for early adopters with any of the existing Clang thread-
Marco continued, then “we can’t change sounds fine.” safety attributes.”
the programming language (even if from Peter Zijlstra – admitting that he had a Marco was on board with that notion,
one C dialect to another) of the kernel lot of reading to do before he could re- saying, “Agreed – we can’t change the
overnight, a different approach might ally comment on the specifics of Clang existing semantics, but if absolutely
cause less friction.” behavior – asked if it were possible to necessary we could think about exten-
In his own proposal, Marco advocated, “stack” the various Clang annotations. sions (which I already started for some-
“A selective, incremental, and much less Specifically, he was thinking of some of thing else.”
intrusive approach. Maintainers of sub- his own code that needed both a mutex This led to a very brief technical dis-
systems opt in their modules or directo- and a spinlock to allow writing a piece cussion on the nature of supportable
ries into ‘capability analysis’ (via Make- of data, where either one or the other functions in the kernel, and the thread
file directive ‘CAPABILITY_ANALYSIS_ would suffice to allow reading the same ended.
foo.o := y’ or ‘CAPABILITY_ANALYSIS data. Peter’s question about stacking To me, this was a lovely example of
:= y’). Most (eventually all) synchroni- was regarding whether such require- two developers suddenly realizing that
zation primitives and more capabilities ments could be expressed as Clang they’ve been working on the same
(including ones that could track ‘irq dis- annotations. thing and that really in all likelihood
abled’, ‘preemption’ disabled, etc.) Marco replied yes and no. Yes, you only one of their efforts will be going
could be supported.” could stack Clang annotations, but, no, into the source tree. Instead of fighting
Finally, Marco suggested that “Com- it would not result in the subtle control about it, they each went out of their
bining approach #1 and #2 may some- Peter was hoping for. It would simply way to recognize the other and support
how be possible, but it is currently elud- mean someone would need to hold both the possibility that either approach
ing me. […] Depending on the feedback locks before performing any operation might legitimately be chosen. This
that results from these RFCs, I think we on the piece of data in question. Marco form of camaraderie is not necessarily
will be able to plan better which direc- did, however, add, “If you want the rules the most common thing to see on the
tion things should go.” to be more complex, the best way to ex- Linux Kernel Mailing List, but it’s not
In some Linux kernel development press that is with some helpers.” He unheard of either.
conversations, such a reply from Marco posted several possible helper functions
would result in a massive flame war that could be combined to do what Peter Doing the Too-Much Step
filled with enmity, oaths of vengeance, wanted. As the Linux kernel accepts more and
and an eventual resolution somewhere To which Peter replied, “Oh gawd, this more Rust code, the relationship between
years down the line that satisfied no one. is going to be a pain, isn’t it :/” the C developers and the Rust developers
Bart, however, replied, “Thank you Which on the face of it might seem undergoes a variety of painful transitions.
Marco for having explained clearly and negative, but Peter did seem to imply Remember, the Linux kernel – or at least
in detail what the possible paths are for that he expects this Clang testing sup- Linus Torvalds – did try at one point to
enabling thread-safety support in the port to actually happen. He wasn’t op- allow C++ into the kernel and ended up
Linux kernel. I agree that there are at posing it, at least not in that message. ripping it out again by the roots. Yet Rust
least two possible approaches (maybe In response to Peter, Marco said, “For is flooding the source tree with more and
there are even more possible complex locking patterns, yes. :-/ . more code all the time! There are bound
approaches?)” Which is why I’m proposing it to be opt- to be … opinions.
Bart affirmed that he preferred “en- in but relatively complete (most primi- Recently for example, there was a
abling the Clang compiler flag -Wthread- tives supported), so that either we have good old-fashioned Usenet-style flame
safety across the entire kernel,” but in time to work out how to deal with more war surrounding Rust in the kernel,
good spirits he ended with, “I’m looking complex patterns, or just leave some complete with f-bombs, social media
forward to the feedback from others things opted-out.” shaming, accusations of violations of the
about what their opinion is about how to Bart also replied to Peter, from the per- kernel developers’ Code of Conduct, and
enable thread-safety checking in the spective of his own proposal, saying, other things reminiscent of those glori-
Linux kernel.” “The Clang thread-safety annotations are ous early days. Although back then the
Christoph Hellwig was the first to used widely so behavior of existing attri- code of conduct amounted roughly to,
voice an opinion, essentially walking a butes must be preserved. I propose to “what, can’t you take it?”
It started – well, one could say it “(I understand this is very abstract and abstraction layer for the DMA coherent
started with the very first Rust patch – we can go into details and examples, if allocator as a separate component (which
when Abdiel Janulgue posted a patch you like.) it would be anyways) ourselves.
to “Add a simple dma coherent alloca- “So, in the end, Rust drivers would just “As explained previously, this compo-
tor rust abstraction,” based on work by end up with each of them including a nent is just a user of the DMA coherent
Andreas Hindborg and Wedson Al- copy of those abstractions, rather than allocator API (just like any other driver)
meida Filho. Direct Memory Access using the C APIs from all over the place and the reason we want this component
(DMA) is a way of bypassing the CPU within the driver. is because otherwise this abstraction
in order to access RAM directly. Net- “This wouldn’t help with what you ask layer would end up in every Rust driver
work cards, GPUs, and other hardware for, it would just duplicate the ‘problem’. that needs the DMA coherent allocator as
need to do this for performance pur- “If you don’t feel comfortable main- duplicated code, which for obvious rea-
poses. DMA-coherent memory is mem- taining the Rust abstraction (or just don’t sons isn’t desirable.
ory that is accessible by both those de- want to), that’s fine. I don’t think any- “Throughout this conversation I did
vices and the CPU itself, without need- one expects you to do that, we can take not see technical arguments or concerns
ing to go through the normal process care of that instead. against this, but I did recognize your op-
of synchronizing the cache. “From your perspective, I think you can position against Rust in the kernel and
Cached data is data that is held in just think of the Rust abstraction as a cross-language projects.
memory for a while before writing, to single driver calling into the DMA API.” “Being a maintainer myself, I think it
give the illusion that the write happened Christoph was having none of this, is outside the scope of a maintainer to re-
at blindingly fast speeds. If the cache however, and shot back, “Don’t force me strict the usage of a public kernel API for
isn’t synchronized to the hardware being to deal with your shiny language of the a certain entity arbitrarily and/or by per-
written to, there could be problems if day. Maintaining multi-language projects sonal preference, which, as it appears to
some other device tries to read the data is a pain I have no interest in dealing me, is the case here.”
off of that hardware. DMA-coherent with. If you want to use something that’s There were various other responses to
memory presents a consistent view of not C, be that assembly or rust you write Christoph, including Daniel Almeida
memory to all users, thus avoiding the to C interfaces and deal with the impe- who remarked bitterly, “this person
overhead of synchronization. dence mismatch yourself as far as I’m waited until v8 to give a single line NAK
Abdiel’s patch added a Rust interface concerned.” [negative acknowledgement]. This is not
that Rust code could use to allocate Danilo replied, “Again, no one asks very nice.”
DMA-coherent memory. you to deal with or maintain this piece Jason Gunthorpe made an effort to ex-
Christoph Hellwig, in the C camp, re- of Rust code. […] This is exactly what plain things from the C point of view, re-
plied, “No rust code in kernel/dma, we’re doing and proposing here, isn’t it? minding the Rust folks of “the recent
please.” We wrote a single piece of Rust code that event where Linus defered the MM pull
Miguel Ojeda asked what Christoph abstracts the C API for all Rust drivers, request and some C patches were
suggested doing instead of this to allo- which we offer to maintain ourselves.” dropped because of rust kbuild bugs.”
cate that memory, and Christoph replied, A little later, Danilo posted, “Since He went on:
“Keep the wrappers in your code instead there hasn’t been a reply so far, I assume “It seems to me the message is now
of making life painful for others.” that we’re good with maintaining the crystal clear, and the opposite of what
Danilo Krummrich took exception to DMA Rust abstractions separately. you claim.
Christoph’s characterization of the Rust Hence, the next version of this patch se- “All PRs [pull requests] to Linus must not
contributions as “your code.” He asked ries will have the corresponding main- break the rust build and the responsibility
if, instead of this simple abstraction, tainer entry.” for that falls to all the maintainers. If the
Christoph would prefer duplicating the Christoph replied that he was explic- Rust team is not quick enough to resolve
same functionality in every single driver itly saying no to this patch and this ap- any issues during the development window
in the kernel. To which Christoph re- proach. He said, “If you want to make then patches must be dropped before send-
plied, “Yes, interfaces to the DMA API Linux impossible to maintain due to a ing PRs, or Linus will refuse the PR.
should stay in readable C code and not cross-language codebase do that in your “Effectively this seems to imply that
in weird bindings so that it remains grep- driver so that you have to do it instead of patches changing some of the C API can-
pable and maintainable.” spreading this cancer to core subsys- not be merged by maintainers unless ac-
In response, Danilo said: tems. (where this cancer explicitly is a companied by matching Rust hunks.
“Rust drivers shouldn’t use C APIs di- cross-language codebase and not rust it- “If there are different instructions to
rectly, but rather use an abstraction of self, just to escape the flameware maintainers I would be interested to know.
the corresponding C API. brigade).” “Thus, I would not describe this situa-
“One reason for that is that some re- OK. That “cancer” reference will come tion as ‘rests entirely on the Rust side’s
quirements C APIs naturally have, can be back to haunt the discussion. shoulders’.”
abstracted in a way, that the Rust com- Danilo explained: At this point, Greg Kroah-Hartman
piler already ensures certain things and “I accept that you don’t want to be in- came into the discussion, saying:
hence drivers have less potential to pro- volved with Rust in the kernel, which is “That’s not the case, the one you point
duce errors. why we offered to maintain the Rust at above was a tooling issue that people
missed due to the holidays. Fixing it up “If this rust middle-layer abstraction is event that Linus doesn’t chime in over
was simple enough and people did so unacceptable to you, could you perhaps the next two months, but I would very
and moved on. suggest a solution so that all rust device strongly suggest that it’s sent to Linus
“Once a core api changes in a tree and driver don’t end up with redundant dma (assuming he doesn’t jump in now) as a
it hits linux-next and that blows up a coherent allocator rust code? Could the separate pull request.”
rust build, obviously people should notice rust team do something about it?” Paolo also said, regarding Christoph’s
it then and the rust maintainers/develop- Christoph replied, “The common “cancer” comment, “I agree that it was
ers have said they will fix it up. ground is that I have absolutely no inter- borderline and probably on the wrong
“So the claim remains the same here. est in helping to spread a multi-language side of the edge. But I am happy for one
It’s just like staging, api changes to sub- code base. I absolutely support using that Christoph has since expanded be-
systems are allowed to break staging, Rust in new codebase, but I do not at all yond the “cancer” comment, because
and rust code, and maintainers do NOT in Linux.” that’s at least a technical argument, un-
have to fix them up there, that’s up to the Up until now the conversation – from like yours above.”
staging and rust maintainers/developers the Rust side at least – had seemed to be Paolo also said to Hector, “I have a
to do so.” relatively civil. At this point, however, question, which is unrelated to my opin-
Jason replied, “you seem to be saying Hector Martin said: ion of Rust for Linux: in what way do
that Linus should have accepted An- “If Linus doesn’t pipe up with an au- you think this tirade is actually helping?”
drew’s PR and left rust with build fail- thoritative answer to this thread, Miguel Hector replied, “There have already
ures?” He added that Greg’s statement and the other Rust folks should just been high-profile departures from the
“makes me think you expect Linus to merge this series once it is reviewed and Rust for Linux project due to the open
have merged Andrew’s PR and left the ready, ignoring Christoph’s overt attempt hostility of certain kernel maintainers.
rust build broken so that the rust main- at sabotaging the project. If Linus pulls The tension in the air is palpable, and
tainer/developers could fix it later?” it, what Christoph says doesn’t matter. If so is the lowering morale. I’m encour-
To which Greg said, “I can’t answer Linus doesn’t pull it, the R4L project is aging the people involved to stop play-
for Linus, sorry. But a generic ‘hey, essentially dead until either Linus or ing nice and start playing hardball in
this broke our working toolchain Christoph make a move. Everything else these cases, because playing nice does
builds’ is something that is much is beating around the bush. not work with some people. Taking the
much much different than ‘an api “Rust folks: Please don’t waste your high road only works with people who
changed so I now have to turn off this time and mental cycles on drama like want to cooperate and reach a solution
driver in my build’ issue.” this. It’s not worth your time. Either that works for everyone. People who
As for Danilo’s statement that the Linus likes it, or he doesn’t. Everything openly do not want to cooperate nor
Rust people would fix any problems else is distractions orchestrated by a sub- reach any sort of reasonable solution
that appeared in the proposed Rust ab- set of saboteur maintainers who are try- should be shunned and ignored, as is
stractions into DMA-coherent memory, ing to demoralize you until you give up, the case here.”
Christoph also replied, saying, “Which because they know they’re going to be on On the issue of the technical merits of
doesn’t help me a bit. Every additional the losing side of history sooner or later. his argument, Hector said:
bit that the another language creeps in No amount of sabotage from old en- “My argument above may not be
drastically reduces the maintainability trenched maintainers is going to stop the ‘technical’ in the technology sense, but
of the kernel as an integrated project. world from moving forward towards it is quite specific and objective: Chris-
The only reason Linux managed to sur- memory-safe languages. toph has made it *very* clear that he is
vive so long is by not having internal “FWIW, in my opinion, the ‘cancer’ not intending to reach any sort of work-
boundaries, and adding another lan- comment from Christoph would be able solution. He has decided that he
guage completely breaks this. You enough to qualify for Code-of-Conduct ac- doesn’t want Rust in the Linux kernel
might not like my answer, but I will do tion, but I doubt anything of the sort will and will do whatever he can to stop it,
everything I can do to stop this. This is happen.” which fundamentally clashes with the
NOT because I hate Rust. While not my Paolo Bonzini and Jason both jumped goals of the R4L project in an irreconcil-
favourite language it’s definitively one in to rein in the conversation at that mo- able way. He may have his own ‘techni-
of the best new ones and I encourage ment. Jason said to Hector, “Please don’t cal’ reasoning for this, but this is irrele-
people to use it for new projects where hijack this side thread. This is about vant, because there is no way to appeal
it fits. I do not want it anywhere near a Linus’s policy for merging C code that to his technical concerns and the tech-
huge C code base that I need to breaks Rust builds. You should put this nical goals of the R4L project
maintain.” comment on the branch with Christoph’s simultaneously.
Abdiel responded to this, saying: NAK.” (Hector then replied, “Sorry for “What he is doing is quite literally
“I do acknowledge your reservations the thread mishap. It’s kind of hard to the dictionary definition of ‘sabotage’.
about the possible maintenance burden redirect to the other branch now Since his goal is to sabotage the R4L
due to the introduction of a rust (or an- though….”) project, in its fundamental goal, no
other language) consumer of the dma- While Paolo also said to Hector, “Hold amount of purely technical discussion
api. But I was hoping that we could ar- your horses … I agree that they should will allow us to reach a workable solu-
rive at some sort of common ground? just merge the series in the unlikely tion. Therefore, the only possible
reaction is social in nature: Ignore misbehavior and hostility towards their same way it sure as hell wasn’t the solu-
Christoph, and work around him.” efforts from others. tion to politics.
Simona Vetter also responded to Hec- “I’m tired of getting messages, pri- “Technical patches and discussions
tor’s initial post in the thread. She gave vately and publicly, from all kinds of peo- matter. Social media brigading – no
some links to Hector’s social media posts ple, saying they won’t touch the kernel thank you.”
(at least one of which now seems un- with a 10-foot pole due to the hostility Danilo also replied to Hector, offering
available). She said to him: and the baroque, regressive process. advice on alternatives to social media
“I do understand the frustration and “I’m tired of seeing people get away shaming:
temptation to just burn it all to the with using words like “cancer” to describe “Most importantly be *consistent* with
ground, heed the call of the sirens, or others’ work, with zero repercussion. good technical arguments, calmly focus
maybe for me more pick up goat farming “I’m tired of *politely and calmly* call- on your actual matter rather than esca-
in the Swiss Alps. But you can’t have it ing out hostile and unwelcoming behav- lating any surrounding details.
both and expect to also be part of and ior from maintainers and suggest ways to “Accept that sometimes things can’t be
contribute to the same community. And improve, only to be ignored and nothing reached directly, but additional work is
personally I don’t appreciate getting change (note: this refers to other in- needed to change the preconditions.
drenched in gasoline while I’m trying to stances, not this instance). “Goals aren’t reached by burning
quench flames on the ground. “I’m tired of having to spend hours or bridges, but by building them. Sometimes
“And this isn’t the first time or the days of my time to upstream simple you may not be able to build a bridge
second, by now it’s a pretty clear pat- things, because even the simplest of where you would like to. But you can still
tern over some years. And with the first changes [end] up in a bikeshed. look for alternative routes with and
I could explain why you react like that “I’m tired of having to manually for- within the community.
and you had my full understanding, mat code instead of using clang-format. “Surely, it does take time and energy,
but eventually that runs a bit thin as “I’m tired of drive-by nitpickers who but certainly there’s no shortcut.”
an excuse. Now I’m left with the un- send useless review comments on code Hector was not swayed, saying “I’ve
likely explanation that you just like they don’t take the time to understand. used up all my spoons for this, and
thundering in as the cavalry, fashion- “I’m tired of having to review patches clearly Linus doesn’t think there’s a
ably late, maximally destructive, be- in an email client, where I can’t even tell problem in this thread worth replying to
cause it entertains the masses on fedi which patches are for me to merge and other than myself, so I’m giving up on
or reddit or wherever. I have no idea not without writing complex filtering fighting for any change or being part of
what you’re trying to achieve here, I re- rules to correlate email bodies with ker- the kernel maintainer community.
ally don’t get it, but I am for sure fed nel subsystem paths, which I don’t have Whether the rest of the kernel commu-
up dealing with the fallout.” the time to write and maintain. nity chooses to continue to live in an
Dave Airlie added: “I’m tired of having to type a half ugly bubble or actually try to fix some of
“To back up Sima here, we don’t need dozen ‘b4’ commands just to send a these systemic issues, is up to them.”
grandstanding, brigading, playing to the change. However, Hector did not leave right
crowd, streamer drama creation or any of “And I’m tired of hearing things will away. He had quite a bit more to say, in-
that in discussions around this. get better if I just ‘trust the process’ or let cluding: “I do believe the fact that essen-
“The r4l team and drm maintainer people work from within, while nothing tially all high-level Linux kernel main-
team have this sort of thing in hand, it’s seems to have actually changed in years tainers and contributors are paid by cor-
not like we don’t understand the commu- despite endless discussion about these porations to do it is a major factor that
nity of the Linux kernel, and having this problems on the sidelines. has caused this community to become
first reaction to blow shit up and drama- “If shaming on social media does not wildly out of touch with what it means
tise it just isn’t helpful. work, then tell me what does, because to be a community FOSS project.”
“Being toxic on the right side of an ar- I’m out of ideas.” To which Greg KH replied:
gument is still toxic, please try and be At this point, Linus came into the con- “Please note, that ever since I started
better, and maybe take a step back and versation, saying to Hector: keeping track of this type of thing, way
consider: is what you are posting going to “How about you accept the fact that back in 2003 or so, it has been the case
help the discussion or just adding point- maybe the problem is you. that over 80% of the contributions come
less drama to it.” “You think you know better. But the from company-funded developers.
Hector replied: current process works. Which means it really goes back before
“I’m tired. “It has problems, but problems are a that as well.
“I’m tired of seeing positive, technically fact of life. There is no perfect. “And that’s good, it means that we
impressive kernel projects blockaded de- “However, I will say that the social have backing to do this properly, from the
layed by maintainers with no technical media brigading just makes me not want companies that [benefit] from it. To not
justification, and at best end up moving to have anything at all to do with your have that would make it much harder for
along at a glacial pace. approach. any of this to work properly at all.
“I’m tired of seeing important contribu- “Because if we have issues in the ker- “So don’t try to play the ‘you all work
tors and maintainers give up and throw nel development model, then social for companies’ card, that isn’t going to
the towel after enduring repeated media sure as hell isn’t the solution. The fly as obviously we all speak for ourselves
here, and our companies _know_ they those are even more likely to use a ker- some extent the boundaries of what it
can’t tell us what to do, but they give us nel.org account). means to be a maintainer. Among other
insight into the problems that they have “More importantly, not being central- things, Linus said:
with Linux in order for us to help change ized was very much a basic tenet of git, “You are not forced to take any Rust
it to make it better for everyone. so *if* git.kernel.org were to become code, or care about any Rust code in the
“Because again, everyone has the same problematic, it’s very easy to move git re- DMA code. You can ignore it.
problems (individuals and companies), positories anywhere else. Very much by “But ‘ignore the Rust side’ automati-
and so solving it for one ‘group’, solves it design.” cally also means that you don’t have any
for everyone.” Hector was not letting it go. He replied, *say* on the Rust side.
The discussion continued. At one “For all intents and purposes, 85% cen- “You can’t have it both ways. You can’t
point Hector remarked, “for better or tralized might as well be fully centralized. say ‘I want to have nothing to do with
worse, much of Linux infra[structure] That is, any downtime on kernel.org will Rust’, and then in the very next sentence
*is* centralized – for example, the mail- affect the community effectively the same say ‘And that means that the Rust code
ing lists themselves, and a lot of the Git as downtime on a true central SPOF [sin- that I will ignore cannot use the C inter-
hosting.” gle point of failure] would.” faces I maintain’.
To which Linus then replied: The discussion continued in a variety “Maintainers who *want* to be in-
“The mailing lists are mostly on kernel. of different directions, but the initial volved in the Rust side can be involved
org, but the git hosting most certainly is patch and prospects of including it in the in it, and by being involved with it, they
not centralized in any way. source tree or of finding an alternative will have some say in what the Rust
“The kernel.org git repositories used to solution were no longer mentioned. bindings look like. They basically be-
be special in that I didn’t require signed My own view on the whole question come the maintainers of the Rust inter-
tags for them, because I trusted the user of Rust in the kernel would normally be faces too.
maintenance. But I was encouraging to compare it to other cases where an “But maintainers who are taking the ‘I
signed tags even back then, and once it outside person or group has tried to don’t want to deal with Rust’ option also
got to the point where most were signed force controversial code into the kernel. I then basically will obviously not have to
anyway, I just made it a rule. So now ker- wouldn’t say that is what is happening bother with the Rust bindings – but as a
nel.org isn’t special even in that respect. here, but it does remind me of such result they also won’t have any say on
“Now, kernel.org is very much _conve- cases – and my prediction in that case what goes on on the Rust side.
nient_. And you see that in the stats: of would be that the Rust folks, or any such “So when you change the C interfaces,
my pulls in the last year, 85% have been group, would ultimately need to con- the Rust people will have to deal with the
from kernel.org. But that is very much be- strain themselves to the kernel require- fallout, and will have to fix the Rust
cause it is convenient, not because it’s ments. If that meant, as Christoph said, bindings. That’s kind of the promise
centralized. that the two languages would need to be here: there’s that ‘wall of protection’
“But that still leaves the 15% that kept separate, then that would be essen- around C developers that don’t want to
aren’t kernel.org. tially the “law of the land.” deal with Rust issues in the promise that
“Since I did the stats, in case anybody However in this particular case, Linus they don’t *have* to deal with Rust.
is interested, the top non-kernel.org hosts came in later with a very different take, “But that ‘wall of protection’ basically
for my pulls are github.com, git.samba. and a fairly definitive “law of the land” goes both ways. If you don’t want to deal
org, gitlab.freedesktop.org, evilpiepirate. that went against what Christoph had with the Rust code, you get no *say* on
org, git.infradead.org and git.lwn.net advocated. the Rust code.
(and there’s a handful of other ones in In a long email, Linus discussed the “Put another way: the ‘nobody is forced
there). situation, including his hopes that the to deal with Rust’ does not imply ‘every-
”(And while I did the stats just for controversy might have worked itself out body is allowed to veto any Rust code’.”
*my* pulls, if you look at total merges into a productive solution for everyone. The discussion will undoubtedly con-
over-all, the non-korg repositories are ac- But finally he had felt the need to iden- tinue for a long time, and policies may
tually at 20% – I think my percentages tify the proper boundaries himself. always shift. But for the moment at least,
are higher simply because I tend to pull In fact, Linus defined a wide-ranging Linus apparently intends to give Rust a
from mostly top-level maintainers, and policy that, as he affirmed, redefined to lot more rope. Q Q Q
QQQ
By Erik Bärwaldt
T
he functionality of graphical browsers is largely similar, and RPM package management, but you will also find Snap
but they differ greatly in terms of security. For example, and Flatpak packages [2].
some browsers, such as Google Chrome, are considered On the project page, the developers point to private search-
overly chatty when it comes to personal data and ing, integrated VPN access, and ad blocking. Brave also blocks
downright negligent with regard to user tracking, but other annoying cookie banners. Filtering this content significantly re-
browsers offer default configurations that make it difficult or duces the volume of data that needs to be transferred, making
impossible to identify users and track their behavior. This Brave particularly suitable for users who have limited Internet
article investigates some browsers that are known for pro- bandwidth. Brave also loads websites faster as a result, filter-
viding a high level of privacy. ing invasive tracking technologies such as cross-site trackers or
fingerprinting by default without you having to manually load
Security extensions.
Web browsers are generally considered to be far more secure After completing the install, you can launch Brave from the
today than they were even two decades ago. This improvement desktop menu. The application comes with a conventional user
is primarily due to the intensive efforts of developers to elimi- interface. Brave is no different from other web browsers in
nate vulnerabilities. Unfortunately, the spectrum of potential terms of appearance or controls, which means that switching
threats is greater due to new attack and tracking technologies, to Brave does not involve a learning curve.
which means that hardening a browser involves a variety of When you launch Brave for the first time, you can decide
measures. whether you want to make it the system’s default browser.
The developers’ efforts focus on three main areas. The You can also import existing settings, such as bookmarks, ex-
browsers themselves offer various options in the configuration tensions, or passwords, from other browsers in a separate
dialogs that make it more difficult to track web browsing be- dialog.
havior. Some of these configuration options are also aimed at In the next dialog, Brave prompts you to decide whether you
preventing invasive types of tracking. However, if the settings want to take part in the project’s Web Discovery Project by sub-
are too strict, the browser might fail to display some websites mitting anonymized search data. The Brave project uses the data
correctly. for a native search index and promises to anonymize the data.
The second approach is to use add-ons to block tracking and The project is intended to prevent the collection of personal
advertising. Ad blockers also have the pleasant side effect of data in the browser and search engine by major providers such
making websites easier to read by hiding intrusive advertising. as Google or Microsoft. As other search engines such as Duck-
The third security option is to make it more difficult to iden- DuckGo are dependent on Google and Bing to answer search
tify the client by obfuscating the connection between the client queries, they cannot completely prevent personal data being
and the web server. VPN connections or the Tor network are collected. To counter this, the Web Discovery Project is looking
useful for this option. (The Tor network is a global anonymous to achieve total independence from the well-known commer-
network based on the principles of onion routing, a technique cial providers.
designed to ensure that the user’s Internet activity is untrace- In the last step of the basic configuration, the routine
able.) Some browsers include built-in VPN or Tor access, which prompts you to decide whether you want to send telemetry
removes the need to install additional client software. data. Both options are enabled but can easily be disabled by
unchecking the boxes.
Brave Browser The application’s default interface then appears. Unlike the
The Chromium-based Brave browser [1], or Brave for short, is familiar web browsers, you will not initially see any tiles for
an open source application for all platforms. On Linux, pre- quick access to commercial websites. Instead, there are three
compiled binaries are available for distributions that use DEB continuously updated numerical values for blocked trackers
Figure 1: You can easily block advertising and tracking technologies in Brave using the slider and selection box.
LibreWolf
LibreWolf [4] is based
on Mozilla Firefox, al-
though all of Firefox’s
components for sending
telemetry data, crash re-
ports, and diagnostic Figure 3: Many options for saving personal data are disabled in LibreWolf.
the Website Advertising Preferences, which “allow websites to Using Mullvad browser is roughly equivalent to using Tor
perform privacy-preserving ad measurement,” have been de- Browser but without using the Tor network. Mullvad does not
leted without replacement. Numerous other Firefox setting necessarily require VPN access.
options relating to local storage of personal data and sending After you complete the install, the Mullvad browser auto-
the data to the Internet are still available in LibreWolf, but matically adapts to the desktop language setting without any
they are disabled (Figure 3). special localization. The Settings menu is unusually simple.
Thanks to full compatibility with Firefox, LibreWolf can use You will recognize several options that you will be familiar
all extensions for the Mozilla browser. You can add extensions with from Firefox, such as the synchronization service, but
via the Mozilla [6] website using the same steps you would use the developers have removed other features, such as options
in Firefox. I recommend installing a Google Analytics blocker for saving authentication data. For this reason, you cannot
and the Privacy Badger add-on from the Electronic Frontier store payment data such as credit card numbers in Mullvad
Foundation (EFF). LibreWolf will also use Firefox themes Browser, and you cannot store passwords to auto-complete
without complaint. forms. Mullvad Browser uses letterboxing to restrict the dis-
You can add your own filter lists to the pre-installed Ublock play of web pages to certain sizes, which makes it difficult to
Origin if necessary, and you can enable additional lists if you identify users based on window or screen size.
frequently access websites abroad and want to prevent region- The list of alternative search engines in the Mullvad browser
specific advertising. is unusually extensive. By default, Mullvad relies on DuckDuckGo
LibreWolf does not integrate its own VPN service. To use the for search queries, but lesser-known search engines, such as
browser with a VPN, you need to install a native VPN client, Brave Search, Mullvad Leta, Startpage, or Mojeek can also be
which will then route all network traffic through the VPN tun- enabled at the push of a button. The list does not mention
nel. Alternatively, you could integrate an add-on from a public search engines with dubious privacy settings, such as Google
VPN service into the web browser. Note that many of the free or Bing.
providers are financed by advertising, which means that these Due to its full compatibility with Firefox, Mullvad Browser
extensions will potentially collect and pass on your personal can also use Firefox extensions. The Ublock Origin ad blocker,
data. It makes sense to think about using a commercial VPN NoScript, and the Mullvad Browser extension are pre-installed.
service that guarantees a high level of privacy. The Mullvad Browser extension lets you use DoH (DNS over
HTTPS) via a VPN. You will need access to the Mullvad VPN to
Mullvad Browser use this proxy service, however. Like all of the Swedish compa-
The Mullvad browser [7], which is the result of a cooperation ny’s services, Mullvad is optimized for data economy; you only
between the Swedish VPN provider Mullvad and the Tor proj- need to provide unavoidable personal data for setting up and
ect, is an option that is virtually unknown. Mullvad is based on billing. Without access to the Mullvad VPN, DoH remains
Firefox and is available as an open source product for several switched on but is not additionally tunneled through a VPN. In
popular platforms. You do not need to have a Mullvad VPN in this case, you use the extension to manually select a secure
place to download and install the web browser (Figure 4). DNS server from a list, to which the browser will then send the
Installation instructions for Debian, Ubuntu and its deriv- DNS queries.
atives, and Fedora are available from the manufacturer’s The Mullvad browser can alternatively use the Tor network.
website. The instructions describe how to integrate a sepa- You’ll need to download one of the Tor add-ons available for
rate repository to support regular, automatic updating of the Firefox.
web browser [8]. You
will also find a tarball
on GitHub and can in-
stall this tarball on any
distribution indepen-
dently of the package
manager [9].
On the project page,
Mullvad points out that
the browser was devel-
oped with the aim of
avoiding tracking and
fingerprinting. The de-
velopers have adopted
many elements from the
Firefox-based Tor
browser to enhance se-
curity. On top of this, all
of the telemetry settings
implemented in Firefox
have been removed. Figure 4: The Mullvad browser is also based on Mozilla Firefox.
Tor Browser
The Tor browser [13] has become
very popular in recent years. The
Mozilla derivative is based on the
current Firefox Extended Support
Release (ESR) versions and has
been expanded to include inte-
grated client access to the Tor
network. It can therefore also
reach “onions,” that is, websites Figure 8: The Tor browser lets you configure access to the Tor network.
Although the Tor browser is compatible with popular Firefox Mullvad and Tor browsers with integrated VPN access and the
extensions, only the add-blocking NoScript plugin is installed ability to connect to the Tor network are particularly appealing
by default. You will probably want to add an ad blocker such to users with an increased need for protection. Q Q Q
as Ublock Origin from the Firefox add-on repo to reliably re-
move annoying advertising from websites. Info
Because the Tor browser loads each website you visited in [1] Brave Browser: https://brave.com
an isolated environment, trackers and advertisements have [2] Install Brave Browser:
no way of tracking users across multiple websites to spy on https://brave.com/linux/#release-channel-installation
user behavior. By default, the application also deletes all [3] Snowflake mode:
cookies and browsing history when a session is closed. https://support.torproject.org/censorship/what-is-snowflake/
Another countermeasure to prevent fingerprinting is the Tor [4] LibreWolf: https://librewolf.net
browser’s function for customizing browser and device infor-
[5] Install LibreWolf: https://librewolf.net/installation/
mation. The browser adopts settings frequently used on the
[6] Mozilla add-ons: https://addons.mozilla.org
Internet, which makes it difficult to uniquely identify users.
[7] Mullvad browser: https://mullvad.net/en/browser
The Tor network typically establishes a connection via three
nodes, which it changes at regular intervals. However, it may [8] Instructions for the Mullvad browser:
https://mullvad.net/en/download/browser/linux
be necessary to manually renew the connection through the
Tor network. To renews the connection, use the New identity [9] Mullvad browser on Github:
https://github.com/mullvad/mullvad-browser
option in the hamburger menu. The browser then launches
with a new identity, which ensures secure web browsing even [10] Pale Moon: https://www.palemoon.org
if the old identity is compromised. The Tor browser encrypts [11] Download Pale Moon:
data to make the content unreadable for third parties. https://www.palemoon.org/download.shtml
[12] Unofficial Pale Moon packages:
Conclusions https://www.palemoon.org/contributed-builds.shtml
The five web browsers described in this article offer a privacy- [13] Tor Browser: https://www.torproject.org/
conscious alternative for users who are wary of giving their [14] Download Tor Browser: https://www.torproject.org/download/
data to Chrome and Firefox. See Table 1 for a summary of perti-
nent features. Brave browser and LibreWolf are solid web navi- Author
gators for everyday use and counter all common technologies Bernhard Bablok retired from Allianz Technology SE as an SAP
used for spying on users. Pale Moon is useful both as a second HR developer. When he is not listening to music, riding his bike,
browser and for Internet access on older and less powerful com- or walking, he focuses on Linux, programming, and small com-
puters thanks to its extremely resource-frugal operation. The puters. You can reach him at [email protected].
QQQ
A from-scratch distribution
with a diverse toolset
Chimera
Linux
Chimera Linux combines core tools from diverse sources to deliver
a simple yet complete modern operating system. By Bruce Byfield
I
n Greek mythology, the Chimera defining moment or incident that in- effort and infrastructural burden is a
was a monster with a lion’s body, a spired it? definite goal. I was experimenting with
goat’s head, and a snake for a tail. rewriting that tooling from scratch, and
It is an ideal name for a distribution
nina (q66): The goal is to rethink the way the distro grew around the tooling over
assembled from various parts of different
a Linux system works and is structured at the coming months. I left Void by the
operating systems and tools from diversethe low level. I was always unhappy with time the distro became capable of self-
sources, ranging from FreeBSD core toolshow big distros are often opaque (i.e., dif- hosting and it became focused too
and Clang Power Tools to Alpine’s apk- ficult to see what’s going on under the much on multiple projects.
tools package manager and systemd’s hood), clunky, and inflexible (i.e., difficult
logind. This fresh approach makes Chi- to adapt to different needs and slow to LM: What are the advantages and chal-
mera Linux (Figure 1) [1] stand out fromadopt modern enhancements in the com- lenges of building a distribution from
the dozens of distributions derived frompiler stack), while small distros are often scratch, both in the software and in the
a handful of long-established popular made with a specific idea or feature in distribution’s organization?
distributions. Here, nina (q66), Chimeramind and the rest of the system suffers due
to not having enough thought put into it,
Linux’s project leader, goes into techni- nina (q66): The main advantage is that
which limits its usability.
cal detail about this original distribution. you have nothing holding you back from
There wasn’t any particular defining realizing your ideas. You can make things
Linux Magazine (LM): What are the moment. It was something I had been how you want them without the rest of
goals of Chimera Linux? Was there was a toying with in my head for years before the distro needing adaptations, so you
the project have a lot of freedom. The challenges are
started. In early making good use of that freedom and the
2021, I was a Void total amount of work everything be-
Linux developer, comes – and, of course, managing a com-
and I was un- munity around a project of that scope is
happy with the a challenge as well, since it’s important
quality of its build to set a good example and foster the de-
tooling and infra- velopment of an environment that is fun,
structure. That’s safe, and welcoming. This is especially
something that I important as Chimera is a community,
feel like is a prob- free software space driven by volunteers,
Lead Image © kirillm, 123RF.com
nina (q66): I wanted to explore using nina (q66): All distros integrate tools nina (q66): I firmly stood against the
various compiler-based security harden- from a variety of sources. That’s kind cryptocurrency stuff from some years
ing techniques that are uncommon in of what defines a Linux distribution. back, and I can’t help but see the same
usual desktop Linux, things like com- All the tooling that we use fits fairly patterns this time. There are many things
piler-based control flow integrity protec- well together. I don’t think it’s particu- that make AI a nonstarter from an ethi-
tion and deployment of relevant produc- larly more challenging here than any- cal standpoint, so definitely not.
tion-usable parts of the sanitizer stack. where else.
That led to choosing Clang as the system LM: Who is the intended audience for
compiler, as GCC is way behind on these LM: Chimera assembles applications Chimera?
features. Deploying those features led to from a variety of sources. Does it include
choosing FreeBSD as the source of core any original apps? nina (q66): Currently mostly power
tools, because it was the only thing I users, meaning people that can handle
could use that was feature-rich enough nina (q66): Yes, lots. Well, I dunno if something like Debian, Alpine, Arch, or
to be usable while allowing me to build “apps” is a good thing to call them, be- Void. The system is generally leaning
it with the strictest possible hardening cause they are mostly low-level pieces, towards the desktop. The expectation is
without being too much of a pain. I was but for example: that the user runs it on their worksta-
also already familiar with the FreeBSD • Since Dinit is just a core service man- tion or laptop. However, we have good
community, being a long-time user. Musl ager, we have a complete suite of ser- support for single-board computers,
was chosen because glibc doesn’t work vice definitions for early boot and for networking equipment, and servers.
with a pure Clang compiler-rt system other services to rely on. This includes People are even playing with putting it
runtime (it dynamically opens libgcc_s. lots of functionality that needed vari- on mobile devices, and the system is
so.1, which normally does not exist in ous tools, such as management of bin- flexible enough to be a slim container
such a system). Nothing else was quite fmt registration, monitoring of devices, base as well. Brand new as well as
usable enough, and Dinit was chosen for management of the hardware and soft- some very old hardware is supported
service management because it seemed ware clock, kernel modules, mount- where reasonably possible. We support
to be a promising base to build some- ing, sysctls, and zram. a lot of architectures, from common x86
thing that can rival the parts of systemd I • Turnstile is a new framework for track- and AArch64 to PowerPC/ppc64/
like (which involves contributing to ing login sessions, which is something ppc64le and RISC-V and perhaps soon
Dinit itself as well as building more new a lot of software needs. It enables LoongArch. No use case is out of the
tooling around it). clean management of the D-Bus ses- question.
sion bus, the /run/user directory, as
LM: The project’s FAQ gives a detailed well as user services. LM: What plans does Chimera have for
opinion of systemd. How does Chimera • Libdinitctl is an API for controlling the the future?
actually use systemd? Dinit service manager from code,
which is relied on in lots of places. nina (q66): We plan to continue to
nina (q66): Chimera doesn’t use sys- • CKMS is our framework for manage- work on tools that benefit everyone
temd, but it uses some isolated parts of ment of out-of-tree kernel modules. and to build a good, universal Linux
it. Obviously udev is one thing, as a • Bandicoot is our daemon/application system, centered around the idea of
modern linux system can’t really work for capturing crash dumps and in- achieving 90 percent with 10 percent of
without it, but I also found the specting them. resources. We plan to avoid becoming
tmpfiles.d and sysusers.d frameworks There are also many little tools all over corporate-controlled and continue to
really nifty because they let us declara- the place. be a good community and stay ethical.
tively express what would otherwise be Free software is a political movement
done with adhoc shell scripts, and they LM: What security features does Chi- and always has been, and I want to re-
are a factor in enabling support for mera have? mind everyone that they can contribute
things like stateless systems in which in their own way. It’s not only (or even
all data not shipped directly by pack- nina (q66): Its similar to most Linux dis- primarily) about code, and making
ages is considered ephemeral. For now, tros in this regard, but it is significantly someone’s life a little bit better is more
we also still use the logind component more hardened at build time. Most pack- important than any technical
through elogind, but we are working on ages are built to disallow signed integer achievement.
replacing it with a homegrown frame- overflows. Clang control-flow integrity
work, due to various limitations of (CFI) is used in many places, and obvi- Conclusion
elogind. We also provide systemd-boot ously all the more common stuff, such For those who want to learn more
as one of the bootloader choices, and as SSP, PIE, RELRO, etc. There are plans about Chimera Linux and the philoso-
related tooling like ukify for creation of to deploy AppArmor in the future. phy behind it, the project’s home page
unified kernel images. is rich in detail. Q Q Q
LM: Does Chimera have any plans for in-
LM: How does Chimera integrate tools corporating AI, as some distributions are Info
from such a variety of sources? starting to do? Why or why not? [1] Chimera Linux: https://chimera-linux.org/
Meditative Surfing
Zen Browser, an open source Firefox fork, promises users the binary of the same name at the
command line.
greater convenience and improved data protection, along with When Zen Browser launches for the
customizable display modes to help you stay focused on your first time after installation, it first displays
work. By Harald Zisler a welcome message and then asks you a
few questions about your desired set-
T
tings. Start off by specifying your choice
he newly developed Zen Currently, the program lacks the ability of colors and the theme for the interface.
Browser, a Mozilla Firefox fork, to display multiple tabs in a single line, You can then import the bookmarks from
makes switching from the origi- although the developers are looking to a previously used browser and choose
nal Firefox browser easier add this capability to Zen Browser’s fea- your preferred search engine (Google,
thanks to its almost identical controls. ture set in an upcoming version (see the DuckDuckGo, or Wikipedia). Then press
With low resource consumption and “Version Jump” box). For the time being, Next to move on to the next setting.
innovative display modes, such as Zen Browser lists tabs vertically in the The granular settings relating to the
compact and split mode, Zen Browser sidebar. Similar to Firefox, you can quit start page, the search engine, the down-
offers genuine added value to newcom- the program by closing the last tab. load folder for downloads, data protec-
ers and those looking for a Firefox Zen Browser runs on Linux (x86_64 tion (for search, cookies, and history),
alternative. and AArch64), macOS, and Windows, passwords, and so on can be set up in
Zen Browser behaves like the original although the relatively new program is the Settings menu. You will find every-
Firefox in many respects, including in not included in the package sources of thing pretty much where you left it in
the settings, among other things. popular distributions. You can down- Firefox. However, the Privacy & Security
Photo by Callum Shaw on Unsplash
load Zen Browser from the website [1] menu does not contain any settings re-
Version Jump as a tarball or AppImage, or you can garding data collection by the project.
grab an installer from Flathub. The easi- According to the developers, Zen
I tested the Zen Browser alpha version
est way to install is with the tarball; just Browser does not send any data home,
1.0.1-a.19 for this article. After the edi-
unpack the TAR.BZ2 archive, which which removes the need for a data pro-
torial deadline, the project released the
weighs in at around 94MB, into a di- tection setting.
beta version 1.7.4b, which I was unable
rectory of your choice. This creates a The Zen Browser project offers various
to cover for this issue.
zen/ folder from which you can launch color and menu schemes in the form of
selection of shortcuts). You can change As a user, you will quickly become ac- Browser that I tested, there were occa-
the shortcuts in the Settings | Keyboard customed to the new display and han- sional program crashes, but these are –
Shortcuts if a shortcut conflicts with your dling options and not want to be without without a doubt – due to the early stage
window manager or some other them. In the alpha version of Zen of the application’s development. Q Q Q
application.
Table 1: Examples of Keyboard Shortcuts
Customization Action Shortcut
Various menu items can be added to the Windows and Tabs
toolbar. To do this, right-click on the New window Ctrl+N
toolbar and select Customize Toolbar in New tab Ctrl+T
the context menu. Zen Browser then Restore tab Shift+Ctrl+T
shows you all the available tools in the Close tab Ctrl+W
lower section. Simply drag and drop the Close window Shift+Ctrl+W
desired tool(s) into the toolbar and then Reload page Ctrl+R
press Done to apply the changes. End program Ctrl+Q
You have the option of using the
Special Views
mouse wheel to scroll through the open
Split view on Ctrl+Alt+G
tabs. However, there is currently no
Split view side by side Ctrl+Alt+V
menu item for enabling this function. In-
Split view one below the other Ctrl+Alt+H
stead, you need to open the internal pro-
Exit split view Ctrl+Alt+U
gram configuration page (about:config)
Compact view on/off Ctrl+Alt+C
in a new tab and enter toolkit.tabbox in
Navigation
the search line. You will see the toolkit.
Sidebar on/off Shift+Alt+B
tabbox.switchByScrolling line (Figure 3).
Web panel on Shift+Alt+P
Now you just need to double-click to
Bookmarks bar Shift+Ctrl+O
change the value of the option false to
true to activate scrolling. Jump to tab 1 to 8 Alt+1..8
Jump to last tab Alt+9
Conclusions
I have been working with Zen Browser
for some time now. From the outset, the
low system load generated by the pro-
gram has proven to be a positive feature.
Info
[1] Zen Browser: https://zen-browser.app
[2] Extensions: https://zen-browser.app/
mods
Author
Harald Zisler has been involved with
FreeBSD and Linux since the early 1990s.
He is the author of various articles and Figure 3: To change tabs using the mouse wheel, go to about:config to
books on technology and IT-related topics. configure this setting.
QQQ
Keeping Watch
A simple Python script checks to see if a process is running and, if is available on the Snapstore. From the
command line, you can install it with apt
not, notifies the user via Telegram. By Andrea Ciarrocchi using the command
R
eliability is a crucial aspect of a In addition, you will need a Telegram sudo apt install telegram-desktop
computer system, especially for account and the Telegram messaging ap-
servers. Because continuous plication [2] installed on a smartphone See the box entitled “Why Telegram?”
active monitoring isn’t feasible, or PC. For Ubuntu users, the application for more on why I chose it for this task.
implementing mechanisms to alert
the system administrator in case of a Why Telegram?
malfunction can be very useful. This
The choice to use Telegram for notifica- free. Additionally, with a tool like Slack,
article explores how to develop a simple tions comes from considering the avail- I would face the risk of future changes
tool that monitors the status of a process able options, each with its strengths in the company’s plans regarding ser-
and sends a Telegram message in the and disadvantages. The desirable char- vice pricing and feature availability.
event of a crash. acteristics of a notification system in- Email is widely supported by all kinds of
clude freedom from third-party con- devices and is free from third-party in-
Prerequisites straints, especially when it comes to terference. However, to send emails re-
To follow the development of this proj- for-profit companies; ease of use and quires a complex initial setup to support
ect, you’ll need an integrated develop- implementation; and flexibility, mean- various formats and the different secu-
ment environment enabled for Python ing the ability to send notifications to rity standards adopted by servers. Alter-
programming and some basic knowl- both smartphones and desktop envi- natively, I could install an SMTP server
ronments. A simple system involves on my own PC. A good candidate is
edge of the Python language. On
sending a text string to a listening port Postfix [5], which is relatively simple to
Ubuntu, it is possible to download VS
on a device using an application such configure, free, and open source. How-
Code from the App Center by simply
as Ncat [3], which is also available on ever, installing an SMTP server for send-
finding the VS Code page in the App smartphones. However, mobile devices ing notifications seems inappropriate
Center and clicking the Install button. If often have dynamic IP addresses, and too resource-intensive. The best
you prefer to proceed with the installa- which is inconvenient for this kind of compromise is therefore provided by
tion via the command line, the VS Code implementation. Additionally, receiving Telegram, an application managed by a
documentation provides all the neces- a string does not automatically notify private company but currently free. A
Photo by David Taffet on Unsplash
sary details for completing the proce- the user. Finally, for security reasons, scenario in which Telegram becomes a
dure on various distributions [1]. I rec- you should set up a firewall to accept paid service seems unlikely. Its configu-
ommend installing the Pylance, Python, connections only from trusted sources, ration for our purpose requires just two
and Python Debugger extensions to increasing the complexity of this ap- instructions and a few lines of Python
make development easier. Simply click proach. The Slack [4] platform is effec- code. Moreover, Telegram works on var-
tive and quite easy to use. However, ious platforms, including Android and
on the extensions button (on the left
Slack requires registration for its vari- iPhone smartphones, as well as desktop
side), select the extension, and proceed
ous usage plans, only one of which is environments.
with the installation.
Setting up a Telegram Bot as parameters when running the script screen; otherwise, a warning message is
The first step is to create a Telegram bot, from the console. sent to a specified user on Telegram.
which you can control using a Python The first step is to handle the applica-
script to send notifications. After launch- Developing the Script tion arguments, which include the
ing Telegram, access the search function The monitoring script will check token provided by Telegram, the user
by clicking on the appropriate icon at the whether a process is running at user-de- ID, the name of the process to monitor,
top of the main screen. Search for the fined intervals. If the application is run- and the time interval expressed in min-
string BotFather and select the corre- ning, the script prints a log string on the utes (Listing 1).
sponding entry. Then type the following
commands: Listing 1: Arguments
01 import requests
/start
02 import time
/new bot
03 from datetime import datetime
04 import psutil
BotFather will guide you through the
05 import argparse
process of creating a new bot, prompt-
06
ing you to choose a name and a user-
07 try:
name for your bot. You will receive a
08 parser=argparse.ArgumentParser()
token that you can use to interact with
the bot via a script. At this point, I 09 parser.add_argument("token", help="Token assigned by Telegram when creating
your Bot", type=str)
need to retrieve the user ID of the per-
10 parser.add_argument("user_id",help="User ID on Telegram", type=str)
son to whom I will send the messages.
11 parser.add_argument("process_name",help="Name of the process to check
I can use the Get Chat ID bot for this
for",type=str)
purpose. Just click on the User button
12 parser.add_argument("interval",help="Minutes of interval between
and select the desired contact from the
checks",type=int)
list. Make a note of the token and the
13 args=parser.parse_args()
user ID, which you will need to specify
IN-DEPTH
Automated Process Monitoring
The essential part of the script con- running (Listing 2). Listing 3: Output
sists of a loop that repeats as long as The boolean vari- filezilla up and running at 2024-07-21 16:49:13.559405
the process under examination is able found is set to
filezilla up and running at 2024-07-21 17:19:13.616971
False at the begin-
ning of the iteration. filezilla up and running at 2024-07-21 17:49:13.621785
06 found=True Info
07 [1] Visual Studio Code on Linux:
08 if(found==False): https://code.visualstudio.com/docs/
09 message = "Process " +args.process_name + " is currently down" setup/linux
10 print(message)
[2] Telegram Messenger:
11 url = f"https://api.telegram.org/bot{args.token}/sendMessage?chat_
https://telegram.org/
id={args.user_id}&text={message}"
[3] Ncat: https://nmap.org/ncat/),
12 requests.get(url).json()
16 Author
17 except Exception as e:
Andrea Ciarrocchi is a technology
enthusiast. Visit his homepage at
18 print(f"Error {type(e)}")
https://andreaciarrocchi.altervista.org.
Blocked Out?
After all the hype, we look at where blockchain is being used today outside cryptocurrencies.
By Tim Schürmann
T
he success of Bitcoin not only Blockchain is still widely used in finance from around 2019, at blockchain hype’s
prompted numerous other cryp- today, primarily for managing and pro- peak. It is from this period that Google
tocurrencies, but it also put cessing cryptocurrencies. The city of still turns up blog posts from large com-
blockchain in the spotlight for Detroit, Mich., in the US recently made panies raving about blockchain and
the IT industry. Investors jumped on the headlines for using blockchain to do planning its introduction.
bandwagon, companies appointed this. Starting mid-year in 2025, Detroit
blockchain managers, and countless will be accepting payments in crypto- Fresh Fish
studies and pilot projects explored the currencies [1], enabling people without Around 2019, the logistics industry was
potential applications. But what remains bank accounts, in particular, to pay their among the first to jump on the block-
of the former hype? This article sets out fees and taxes. chain bandwagon. The idea was that it
on a surprisingly rocky path in the In Germany, IT service provider would make it possible to securely track
search for clues about where blockchain adesso [2] has collaborated with Frank- goods, containers, and pallets at any
is being used today. furt-based finance technology company time. Every supermarket customer
A blockchain stores data blocks in a SWIAT, using adesso as one of several would then be able to check the block-
strict sequence. Unlike in a conventional validators. Independent systems ensure chain to see which trawler caught the
database, these blocks are stored in a that the blockchain used has not been prawns in their delicious prawn cocktail
chain. In order to detect manipulation, subsequently modified and that all ac- and from which part of the sea. The
each newly added block contains a tions carried out on it comply with pre- middlemen in the chain would also al-
checksum of the previous block, while defined rules – in this case with SWIAT’s ways know where their goods were (sup-
other sophisticated techniques ensure blockchain. ply chain management). IBM was look-
that the entire data chain can be stored Detroit, adesso, and SWIAT are just ing to empower traceability of fresh food
Lead Image © Dmitry Sunagatov, Fotolia.com
in a decentralized or distributed manner. three examples from the world of fi- [3] with its Food Trust project (Figure 1).
Blockchain’s functionality makes it nance. The list of blockchain applica- The idea was that the IBM Food Trust
suitable for accounting: It is tamper- tions in this area goes on and on. But project would also be able to store doc-
proof and every change can be tracked, what about projects outside the financial uments and certificates in the block-
like a kind of distributed ledger. Block- sector? chain. Producers and intermediaries
chain is also ideal for storing individual Anyone searching the Internet for would thus simultaneously be able to
tokens that represent passwords, images, blockchain solutions will initially find comply with requirements imposed by
or currency units, for example. mainly feasibility studies along with a governments and environmental organi-
For this reason, the financial sector wide range of ideas for potential use zations. The Food Trust project was
jumped on the blockchain bandwagon. cases. The majority of these articles date used by several large food companies,
including Australian vegetable whole- to ask the blockchain whether a parked And It’s Still Running!
salers Antonello Produce [4]. car had a parking permit for the parking SAP is still actively promoting block-
space currently occupied. If put into use, chain technology. SAP also did not
No Comment the solution could have made paper reply to discuss how they are using
I reached out to IBM to learn more about parking permits a thing of the past. blockchain, but a post on the SAP web-
the current status of the Food Trust proj- In the same year, Materna presented site mentions a few specific current use
ect. At the time of writing, I have yet to the Citizen Blockchain Project at the cases [11] including Velocity [12], a non-
receive an answer to my request. CeBIT trade fair. Citizens were asked to profit organization that collects school-
Blockchain was a big topic at Deutsche submit data from their air monitoring leaving certificates, diplomas, and other
Telekom in 2022 [5], but I also failed to stations to the blockchain set up by Ma- career-relevant information in a block-
receive a response when I reached out terna. Materna generated a particulate chain. When an application is submit-
to that company for an update. In 2022, matter map from the measurement data. ted, the company looking for a candidate
Deutsch Telekom splashed out on the The solution rewarded all submissions has access to the candidate’s current and
Celo [6], Polkadot [7], and Q [8] block- with tokens. Participants could then use complete career history. With the help of
chain networks through its Telekom these to make purchases in local stores the blockchain, Velocity looks to ensure,
Multimedia Messaging Service subsid- or an online store. The Citizen Block- among other things, that no false infor-
iary. While Celo and Q focus on financial chain, which is based on Ethereum, was mation is included on an applicant’s CV.
services, Polkadot attempts to connect also geared to support further similar Aside from financial applications,
different blockchains. In all three proj- projects. Materna even set up its own adesso uses blockchain as part of ades-
ects, Deutsche Telekom provided com- blockchain lab for research and soDraws [13], an electronic draw system
puting capacity via its Open Telekom implementation. for winning lottery numbers. Adesso-
Cloud, among other things. How I contacted the Materna press office to Draws selects the random numbers re-
Deutsche Telekom is investing in block- find out what has become of the two quired by betting service providers and
chain today and whether it is still in- projects (information regarding both transparently logs them in a blockchain,
volved in the projects remained unclear projects is no longer available on the allowing the winning draw to be trace-
due to the lack of a response. However, Materna website [10]), and again there able as well as tamper proof. According
Telekom MMS [9] now seems to have was no response. However, one thing is to the adesso website, an open source al-
more or less fully jumped on the AI certain, the city of Cologne continues to gorithm is used for the draw.
bandwagon. issue its legacy resident parking permits, Adesso – but you probably guessed this
which have to be placed on the already – did not provide any information
Officially Dropped windshield. on this or other projects. However, per
In 2018, German IT service provider Ma- After all the hype, interest in block- their website, the company has bundled
terna developed a blockchain for the city chain seems to have cooled off consider- its blockchain projects in its banking divi-
of Cologne that recorded all processes re- ably. With a little patience, however, you sion, making it clear that blockchain is
lating to residents’ parking. Both law en- can still find blockchain in practical use primarily at home there.
forcement officers and citizens were able cases outside the world of finance. Bosch is also actively driving for-
ward several blockchain projects. The
company did provide some insights
into its blockchain strategy. One area
of application is audit-proof evidence
management for vehicle fleets, which
is important for sustainability reports,
among other things. Evidence is kept
with the help of public, decentralized
identity systems, which in turn are
based on a blockchain. This allows the
associated EU requirements to be im-
plemented simultaneously. The solu-
tion also offers the advantage that in-
formation can be verified without hav-
ing to disclose further data.
Blockchain can also be found in the
Matter smart home standard [14]. The
Internet of Things (IoT) devices that fol-
low the Matter protocol encrypt their
communication. Tamper-proof certifi-
cates stored in a blockchain prevent ac-
cess from devices that have been com-
Figure 1: IBM Food Trust logs the transportation of food. promised by attackers.
The software company Krekeler also IBM Blockchain will also run in a Kuber- hazardous goods transportation moni-
utilizes blockchain’s immutability in netes cluster or, to be more precise, on a toring [28]. The focus on logistics is
Documentchain [15], a blockchain that system with Red Hat’s OpenShift. It can not surprising, because the Fraunhofer
allows authors and artists to store impor- either be booked in the IBM Cloud or Institute for Material Flow and Logis-
tant information about a file, such as its you can run it in your own data center. tics (IML), the Chair of Corporate Lo-
hash, in an audit-proof manner. In this IBM Blockchain still appears to be on gistics, and the Chair of Materials Han-
way, later manipulation of the file or the offer, but the associated tutorial [22] for dling and Warehousing were the orga-
authorship of an image can be clearly developers dates back to 2021. nizations involved in the Blockchain
proven. If required, Documentchain can Europe project.
be integrated into your own applications. Building Blocks However, Blockchain Europe has been
Two Fraunhofer Institutes [23] joined dormant for around a year. The last pub-
Flat Shapes forces with two chairs at Technical Uni- lication was a free guide [29] on the de-
In addition to ready-made blockchain versity Dortmund to launch a European velopment of blockchain-based business
applications, numerous frameworks and blockchain project, Blockchain Eu- models. Customs clearance [30] and the
blockchain implementations have rope [24]. Blockchain Europe’s members e-waybill [31] were taken over by the
sprung up in recent years. Solana [16] have developed several open source Open Logistics Foundation. According to
provides a complete blockchain platform components [25] that allow companies Max Austerjost, project manager at
along with its own protocol. Solana facil- to quickly and easily implement block- Blockchain Europe, the working group
itates the development of blockchain ap- chain applications, including Token responsible for the e-waybill has rejected
plications, but it also focuses on finan- Manager for storing and managing as- the blockchain approach and is looking
cial transactions and purchasing virtual sets, Authorization Module, and Light for “simpler” approaches. The working
goods, which primarily means unique Node Service (Figure 2) for connecting group for customs clearance, on the
digital objects, also known as non-fungi- physical devices to a blockchain and ex- other hand, is sticking with the block-
ble tokens (NFTs). However, companies ecuting certified transactions. chain, but it is currently still looking into
are not allowed to operate their own These three components were ulti- funding additional developers.
private Solana blockchain. mately used to create a blockchain-
IBM is different: The company offers based document repository. Like IBM, Future Prospects
a blockchain platform [17], IBM Block- the Blockchain Europe developers drew Despite the hype having died down,
chain, that companies can use to de- on existing software, using the Cosmos blockchain still seems to be popular. In
velop their own blockchain products. SDK [26] and the Tendermint [27] a survey conducted by the IT industry
Vertrax and Chateau Software have used framework based on it. association Bitkom [32] in fall 2023,
IBM Blockchain to track oil and gas de- In addition to the digital repository, blockchain continued to play a role in
liveries. The IPwe [18] platform, which there were plans to develop further ap- five percent of all start-up companies in
specializes in patent rights, has used plications (modules), including block- Germany, while 22 percent were still
IBM Blockchain to record who owns chain-based customs clearance, elec- looking into its use. In its press release,
which patent or intellectual property (IP) tronic waybills (e-waybills), and the city of Detroit actively called on
and at what time, resulting in a Global
Patent Registry (GPR), which, among
other things, simplifies the search for
patents and their owners.
entrepreneurs to submit ideas for further more of a niche product and that there is companies actively involved here, I can
possible applications for blockchain by often a lack of acceptance of the technol- only speculate as to the reasons behind
mid-December 2024 (no results had been ogy in this sector. With networking in this. It is very likely that there are simply
announced at the time of going to print). the mobility sector on the rise, Busch simpler and more established solutions
Blockchain also has a future at Bosch. sees the potential for products that can for most use cases.
In collaboration with Peaq [33], the fill the gap in the future. Max Austerjost cites another reason.
company is looking to introduce a De- Bosch brings this perspective to the He says that experience from various
centralized Physical Infrastructure GAIA-X 4 moveID project, part of the projects has shown that it is not techno-
(DePIN) device. This involves decentral- publicly funded European GAIA-X cloud logical feasibility but, instead, gover-
ized management of transport systems, infrastructure solution. GAIA-X 4 nance issues at the companies involved
energy networks, and other physical in- moveID aims to develop a decentralized that make it difficult to establish block-
frastructures based on blockchain. To- digital identity infrastructure for mobility chain solutions in practice, especially in
gether with start-up Fetch AI, Bosch has in Europe [34]. Bosch is significantly in- logistics. Nevertheless, many companies,
also set up a foundation to promote de- volved as the consortium leader and also and start-ups in particular, still have
centralized systems based on AI using relies on blockchain as a basis. blockchain on their radar, with some in-
blockchains and to promote an exchange teresting approaches. It remains exciting
in the industry. Conclusions and Outlook to see which applications blockchain
Bosch has also set its sights on mobil- Blockchain has firmly established itself will drive forward in the future. Q Q Q
ity applications. Peter Busch, Director of in the financial sector in particular. How-
the Mobility Strategy at Bosch, revealed ever, despite the wide range of potential Author
that blockchain is already being used applications and existing (open source) Tim Schürmann is a freelance computer
more widely in other industries, such as implementations, you still have to search scientist and author. Besides books, Tim
the financial sector. In the mobility sec- for use cases in other fields. Due to the has published various articles in maga-
tor, Busch says that applications are still lack of communication on the part of the zines and on websites.
Info
[1] Detroit use case: [19] Hyperledger Fabric: https://github.com/hyperledger/fabric
https://detroitmi.gov/news/detroit-become-largest-city-us- [20] Hyperledger Foundation: https://www.hyperledger.org/
accept-cryptocurrency-payments-taxes-other-fees
[21] LF Decentralized Trust: https://www.lfdecentralizedtrust.org/
[2] adesso and SWIAT collaboration: https://www.adesso.de/en/
[22] IBM Blockchain 101:
news/presse/adesso-and-swiat-facilitate-access-to-
https://developer.ibm.com/tutorials/cl-ibm-Blockchain-101-
blockchain-for-financial-institutions-with-swiat-access.jsp
quick-start-guide-for-developers-vbluemix-trs/
[3] IBM Food Trust: https://www.ibm.com/mysupport/s/topic/
[23] Fraunhofer Institutes:
0TO500000001y2FGAQ/blockchain-transparent-supply?
https://www.fraunhofer.de/en/institutes/institutes-and-
language=en_US&mhsrc=ibmsearch_a&mhq=food%20trust
research-establishments-in-germany.html
[4] Antonello Produce use case:
https://www.ibm.com/case-studies/antonello-produce [24] Blockchain Europe:
https://blockchain-europe.nrw/en/homepage-english/
[5] Deutsch Telekom use case:
https://www.telekom.com/en/company/details/blockchain- [25] Blockchain Europe source code:
technologie-und-die-telekom-1012528 https://git.openlogisticsfoundation.org/silicon-economy/
base/Blockchainbroker/digital-folder
[6] Celo: https://celo.org/
[26] Cosmos SDK: https://cosmos.network/
[7] Polkadot: https://polkadot.com/
[27] Tendermint: https://tendermint.com/
[8] Q: https://q.org/
[28] Blockchain Europe dangerous goods use case:
[9] Telekom MMS: https://www.telekom-mms.com/ (In German)
https://blockchain-europe.nrw/en/dangerous-goods/
[10] Materna: https://www.materna.de/en/
[29] Blockchain Europe guide: https://Blockchain-europe.nrw/
[11] SAP use case: https://www.sap.com/products/artificial- leitfaden-entwicklung-Blockchain-basierter-
intelligence/what-is-blockchain.html geschaeftsmodelle/ (In German)
[12] Velocity: https://www.velocitynetwork.foundation/ [30] Open Logistics Foundation customs blockchain:
[13] adessoDraws: https://www.adesso.de/en/ https://openlogisticsfoundation.org/foundation-projects/
adesso-branch-solutions/lotteriegesellschaften/ working-group-open-customs-Blockchain/
sonderthemen/adesso-draws/index.jsp
[31] Open Logistics Foundation electronic transport documents:
[14] Matter: https://csa-iot.org/all-solutions/matter/ https://openlogisticsfoundation.org/foundation-projects/
[15] Documentchain: https://documentchain.org/ working-group-electronic-transport-documents/
[16] Solana: https://solana.com [32] Bitkom 2023 survey: https://silicon-saxony.de/en/bitkom-
[17] IBM Blockchain: more-companies-are-dealing-with-blockchain-projects/
https://www.ibm.com/think/topics/blockchain [33] Peaq: https://www.peaq.network/
[18] IPwe use case: https://www.ibm.com/case-studies/ipwe [34] GAIA-X 4 moveID: https://moveid.org
Installing modern
commands with tasksel
Modern
Times
Many traditional commands now have modern replacements. With tasksel, you can install all of
them in a single step. By Bruce Byfield
M
any basic Linux commands want to use, along with their chief ad- feature that was obviously not possible
date back to the beginnings vantages. Table 1 is by no means com- before color monitors, but is now com-
of Unix. In over 50 years, plete, so anyone interested in moderniz- monplace. Many commands, too, edit
many have changed only in ing their systems should explore the output and documentation for clarity
minor ways, such as supporting tera- commands listed as well as similar ones and conciseness, as well as to reflect to-
bytes as a measurement of memory. Yet in order to evaluate them. For many day’s hardware and use cases. Some,
distributions continue to include these modern commands, GitHub is the place too, provide line graphics despite run-
traditional commands by default, be- to start to learn more. Besides the advan- ning from the command line, making
cause they are familiar and good enough tages listed in Table 1, many of the com- them more accessible. Most are drop-in
for most purposes. mands listed share common traits. For replacements, except for options de-
In the past decade or so, replacement example, many color code their output signed for use with obsolete commands
commands have started to appear. A few so that directories and different types of and the limited memory of antique
are official updates, such as Debian’s apt files are identifiable at a glance – a computers.
(which tidies apt-get) or Fedora’s dnf
(which is meant to replace yum and its
obscure code). These updates replace
older software seamlessly, but many
other replacement commands remain
an option.
Any day now, I expect a new distribu-
Lead Image © adiruch, 123RF.com
Working with tasksel (note the caret at the end) for the list tasksel recipe. Each recipe contains the
of Ubuntu-specific packages, such as fields shown in the example in Table 2.
After selecting the modernized com- kubuntu-full and ubuntu-mate-desktop. Save the recipe to /usr/share/tasksel/
mands you want to install, you need to Debian distributions install with descs/ or /usr/local/share/tasksel/
prepare a recipe for tasksel (aka task many tasksel recipes enabled. However, descs/ with a .desc extension. These
selection). Several decades old itself, you can also easily create your own directories can have subfolders to
tasksel is a little-known part of Debi-
an’s elaborate package management Table 1: A Partial List of Modern Commands
system, along with dpkg and apt. Most Traditional Modern Function Modern Advantage
Debian-based distributions use tasksel Command Command
apt, nala Debian pack- • Color functions
in their installer, where you may have
apt-get age manager • Concise output
seen it flash by on the screen in the
final stages of an installation, but not • Finds fastest mirror
all distros install tasksel by default. • Undo
• Parallel download
Ubuntu, for instance, does not. How-
bash kitty Terminal • Fast
ever, tasksel is generally available in
• Choice of interfaces
repositories and has several uses be-
• Extensible
sides in the installer. To start with, a cat bat File pager • Displays line numbers
recipe can be saved to reduce the time cd zoxide Change • Navigate to favorite directories with a few
to customize a new installation. In ad- directory keystrokes
dition, admins can use tasksel pack- • Works with all major shells
ages when installing multiple systems • Interactive directory selection
to ensure that each system is identical curl curlie Data transfer • Simpler interface
to the others. Moreover, if a minimal from URLs • Interactive health
net install is made, then tasksel can be • Customized config file with common
used to ensure that all installed pack- commands
ages are known to the admin – a basic • Works with JSON data
df duf Checks disk • Displays multiple devices
requirement for security.
space • Can select devices to display
Running tasksel requires root privi-
• Sorts multiple displays
leges. The bare command opens a com-
• Can display JSON data
mand-line interface (Figure 1) that lists diff delta File comparison • Displays line numbers
the recipes used during installation.
• More organized displays
Using
• Side-by-side view
• Compares directories
tasksel --list-task find fd (fd-find) Searches files • Supports regular expressions and glob
and directories • File type search path
displays the same information, prefac- • Works with .gitignore files
ing installed tasks with an i, and unin- • Can run command after file located
stalled tasks with a u (Figure 2).The grep rigrep Plain text • Faster
standard recipe is used only by the in- search • Searches on compressed files
staller, while the laptop package con- • Simple, customizable interface
sists of utilities that are useful on a history mcfly Records • Smart result prioritization
laptop, such as wireless tools and commands run • Track command exit status, timestamp, and
Bluetooth. Because tasksel has not execution directory
been updated since it started to use • Extensible
ls tree Displays files, • Visual representation of directories
meta-packages some years ago, the
directories • Select directories to display by number of files
--task-packages option only gives the
• Filter by device, last modification
meta-packages’ names, which is not lsd • Custom configuration file
very useful. However, if you install
• Custom display
apt-rdepends, you can see a package’s broot • Simple customizable displays
dependencies and recommendations. • Find and change to directory
You may also use the --test (-t) op- • Optional panels
tion before actually installing. Note • File previews
that in Ubuntu, either option only • Apply command on multiple files
shows Debian packages; to see Ubun- • Check Git status
tu’s tasksel packages requires the man tldr Documentation • Concise
workaround of entering • Examples
ping gping Tests availabil- • Graphs results
apt install task-name^ ity of hosts
organize the tasksel recipes. For exam- tasksel install TASKSEL-NAME alias tree='ls'
QQQ
Marathon
Runners
Rather than using ho-hum bar graphs to display
Internet bandwidth usage, Mike Schilli enlists cartoon
characters to do the job. Along the way, you get a free
introduction to 2D gaming sprite technology.
By Mike Schilli
T
he measured value in bits per to launch the daemon, which keeps a Now, a Go program could regularly re-
second for the data currently constant record of the throughput and trieve these values and display them in
pouring through my Internet con- stores the measured values in its own various ways. vnStat already comes with
nection provides information on binary database. After a little lead tools for interesting statistics (Figure 2),
whether my home network is working time, I can then query the number of but they still look a bit dull. How about
well or whether someone in the house- bits in the data flow over the past few using two cartoon characters as runners
hold is currently using an excessive minutes, hours, days, weeks, months, instead: one for the download count
amount of bandwidth. or even years. marching from right to left and the one
In a scenario where all of the data traf- Figure 1 shows the real-time output of for the upload marching in the opposite
fic flows through a central router such as the tool on the command line in re- direction, at a speed that matches the
my pfSense appliance, it is easy to aver- sponse to a request for the flow in both measured flow rate?
age the bit count over several seconds, directions. In Figure 1, the -i igb0 pa- Figure 3 shows the finished applica-
for example, using the genuinely helpful rameter selects the router’s WAN inter- tion. The Go program uses the Fyne
vnStat utility. To install the tool on my face, while -tr requests the utilization in framework to dynamically display the
pfSense router as a normal package in real time. runners. The runners not only move
typical FreeBSD style, I call vnStat normally listens for five seconds from left to right and vice versa, but also
before it outputs the averaged result. Add- animate their limbs as they run. This is
pkg install vnstat ing the unnamed 2 parameter shortens the achieved by overloading individual im-
time span to two seconds. The tool out- ages in quick succession like in a car-
and then puts the measured values for rx (receive, toon production – but more on this later.
download) and tx (transmit, upload) in
service vnstat start bits per second, kilobits per second, or Secure Without a Password
megabits per second depending on the For the Go program to be able to log into
order of magnitude of the measured value. the router’s user account without
Lead Image © Saniphoto, Fotolia.com
Author
Mike Schilli works as a
software engineer in the
San Francisco Bay Area,
California. Each month
in his column, which has
been running since 1997,
he researches practical applications of
various programming languages. If you
email him at [email protected] Figure 1: The vnstat command on the firewall displays the utilization in
he will gladly answer any questions. megabits per second.
Not Picasso
Artistically gifted readers should feel free
to draw their own sprites. If you are not
Picasso, though, it might be advisable to
download some freely available images
from freepik.com. The offset of the indi-
vidual frames from the edge of the sprite
sheet, and from each other, in the X and
Y directions can easily be determined as
pixel values by using a photo editor such
as Gimp (Figure 5). The animation pro-
gram (Listing 1) parses the downloaded
PNG file later, and then it proceeds to
Figure 3: Go and Fyne can be used to visualize downloads and uploads decode the compressed data and save
in a far more entertaining way. the image pixels in a Go standard library
structure of the image.Image type.
By way of an example, the second
frame in the second row of Figure 5
has an index number of 6, because the
indices start at zero and there are five
frames per row in the sprite. The
frame’s top left corner is located at the
X coordinate xOff + width + xPad while
the Y coordinate is yOff + height + yPad.
The NewSprite() constructor from line
18 in Listing 1 defines the coordinates
and dimensions of the individual im-
ages for this purpose.
The caller passes the reversed flag to
Figure 4: You can enable SSH for shell commands on pfSense with just a the constructor to define whether the ex-
few settings. tracted icon should run to the right or
left. To move to the left, the flipH() The extractIcon() function starting in sprite sheet contains the 10 images in
function starting in line 71 mirrors all line 59 extracts individual icons with two rows of five icons each (Figure 6).
icons horizontally after reading. index numbers that start at 0 in idx. The Based on the index number, the function
first performs an integer division and a
modulo operation to compute the row
and column of the desired frame. For ex-
ample, the icon with the index value of 8
is the second-to-last icon in the second
row, where row=1 and col=3 (remember
that indices start at 0).
Quirky Mirroring
The call of the Draw() function from the
Go image package used in line 67 of
Listing 1 has a minor quirk. After crop-
ping a single image, its coordinates do
Figure 5: The gaps between the individual images are used for cropping. not necessarily start at (0,0). Instead,
© topvectors, 123RF.com the variable with the partial image
Listing 1: sprite.go
01 package main 44
02 45 func loadPNG(path string) (image.Image, error) {
03 import ( 46 file, err := os.Open(path)
04 "image" 47 if err != nil {
05 "image/draw" 48 return nil, err
06 "image/png" 49 }
07 "os" 50 defer file.Close()
08 ) 51
09 52 img, err := png.Decode(file)
10 type Sprite struct { 53 if err != nil {
11 xOff, yOff int 54 return nil, err
12 width, height int 55 }
13 xPad, yPad int 56 return img, nil
14 columns int 57 }
15 reversed bool 58
16 } 59 func (s *Sprite) extractIcon(sheet image.Image, idx int)
17 image.Image {
18 func NewSprite(reversed bool) *Sprite { 60 col := idx % s.columns
19 return &Sprite{ 61 row := idx / s.columns
20 xOff: 313, yOff: 67, 62 x := s.xOff + col*(s.width+s.xPad)
21 width: 205, height: 258, 63 y := s.yOff + row*(s.height+s.yPad)
22 xPad: 27, yPad: 39, 64
23 columns: 5, 65 iconRect := image.Rect(x, y, x+s.width, y+s.height)
24 reversed: reversed, 66 icon := image.NewRGBA(iconRect)
25 } 67 draw.Draw(icon, iconRect, sheet, image.Point{x, y},
26 } draw.Src)
27 68 return icon
Cartoon Time
The GUI framework Fyne now has to
thumb through the 10 individual
cropped images in quick succession in-
side a container to create the illusion
of movement.
Listing 2 defines the Flicker structure in
line 10. It saves the frames as an array and
stores whether the runner should move to
the right or left in Reversed. The Load-
Sprite() function starting in line 21 later
Figure 6: The sprite sheet contains the individual images of the calls Icons() from Listing 1 to load the
animation in two rows of five icons each. © topvectors, 123RF.com frames from the file with the sprite sheet.
For Fyne to be able to display the frames,
retains a reference to the full sprite in line 77, to first iterate over all pixel NewImageFromImage now has to import each
image and sets an (X,Y) offset in its coor- rows based on the frame height and frame object. Line 33 of Listing 2 appends
dinates to the actual top-left corner of then over all columns based on the each new frame to the Frames array in the
the icon. frame width. The code then swaps the instance structure for later use.
The flipH() function starting in line pixels at opposite X values in each The cartoon character starts running
71 also needs to take this into account. image row. While doing so, it takes into when Animate() is called, starting in line
The assumption that the X and Y coor- account the X and Y offsets extracted 38. The runner’s starting speed is initially
dinates start at 0 when flipping results from the original image as Bounds(). set to 0.0. It can increase to a maximum
in an incorrect section. The correct ap- Note that these do not necessarily of 100.0 over the course of the run. The
proach is to use a double loop, starting match the indices of the for loop. goroutine launched concurrently starting
Listing 2: flicker.go
01 package main 33 f.Frames = append(f.Frames, canvasImage)
02 34 }
03 import ( 35 return nil
04 "fyne.io/fyne/v2"
36 }
05 "fyne.io/fyne/v2/canvas"
37
06 "fyne.io/fyne/v2/container"
38 func (f *Flicker) Animate() (*fyne.Container, chan
07 "time"
float64) {
08 )
39 ch := make(chan float64)
09
40 con := container.NewMax(f.Frames[0])
10 type Flicker struct {
13 } 43
14 44 go func() {
15 func NewFlicker(reversed bool) *Flicker {
45 for {
16 return &Flicker{
46 select {
17 Reversed: reversed,
47 case speed = <-ch:
18 }
48 speed = limiter(speed)
19 }
30 canvasImage := canvas.NewImageFromImage(icon) 58
32 canvasImage.SetMinSize(fyne.NewSize(100, 100)) 60 }
in line 44 enters an infinite loop with a right (upload) within their Fyne contain- the select statement (line 33). This then
select statement that normally waits for ers or in the opposite direction (down- goes ahead and sets the local speed vari-
the cartoon timer to kick in every 100ms load). Listing 3 encapsulates the code for able, persisted by closure, to the new
in line 49. advancing the runner in an object-ori- value and pushes the runner along
Line 50 increases the count counter to ented approach. accordingly.
reflect the defined speed in relation to the The NewMover() constructor expects the When the animation timer in line 41
maximum speed such that the display reverse flag, which specifies whether the expires after 10ms, the position pos of
advances two positions at full speed. next round is forward or backward. Its the graphic object obj to be moved is as-
The old frame is now removed from the Animate() function returns two parame- signed a new value. This reflects the dis-
Fyne con container and the new frame is ters similar to the sprite animator in List- tance covered in the meantime at the
inserted instead by a call to Add(). Re- ing 2: a Fyne container in which the speed and the direction of movement.
fresh() updates the display. This is done sprite is traveling and a channel through
10 times per second to create the illusion which the caller can influence the speed In and Out
of fluid movement. of the animation during live operation. If Line 46 defines what happens at the left
the caller later pushes a new floating- container boundary for the reverse
Runner Running point value into the channel, a concur- movement. In this case, pos has a clearly
The runners aren’t just moving their rent goroutine starting in line 28 reads it negative value and the moving object
limbs; they also advance from left to from the channel in the case branch of has already run beyond the left
Listing 3: mover.go
01 package main 39 obj.Show()
02 40 }
03 import ( 41 case <-time.After(10 * time.Millisecond):
04 "fyne.io/fyne/v2"
42 pos += float32(speed * direction / MaxSpeed)
05 "fyne.io/fyne/v2/container"
43 }
06 "time"
44
07 )
45 if m.Reverse {
08
11 } 48 }
12 49 } else {
13 func NewMover(reverse bool) *Mover {
50 if pos > con.Size().Width {
14 return &Mover{
51 pos = -obj.Size().Width
15 Reverse: reverse,
52 }
16 }
53 }
17 }
18 54 obj.Move(fyne.NewPos(pos, (con.Size().Height-obj.
Size().Height)/2))
19 func (m *Mover) Animate(obj fyne.CanvasObject) (*fyne.
Container, chan float64) { 55 con.Refresh()
20 con := container.NewWithoutLayout(obj) 56 }
21 speed := MinSpeed 57 }()
22 ch := make(chan float64)
58
23 direction := 1.0
59 return con, ch
24 if m.Reverse {
60 }
25 direction = -1.0
61
26 }
29 pos := float32(0) 64
30 obj.Hide() 65 func limiter(speed float64) float64 {
31 for {
66 if speed > MaxSpeed {
32 select {
67 return MaxSpeed
33 case speed = <-ch:
68 } else if speed < MinSpeed {
34 speed = limiter(speed)
69 return MinSpeed
35 if !obj.Visible() {
36 if m.Reverse { 70 }
38 } 72 }
Listing 4: vnstat.go
01 package main 26 rx, err = toBits(match[2], match[3])
04 "fmt" 29 } else {
06 "math" match[1])
07 "os/exec" 31 }
10 34 }
13 tx := float64(0) 37 }
14 38
15 cmd := exec.Command("ssh", "-p", "8022", 39 func toBits(str string, unit string) (float64, error) {
"[email protected]", "vnstat", "-i",
40 s := str + string(unit[0])
16 "igb0", "-tr", "2")
41 i, err := humanize.ParseBytes(s)
17 output, err := cmd.Output()
42 return float64(i), err
18 if err != nil {
43 }
19 return rx, tx, err
44
20 }
45 func toBitRate(bps float64) string {
21 rateRex := regexp.MustCompile(`(?m)^\s+([rt]x)\
46 return humanize.Bytes(uint64(bps)) + "it/sec"
s+([\d.]+)\s+(\S+)`)
47 }
22 matches := rateRex.FindAllStringSubmatch(string(out
put), 2) 48
25 if match[1] == "rx" { 51 }
boundary of the container. This explains the current value, the display program Line 15 shows the command that uses
why line 47 causes it to slowly reappear needs to log in to the firewall via SSH SSH to connect to the IP address of the
at the right container boundary. and send the vnstat command. Listing 4 firewall on the defined port. The regular
Line 50 checks for the opposite case in handles this task in Go. expression starting in line 21 then
forward motion, causing the moving ob-
ject to reappear at the left boundary as
soon as it has cleared the container edge
on the right. The fact that Fyne pro-
cesses negative coordinates without
complaint and simply keeps clipping the
moved object, or lets it disappear en-
tirely, is definitely a big help here.
The limiter function starting in line 65
ensures that the speed limit of 100.0 isn’t
exceeded and that no negative speeds
pass through the channel either. Inciden-
tally, the MaxSpeed and MinSpeed con-
stants not only apply in Listing 2, but in
all five listings, because they all belong
to the main package.
Speed Trap
But how does the GUI know how fast the
bits are flowing through the line to my
ISP? As I mentioned at the beginning,
there is a vnStat process busy measuring
and recording on the firewall. To obtain Figure 7: Runner speed as a function of the bit throughput.
separates the tool’s return values shown However, the bitrate moves through drama of the race: If the runner only runs
at the beginning (Figure 1). It extracts several dimensions during operation. If four times faster when the bitrate is one-
two values, rx and tx, which are each there is hardly any activity, it could thousand-times faster, that doesn’t look
available as floating-point numbers with bumble along at 1 kbps, but at full load very realistic.
units, for example 1.3 Mbps. it can be 10,000 times more than that at Instead, Listing 4 in line 50 uses the
The toBits() function starting in a full 10 Mbps. To avoid the runner al- Sqrt() square root function from the Go
line 39 converts this into machine- most coming to a complete standstill math package, which allows for greater
readable bits per second using the when the line is idle, I want it to at least running speed fluctuations. If line 50 di-
humanize package from GitHub. Con- bumble along at a speed of 1 in case of 1 vides the X value by 1,000 and then
versely, toBitRate() starting in line 45 kbps of bandwidth being used. At the takes the square root, the conversion
converts a bit value back into a hu- full load of 10 Mbps, it’s supposed to be handles the desired distribution rela-
manly-readable string, which the GUI running at a speed of 100. Figure 7 tively well as shown in Figure 7.
later uses for display purposes. shows the mapping function.
A mapping function suitable for these Show Time!
Scaling number ranges, which extend over sev- Now the main program (Listing 5) just
The runner is moving forward at a virtual eral dimensions, is difficult to describe in has to combine all the components
speed between 0 (standstill) and 100 (full a linear way – you would normally want covered so far and display the result
sprint), depending on how many bits per to use something like a logarithmic func- on screen. Before that, the auxiliary
second are flowing across the line. tion. Unfortunately, this detracts from the mkPanel() function starting in line 16
Listing 5: marathon.go
01 package main 35 panel := container.NewVBox(meter, mvCon)
03 import ( 37 }
04 "fyne.io/fyne/v2" 38
10 "os" 44
15 49 myWindow.Resize(fyne.NewSize(float32(800),
func(float64)) { 50
21 } 55 panic(err)
24 mv := NewMover(isDownload) 58 downUpdate(rx)
26 meter := widget.NewLabel("") 60 }
27 61 }()
33 } 67 myWindow.ShowAndRun()
34 68 }
Listing 6: build.sh fastest wins. But if the bitrate measured the panels on top of each other. The
$ go mod init marathon
by the tool changes, there are two chan- concurrent goroutine starting in line 51
nels competing to be served: the flip- then enters an infinite loop, which uses
$ go mod tidy
book channel and the moving box chan- vnstat() to retrieve the latest measured
$ go build
nel. The solution is provided by the values for rx and tx from the firewall
throttle() function starting in line 28, and passes them to two functions, upUp-
gathers what belongs together for a which the code defines within the mk- date() and downUpdate(), one for each
connection direction: the flipbook of a Panel() function. transmission direction, for display pur-
runner (NewFlicker()), its animation Ultimately, the function is returned to poses. After a three-second pause, the
container (avaCon), and the update the caller like a normal value. The caller next round commences.
channel (avaCh). can call it by reference later and pass it Before ShowAndRun() in line 67 enters
NewMover() bundles the container the newly measured value. Under the the main event loop of the Fyne frame-
into a box that moves in the direction hood, the function then passes the value work, the SetOnTypedKey() callback in
of the connection in sync with the bi- on to the two listener channels and re- line 63 ensures that the GUI application
trate thanks to the Animate() function. freshes the digital display in meter. It’s shuts down gracefully when the user
Last but not least, line 26 adds a digital handy to have a programming language presses a key.
display of the upload and download that handles functions like normal The familiar command sequence from
speeds to the panel as text in the meter variables. Listing 6 builds the marathon binary from
widget. The main() program starting in line 39 all five listings, which it expects to find
If you inject a value into a channel in now needs to open a new Fyne applica- in the same directory. Before the first call,
Go, only one receiver is allowed to pick tion and hand the two newly created it must have SSH access via public key
it up at any given time – if several receiv- panels over to the main window for lay- to the router where vnStat is installed
ers are listening, the one that accesses it out. A container of VBox type arranges and running. Let the race begin! Q Q Q
QQQ
IN-DEPTH
Bash Stats
T
ing 2, variables are predefined and de-
ypically when I’m looking to do for creating an SQL SELECT-style state- faulted with the -v option. An if state-
some data analysis, I’ll import ment in AWK is: ment can be used to check and set vari-
the data files into Pandas ables on a row-by-row basis. The aver-
DataFrames or an SQL database. awk -F, 'condition {U age calculation uses a two-step pass.
During a recent project, I was happily print column_numbers}' filename The first pass totalizes column $2 into a
surprised to learn that I could do a lot variable called sum. An END statement
of basic statistics with only one line of Figure 2 shows an example comparing defines the end of the first step, and
Bash code. an SQL SELECT statement
For simple applications, Bash tools such with an equivalent AWK Listing 1: Basic Stats Using sort and bc
as sort and bc (the arbitrary precision cal- statement. The first pa- $ # Basic stats using sort and bc
culator) can be used to find maximums, rameter in the AWK line is $ data=(3 4 18 7 2 19 15)
minimums, averages, and sums from ar- -F,, which sets the col-
$
rays or columns of data (Listing 1). umn format separator as a
$ # Find the Max value in an array
For CSV data files, a single line of Bash comma. In AWK, the con-
$ printf "%s\n" "${data[@]}" | sort -n | tail -n 1
that combines AWK [1] and gnuplot [2] ditions (or the WHERE state-
19
can be used to view statistics or graph a ment) come first, followed
column of data (Figure 1). by print to output the re-
$ # Find the Min value in an array
In this article, I will cover using AWK quired columns.
to filter and extract data from CSV files Unlike SQL, AWK uses $ printf "%s\n" "${data[@]}" | sort -n | head -n 1
gnuplot
Gnuplot’s statistical option can be used
as a standalone tool or integrated with
Bash commands. To use gnuplot with
CSV files, the data separator will need to
be set before the stats can be calculated:
$ gnuplot
Figure 1: Use Bash for stats and plotting data on a graph. awk -F, 'condition {print column}' U
filename | gnuplot -e 'stats "<cat" '
then the second step prints the average piped to sort and head to find the maxi-
result. For complex AWK scripts, multi- mum value: Listing 2: Basic Stats Using AWK
ple steps can be defined within BEGIN $ # Use AWK to get stats on a CSV file
and END blocks. $ awk -F, '{print $2}' numbers.csv | U $ cat numbers.csv
The beauty of AWK is that it can filter sort -n | tail -n1
Monday, 1.1
or preprocess the data for other Bash 9.81 Tuesday, -3.6
commands. For example, AWK can be Wednesday, 9.81
used to extract column $2 data from a It should be noted that there are several Thursday, 6.0
CSV file, and then the results can be statistical command-line methods
$ # find a min, use a large starting
value
-3.6
9.81
13.31
3.3275
Figure 2: Use AWK like an SQL SELECT statement.
The gnuplot -e option is used to execute Figure 3 shows a statistical example then the result can be used/printed
a string of statements, and the "<cat" that compares similar AWK/gnuplot based on the prefix_stat. For example,
parameter defines that the input data is commands and results with an SQL to get the median value of a column, you
piped. statement. The gnuplot stats option re- would use
turns a fairly com-
Listing 3: Using AWK with sta plete list of calcu- gnuplot -e 'stats "<cat" name "TEMPS" U
$ # Use AWK with the sta utility
lations. To extract nooutput; print TEMPS_median'
...
Correlation: r = 0.1488
Figure 7: Create a curve fit in gnuplot.
Subtle
Differences
Most PDF viewers lack a function for comparing PDF files, but DiffPDF
shows you the differences at a glance. By Erik Bärwaldt
D
iffer tools, which compare two prompt. For an overview of parameters, load the comparison document. You will
files and visually highlight the use the diffpdf --help command. The still only see a note, telling you to start
differences between them, exist graphical version also comes with a help the comparison by pressing the button.
for many file and archive for- function that explains the tool’s individ- If you accidentally select the same file
mats. These programs are particularly ual functions. twice, DiffPDF displays a warning telling
useful if you have two or more versions On first launch, a three-pane program you that it Cannot compare a file to
of a file and cannot see the differences window pops up. When loaded, the files itself.
immediately. Many of these comparison to be compared appear in the two larger Alternatively, you can drag and drop
tools are command-line-based and re- panes on the left and in the middle. the files to be compared from the file
quire knowledge of an extensive set of Above this, there is a single line with the browser into the window segments. The
parameters. If you need to compare PDF fields for the file names and paths. You user instructions are identical to those
files, DiffPDF [1], with its graphical user can see the actual controls in the third displayed for manual file selection in the
interface, compares both the text compo- window segment on the far right. The dialog. Now press Compare in the Ac-
nents of two PDF files as well as the em- Controls tab and the matching dialog are tions section bottom right to load the
bedded images for differences. shown at the top. The Actions dialog is two documents into a slightly smaller
According to the original developer, located in another tab line at the bottom. view in the corresponding window seg-
the free version of DiffPDF is no longer However, you will not find a menubar or ments. The differences are highlighted in
under active maintenance due to the a buttonbar. red (Figure 1).
European Union’s 2024 Cyber Resilience On the left-hand side of the view, you
Act [2]. As a result, the binary package Using the Program will find red vertical bars at the points
Photo by Sumner Mahaffey on Unsplash
is no longer available on the DiffPDF Start by loading the two files you want where DiffPDF has identified differences.
website. Instead, you need to download to compare. To do so, select File #1 top You can adjust the width of these mark-
it from your distribution’s repository. left. DiffPDF then opens a file manager ers to suit your needs after clicking on
You will find DiffPDF in the repositories to let you browse to the directory of the Options on the right below the Compare
of most of the popular distributions [3] first file and load it. This file is not button and entering a larger numerical
and can conveniently install it with your shown in the window segment for the value in the Rule width input field in the
distribution’s package manager. Doing time being; instead you will see a dialog.
so creates a starter in the main menu. prompt relating to selecting the second In the Highlighting tab in the same
You can also run the software at a file. Now click on File #2 and select and window, you can make further changes
Comparison
Modes
DiffPDF offers
three different
comparison modes,
which you can set
in the Compare se-
lection box in the
Controls tab top
right. By default,
DiffPDF uses a
word-for-word
comparison, but it
alternatively sup-
ports character-for-
character and vi-
sual modes. Visual
Figure 1: The differences immediately catch the eye thanks to color highlighting. mode is used to
compare images in
the PDFs. You can
to the appearance if necessary. For ex- respective pair of pages in the View se- use this function, say, to make sure that
ample, you can change the highlighting lection field in the Controls tab top right. individual charts or images are up to
color by choosing an entry from the se- You can then use the Previous and Next date when evaluating statistical data.
lection list and alter the opacity of the buttons to scroll through the documents The character-for-character compari-
color-highlighted background to improve page by page. If the pages are so small son, on the other hand, enables com-
readability. that you cannot clearly see the differ- parison of PDF documents based on
To view the individual pages of multi- ences on screen, you can zoom in by se- logographic writing systems, including
page documents opposite each other in lecting a larger value in the Zoom field. Chinese Hànzì and Japanese Kanji.
the window segments, select the As soon as you click Compare again after The Zoning tab bottom right in the
program window is
where you define
range numbers,
which the app then
includes in the
comparison, as well
as the horizontal
and vertical toler-
ances (Figure 2).
You can define col-
umns here, for ex-
ample. A little effort
put into customiza-
tion can help to re-
duce the false posi-
tive rate, especially
for tables. In the
case of single-col-
umn continuous
text, DiffPDF pro-
vides the individual
areas with a small
frame and an as-
Figure 2: You can use area numbering to improve the overview. cending number,
which helps you to find certain para- Conclusions DiffPDF is still a good choice for users
graphs more quickly and improves the DiffPDF is a handy program for compar- who frequently need to compare PDF
overview. For multipage documents, the ing two PDF files. The software is intui- files, regardless of the desktop environ-
numbering restarts on each page. tive in its use and can be adapted to in- ment they use. Q Q Q
DiffPDF compares the documents page dividual requirements thanks to its
by page. This is why it tags document wide-ranging configuration options. This Info
parts as different if they exist in both is a massive benefit for users with visual [1] DiffPDF: http://www.qtrac.plus.com/
files but on different pages. The number impairments in particular. On a simple diffpdf.html
of differences found is shown in red in scale, the application can also be used [2] Cyber Resilience Act:
the log data, which you will find bottom for version documentation if you want or https://www.bsi.bund.de/EN/Themen/
right below Log. The log also tells you need to continuously add to and edit a Unternehmen-und-Organisationen/
the number of pages where DiffPDF PDF file and document the individual Informationen-und-Empfehlungen/
found differences. versions including the differences be- Cyber_Resilience_Act/cyber_resil-
tween them. ience_act_node.html
Documentation If you are using the program on a [3] Package overview:
You can save the individual comparisons GTK-based desktop such as Gnome, https://pkgs.org/search/?q=diffpdf
for documentation purposes by using the Mate, or Cinnamon, please note that the
Save as option in the Actions tab bottom Author
changes you make to DiffPDF’s visual
right. In the configuration dialog, you appearance, which is based on the Qt
Erik Bärwaldt is a self-employed IT
need to specify whether you want the framework, may not take effect. Be-admin and technical author living in the
routine to save all pages or just the cur- cause these minor annoyances play aUnited Kingdom. He writes for several IT
rent page and whether the program very small role in terms of functionality,
magazines.
should save just
one of the two com-
pared pages or both
pages side by side.
After specifying a
file name and a
path, the applica-
tion saves the con-
tent as a PDF file
that you can then
open with any stan-
dard PDF viewer
(Figure 3). DiffPDF
does not save the
control and config-
uration dialogs dis-
played in the pro-
gram window on
the right. Instead, it
limits the content
to the results of the
current compari-
son, including all
visual highlighting. Figure 3: The comparison results can be saved for documentation purposes.
QQQ
MakerSpace
Use a Raspberry Pi plus a temperature
sensor to talk to a PS Vita Display
T
he Lua programming language performance test that compares startup
[1] is often viewed as mainly a times. Next, I’ll look at some good applica-
video game scripting language, tion fits for Lua, and I’ll finish with a small
because many popular games home project that uses a Raspberry Pi Zero
such as Angry Birds, Roblox, and World W that sends weather data to a PlayStation
of Warcraft use it. But Lua scripts run (PS) Vita handheld gaming console.
extremely fast, making Lua a good option Before jumping into a Lua solution,
for many small embedded systems it’s important to consider the pros and
where Python isn’t supported or may cons. On the positive side, systems like
have performance issues. laptops and Raspberry Pis can have
In this article, I’ll introduce Lua by let-
Lua initial call-ups 10 times faster than
ting it fight Python in a simple with Python. For very low-end systems
with memory
Listing 1: Test Startup Times on Lua and Python constraints, you
01 #!/usr/bin/bash
may see Lua
02 # Run timing test for Lua
starting more
than 30 times
03 start=$EPOCHREALTIME
faster than Py-
04 lua -e "print('Hello from Lua')"
thon. On the neg-
05 end=$EPOCHREALTIME
ative side, Lua
06 runtime1=$( echo "$end - $start" | bc -l )
doesn’t have the
07 echo -e "Execution time for Lua: $runtime1 seconds\n" vast libraries,
08 documentation,
or user support
Lead Image © Hermin Utomo, 123RF.com
Figure 1: This OpenWrt/Lua web page lets you monitor USB ports.
coding projects Python will typically is based on Lua and the LuCI frame- function call (which runs a command
be the better choice. work. You can install Python on Open- cmd with error recovery enabled) and a
Wrt systems, but due to Lua’s speed and
Lua vs. Python Startup Test the fact that it’s preinstalled, Lua is an read('*a')
Listing 1 is a Bash script that compares option that should be considered. Lua
the startup times between Lua and can also be useful for connecting com- read-all call that retrieves the output of
Python. mand-line tools or as an alternative to the command cmd.
Startup times will vary based on hard- Bash scripts. Custom web pages can use OpenWrt’s
ware, available memory, and back- There are many hardware applications web server by adding files to the /www/
ground CPU activity. For laptops and where Lua can be used to monitor or cgi-bin directory. Figure 1 shows a Rasp-
Raspberry Pi 4 modules, Lua tends to be change device settings. Listing 2 is a Lua berry Pi 4 with a USB light being toggled
up to 10 times faster than Python. On CGI web script that shows USB devices by the Lua web page.
lower-end platforms like a Raspberry Pi and power settings, and it toggles the
B+ or an Arduino Yún, both running power on USB port 3. This example uses Handheld Gaming Consoles
OpenWrt, Lua can be 30 times faster. the output from two command-line Most of the older Sony and Nintendo
Fast initial startup is especially useful tools: lsusb lists the USB devices, and handheld gaming consoles support Lua,
for web pages. I’ve created a Bash script uhubctl lets you view and toggle USB so you can use the original or today’s
that checks whether Lua is a worthwhile power. retro handheld units as Internet of Things
fit for your project’s hardware (see List- Lua runs external programs through a (IoT) monitoring devices. Some of these
ing 1). For longer running applications, combination of an handhelds support a stackless version of
Lua performance can be further en- Python 2.x. While these Python ports
hanced by using LuaJIT [2], a Lua just- assert(io.popen("cmd")) were often excellent proofs of concept,
in-time (JIT) compiler.
Listing 2: Show USB Devices and Power
OpenWrt and Lua 01 #!/usr/bin/lua
OpenWrt [3] is a networking-focused 02 -- showusb.lua - show USB devices and power, then toggle power on port 3
operating system that runs on over
03 print("Content-type: text/html; charset=utf-8\n\n")
2,000 different embedded devices.
04 print("<h1>OpenWrt/Lua - USB Example</h1><hr>")
OpenWrt is most commonly used on
05
routers, but it can also revitalize many
06 -- use lsusb to show USB devices
older pieces of equipment thanks to its
extremely lean design. For example, 07 f = assert(io.popen("lsusb"))
Raspberry Pi + PS Vita
Example
For this article, I put a Raspberry Pi
Zero W with a BME280 atmospheric Figure 4: Lua Player Plus Vita, VitaDB Downloader, and VitaShell are
sensor in a plastic box (Figure 3). I was Homebrew applications for the PS Vita.
04 -- create a TCP socket and bind it to the local host, on port 100
[4] OpenWrt download page:
15
[8] Lua Player Plus Vita:
16 -- receive the line and print the message
https://github.com/Rinnegatamante/
17 local line, err = client:receive()
lpp-vita
18 print(line) [9] Lua source code for PS Vita Display:
19 https://linuxnewmedia.thegood.cloud/
20 -- send the temperature to the socket client s/5Rzx9tQW2FJ6N3Z
21 f = assert(io.popen("/home/pete/outside/bme280"))
[10] Redis: https://redis.io/
22 result = assert(f:read('*a'))
[11] NSE:
23 msg = result .. " C\n"
https://nmap.org/book/man-nse.html
24 print(msg)
QQQ
MakerSpace
Three inexpensive CO2 sensors compared
;VQЅVO\PM)QZ
Monitor your indoor air quality with an inexpensive CO2
sensor. We look at three candidates to help you find the best
solution. By Bernhard Bablok
I
n the winter, you spend a lot of friendly, this article focuses on three
time indoors, making it important inexpensive solutions: the Winsen MH-
to keep an eye on C02 concentra- Z19C [1], the ScioSense ENS160 [2],
tions. In contrast to sensors for and the Sensirion SCD40 [3].
measuring temperature and humidity, The latter sensor from brand manufac-
CO2 sensors are quite expensive, with turers such as Adafruit, Pimoroni, or
prices consistently in the double-digit SparkFun are really expensive, costing
range. This quickly adds up if you want between $40 and $80. AliExpress gives
to monitor more than one room. To you cheaper options with prices below
make C02 monitoring more budget $15, but those come with the added
thrill of not knowing whether parts will
even work.
Infrared Measurement
The Winsen MH-Z19C (Figure 1) consists
of a small box measuring approximately
13.3mm x 26mm x 4.4mm. It measures
the CO2 value using the non-dispersive
infrared method (NDIR). Two versions of
the sensor are available: one with a nor-
mal pinout and one with a cable connec-
tion and a pin spacing of 1.25mm. If you
don’t relish the prospect of crimping con-
nections, you will want to opt for the pin-
out version. Besides the MH-Z19C, there
are other older models on the market,
such as the MH-Z19B, MH-Z14, or MH-
Lead Image © vladnikon, 123RF.com
Figure 5 shows the measurement results temperature and humidity (Figure 5, Info
of one candidate from each camp in a di- center and bottom). While the SCD40 [1] Winsen MH-Z19C:
rect comparison. got almost identical values for these pa- https://shop.winsen-sensor.com/
The SCD40 and MH-Z19C are very rameters, the temperature readings from products/winsen-co2-sensor-series?
much alike in terms of CO2 measurement, the MH-Z19C were significantly off. variant=43743936086208
although accuracy differences are appar- [2] ScioSense ENS160: https://www.
ent. At 1,000 ppm the deviation is in the Conclusions adafruit.com/product/5606
order of ±100 ppm, increasing to ±150 The Sensirion SCD40 is clearly supe-
[3] Sensirion SCD40: https://www.
ppm at 2,000 ppm. The SCD41 is nomi- rior to the Winsen MH-Z19C in terms
amazon.com/dp/B0D9WLFWKS
nally slightly more accurate, but this does of function and handling. The Scio-
[4] Voltage dependence of the MH-Z19C:
not justify its significantly higher price. Sense ENS160 does not deliver what its
https://emariete.com/en/sensor-co2-
The results are also typical for my other data sheet promises. In my tests, I was
mh-z19b/#Imprescindible_Estabilizar_
SCD40 sensors: I had directly imported unable to confirm the correlation be-
la_alimentacion_del_MH-Z19C
two of them from various sellers in China. tween VOC and CO2, which is elabo-
The ENS160 was completely out of rately documented with four graphs on [5] MH-Z19C documentation:
line in the test. If you wanted to be char- two pages of the data sheet, even https://revspace.nl/MHZ19
itable, you could say that it sort of re- though I tried it with five different [6] SCD40 documentation:
flected the tendency of the CO2 content ENS160 sensors. (This does not say https://github.com/Sensirion/info
of the air, but the absolute values it de- anything about the ENS160’s ability to [7] Indoor air quality:
livered were simply unusable. The sam- measure VOC.) https://www.umweltbundesamt.de/en/
ple used for the measurement shown in While you may attempt to measure as topics/health/environmental-impact-
Figure 5 was actually one of the more re- accurately as possible, bear in mind that on-people/indoor-air-hygiene
liable ones. Other ENS160 sensors that I CO2 values play more of a qualitative
have used in the past, did not even show than a quantitative role. Unsurprisingly, Author
the kind of weak correlation with the there is even a DIN standard for this [7]. Bernhard Bablok is retired. When he is not
measured values of the competitor sen- It classifies indoor air quality up to 800 listening to music, riding his bike, or walk-
sors that you can see in the upper graph. ppm CO2 as good, up to 1,000 ppm as ing, he focuses on Linux, programming,
I also used an AHT20 sensor that pro- medium, up to 1,400 ppm as moderate, and small computers. You can reach him
vided reference measurements for and anything above that as poor. Q Q Q at [email protected].
Figure 5: CO2 levels, temperature, and humidity as measured by the various CO2 sensors.
MADDOG’S DOGHOUSE
There’s value in open software, hardware, and data in what may seem like
some of the most basic tools for computer users. BY JON “MADDOG” HALL
Open data
he world is in a large amount of turmoil these days and word processor. Second, there was often significant data lost
Ad Busters
YouTube is slowly becoming less usable every year. Piped, a privacy conscious
YouTube front end, might be just what you need to enjoy YouTube content once again.
ouTube is, beyond any shadow of doubt, surrender to the will of the tech giant. Unfortu-
Y
BY RUBÉN LLORENTE
the most popular video hosting site on the nately, the obliteration of ad-blocking technology
Internet. While alternatives exist, YouTube is an integral part of YouTube’s strategy. First
has no serious contender, to the point the videos blood in the war on ad blockers was drawn when
you want to watch might be only available on it YouTube attempted to make videos unavailable
because their creators don’t bother to upload to ad blocker users in 2023 [1]. Google Chrome
them elsewhere. The ground is laid for a danger- EPWSTVSTSWIHEREXXIWXEXMSRQIGLERMWQɄũ
ous Internet monoculture. ORS[REW;IF)RZMVSRQIRX-RXIKVMX]Ʉ?AũXLEX
YouTube has been attempting to boost its deep down, was just a fancy way of letting web-
profitability quite aggressively for a number of site owners decide if a given web browser was
years, surely aware that their dominant position to be accepted or rejected. According to the
will keep video consumers engaged in their plat- popular Internet theory, the goal was to ensure
form even if subjected to massive advertising only authorized web browsers without ad block-
pressure. As a result, watching videos over You- IVWGSYPHYWI+SSKPIWIVZMGIWɄũMRGPYHMRK
Tube has become an exercise in masochism, YouTube.
with an ever-increasing flow of advertisements Software projects designed specifically to in-
blasting out of your screen. The alternative is teract with YouTube in, let’s say, extraofficial
purchasing a YouTube Premium plan, which the ways, have also become a target for takedown
company labels as a “subscription service that notices and threatening letters. On June 2023,
lets you watch and listen to YouTube and You- Invidious, a popular FOSS YouTube front end, re-
Tube Music without interruptions.” Considering ceived a cease-and-desist notice from YouTube’s
the way advertisements are being pushed into legal department [3].
your brain with the free service, you would think I personally don’t have a problem with advertise-
they are attempting to break your will and to con- ment-based business models as a concept. On
vince you of jumping on the paid service rather the other hand, when you build a service around
Figure 1: A public Invidious than enduring the torture of continuous advertisements, you also need to accept the audi-
instance. Invidious is very advertising. ence still has the right to ignore your advertise-
resource intensive and a bit Ad blockers are the main defense left for ments. TV stations don’t ban you from their ser-
unstable. users who can’t afford a paid plan but won’t vices if you take a quick trip to the bathroom dur-
ing a publicity break. The fact YouTube does not
want to acknowledge this is a bit disturbing, to
say the least.
Back to Sanity
There are a number of options for getting an ad-
free YouTube experience without bending your
knee to Google. You could, for example, install a
FOSS YouTube client such as FreeTube [4] on
your desktop, or NewPipe [5] on your Android
phone. Alternatively, you could use a third-party
front end run by volunteers. There’s a number of
public Invidious instances you can visit with your
trusty web browser that will let you watch You-
Tube without ad breaks (Figure 1).
Service Architecture
The goal of this article is to teach you how to de-
ploy a private Piped instance in a home network.
Therefore, a public, Internet routable, static IP ad-
dress is required. If that is not an option, you may
rent a dedicated server or a virtual private server
(VPS) from a hosting provider.
The core component of my home LAN is a mid-
tier professional router. My ISP subscription grants
me a single traditional IP (this is an IPv4 and not
IPv6), so the router performs networks address Figure 3: Piped is designed to work behind a reverse proxy.
translation (NAT) between the Internet and my A reverse proxy is a convenient way of hosting multiple web
local area network (LAN). For the purposes of this services from a single public IP.
Installing Piped
Counterintuitively, setting up Piped itself is the
easiest part. Set a Debian 12 server (in my
home lab I use a virtual machine) and ensure a
regular user exists. For this example I will refer
to the debian user. Because I will be using
docker-compose for deploying Piped, I will have
Figure 4: An automatic con- to install it by running the following commands
figuration script is included Piped itself runs well on a Debian 12 host. Piped as root:
with Piped. Each of the core has a number of different components, but the good
services needs its own host- news is you don’t need to know about them: You can # apt update
name. just use the official Docker deployment and be done # apt upgrade
with it. In case you’re curious, the different services # apt install -y docker-compose
Listing 1: /etc/relayd.conf Now comes the interesting part. I will fetch Piped
01 # BEGIN DEFINITION OF HOSTS
from GitHub using Git. For that, I will log on as the
02 debian user and clone the repository using
03 table <piped> { 192.168.90.40 }
04 table <acme> { 127.0.0.1 } $ git clone U
05 https://github.com/TeamPiped/Piped-Docker
06 # BEGIN DEFINITION OF PROTOCOLS
07
Piped comes with a configuration script. I’ll move
08 http protocol "http" {
into the repository I just cloned and run it:
09
10 # Set recommended tcp options
$ cd Piped-Docker
11 tcp { nodelay, socket buffer 65536, backlog 100 }
12 $ ./configure-instance.sh
A record for each of the services, and point it to With a recently generated certificate, I can en-
your public address. able TLS in my relayd instance by appending the
I also like to set a DNS resolver on the router, but contents of Listing 5 to relayd’s configuration file:
the steps necessary for setting it up depend on the
device. In essence, what you must do is set up a Listing 3: /etc/acme-client.conf
DNS server in your router and add an A record for 01 authority letsencrypt {
each of the three services, pointing them all to the 02 api url "https://acme-v02.api.letsencrypt.org/directory"
reverse proxy (IP 192.168.90.30 in the example). 03 account key "/etc/acme/letsencrypt-privkey.pem"
Then configure the DHCP service in your router to 04 }
instruct the computers in your LAN to use the DNS 05
hosted by the router. This step might be optional or 06 domain piped.operationalsecurity.es {
RSXũWSQIGSRWYQIVKVEHIVSYXIVW[MPPPIX]SYEG- 07 alternative names { api.operationalsecurity.es proxy.
cess web services hosted in your LAN without tak- operationalsecurity.es }
ing any extra steps, but some others don’t seem to. 08 domain key "/etc/ssl/private/piped.operationalsecurity.es.key"
The final step is deploying Piped. This can be 09 domain full chain certificate "/etc/ssl/piped.operationalsecurity.
directory: 11 }
$ docker-compose up -d
Listing 4: /etc/daily.local
01 #Randomize the hour at which the service is run
Setting Up relayd 02 sleep $((RANDOM % 2048))
Relayd is shipped with OpenBSD’s default install. 03
Its configuration file is located at /etc/relayd.conf. 04 acme-client piped.operationalsecurity.es
Check Listing 1 for a functional example. 05 ocspcheck -N -o /etc/ssl/piped.operationalsecurity.es.ocsp /etc/ssl/
can see an example in Listing 2. 06 match request header set "X-Forwarded-For" value "$REMOTE_ADDR"
Once both files are set in place, I enable and run 07 match request header set "X-Forwarded-Port" value "$SERVER_PORT"
both relayd and httpd by running the next 08 match request header set "X-Forwarded-By" value "$SERVER_
ADDR:$SERVER_PORT"
commands:
09 match request header set "Keep-Alive" value "$TIMEOUT"
10
# rcctl enable httpd relayd
11 # Set recommended tcp options
# rcctl start httpd relayd 12 tcp { nodelay, socket buffer 65536, backlog 100 }
13
The next step is configuring acme-client. Its con- 14 tls { no tlsv1.0, ciphers "HIGH:!aNULL" }
figuration file is located at etc/acme-client.conf 15
piped.operationalsecurity.es.ocsp U 22
Reloading the configuration will have relayd lis- if you delete your cookies. This is inconvenient
ten to incoming connections on port 443 with TLS for privacy-minded folks like myself who have
enabled and proxy requests to our Piped instance: their browsers set to wipe cookies and history
on exit. This is not a deal-breaker, but it is far
# rcctl reload relayd from ideal.
Piped supports the popular SponsorBlock and
The Actual Experience DeArrow functionalities. SponsorBlock uses a
Piped lets users create accounts in order to man- community database to identify sponsored adver-
age their subscriptions and playlists (Figure 5). tising that is part of the videos you are watching
Account information (including subscriptions) can and skips it automatically. Testing shows the ser-
be exported and imported from the user dash- vice works as intended. DeArrow, on the other
board. Because I have no YouTube account, I hand, replaces clickbait video titles and thumb-
haven’t checked if there is an easy way to import nails with alternatives suggested by the commu-
subscriptions from a YouTube account into a nity, which are often more helpful than the official
Piped instance, but a quick search online sug- ones. Sadly, DeArrow seems broken in the current
gests the yt2alt tool might help achieve this. iteration of Piped.
User preferences are stored in cookies in your The good news is that the core functionality of
browser, instead of in the server (Figure 6). This Piped works without flaws. You can actually
means that preferences such as theme, lan- watch YouTube videos without having to endure a
guage, preferred codec, and the like will be lost barrage of advertisements.
Conclusion Info
Piped has rough edges but works for the most
part. If you are willing to go through the hassle of [1] “YouTube Tests Disabling Videos for People
deploying it and don’t mind its current flaws, you Using Ad Blockers,” The Verge: https://www.
will end up with a YouTube front end which is suf- theverge.com/2023/6/29/23778879/youtube-
ficiently functional for regular user cases. videos-disabling-ad-blockers-detection
That said, alternative front ends such as
[2] Web Environment Integrity on Wikipedia:
Piped and Invidious are temporary Band-Aids at
https://en.wikipedia.org/wiki/Web_Environ-
best. At the end of the day, YouTube keeps its
dominant position as a video provider and may ment_Integrity
break FOSS front ends at any time without prior [3] “YouTube Legal Team Contacted Us,” Invidi-
warning. The world is in sore need of a FOSS ous at GitHub: https://github.com/iv-org/
video platform that can rival YouTube’s grip on invidious/issues/3872
the market. Q Q Q
[4] FreeTube:
https://github.com/FreeTubeApp/FreeTube
The Author
[5] NewPipe: https://newpipe.net
Rubén Llorente is a mechanical engineer
whose job is to ensure that the security [6] Piped: https://github.com/TeamPiped/Piped
measures of a small clinic’s IT infrastructure [7] yt2alt at GitHub:
are both legally compliant and safe. In https://github.com/iBicha/yt2alt
addition, he is an OpenBSD enthusiast and [8] yt2alt support, Piped on GitHub: https://
a weapons collector.
github.com/TeamPiped/Piped/issues/3339
QQQ
LINUX VOICE RESCUING NINTENDO GAMES
Game On!
The Nintendo Network went dark in 2024, but a thriving FOSS community continues
to support the Wii platform and other Nintendo devices. We’ll introduce you to some
of the tools you can use to reclaim the magic.
t is hard to imagine a gaming enthusiast who describes how to integrate your Nintendo infra-
I
BY DANIEL LASALLE
has not fallen in love with Nintendo at least structure into this new community-driven FOSS
once in their life. But everything comes with a environment.
price tag, even love. When one of the parties in a To get the most from this article, it would be
love affair starts expressing their love via unholy best if you already have your own homebrewed
acts, the other party must question the validity of Wii console, most probably an external physical
that relationship. enclosure (such as a USB or Compact Flash
Nintendo holds quite the reputation [1] when it storage unit) alongside all of the Nintendo phys-
comes to the kind of love that it often demon- ical games. This article was powered by the
strates (or doesn’t demonstrate) toward its fan- Ubuntu 24.10 experience, however, the steps
base. Even when some non-profitable community are similar for any system on which you can in-
project shows potential, it seems that the project stall the suite of Wiimms ISO Tools.
is received as a blow [2] to Nintendo pride rather
than as a show of endorsement [3] and grateful- Wiimms ISO Tools
ness [4] from a kind and loving community. Wiimms ISO Tools (WIT) is a niche project that ac-
One could argue that a second golden age for the tually celebrated more than 15 years of existence
Wii console began the moment its creator decided [11] in September 2024. Even though the WIT proj-
it was time to pull [5] the plug in order to make way ect does not particularly benefit from its rapid roll-
for their latest money maker. This decision stunned out cycles [12], it is a safe bet that it will forever be
the world, but some saw it as an opportunity for in- maintained because of the pivotal role it holds and
novation, and the Wii crowd offered strong signals the numerous spheres of influences it came to be-
of reassurance to the vendor that the Wii heritage come a part of. Or to put it differently: WIT’s arrival
would be well preserved on their watch. With this is what helped create most of the other tools
noble goal of offering eternal support to the gam- claiming to do the same job. WIT is not only the
ing community, great initiatives [6] [7] were put reference when it comes to managing the Game-
into place. Cube and Wii (aka Dolphin) ecosystems, it is also
The Pretendo [8] social gaming network has the foundation of many subsequent software
only been around for a few months now, but it tools. A look at the WIT documentation [13] re-
is already acting as a backbone of this “niiw” veals that you are in the presence of a unique soft-
community, replacing the Nintendo Network, ware project, and the bar has been set quite high
which the company shut down in 2024. Other when it comes to long-term support.
great minds came together to develop their What exactly is WIT? The short answer is it is a
own applications using the Wii Application Dis- suite of tools for allowing all possible types of in-
tribution (WAD) file format [9]. All of these teractions between the Nintendo Dolphin [14] en-
tools and add-ons are available under Libre- vironment and its physical, logical, and operational
Shop [10], which is also fueled by passionate assets. Such operations include container manip-
members of the Wii community. ulations (such as formatting, repairing, recovering,
The best reason for having your Wii “home- and truncating). A similar level of depth applies to
brewed” is to digitally port all of your physical games images (such as conversion, dumping, and
games. Porting your games increases their acces- un/packing).
sibility and also diminishes the chances of dam- The longer (and much more exciting) answer is
aging any of their precious medias. This article that WIT was first published in 2009 simply as
“Wiimm”, from the developer nick. Wiimm was unlock features that otherwise would be unavail-
strictly developed to handle the GameCube gener- able, which in turn allows you to develop cheats
ation and had a less complex tool layout. The and mods for any of your favorite Wii games. The
suite we know today evolved over the spawn of result of your hard work can then be imported via
the next two decades. Although WIT relies on four the CheatManager homebrew application [15].
distinct binaries, wdf, wfuse, wwt, and wit, it is capa- Welcome to the next level. The CheatManager
ble of casting its magic at both the container and homebrew application enables this gaming expe-
file levels. rience, but only if you dare.
Each of these four tools is revolutionary in its
own way as the tools fill a big gap in what other- wfuse: The Browser
wise would be a sea of undocumented technical The simplest tool in the WIT suite, wfuse allows
standards. Some even unlock new features, users to mount (and unmount) their WBFS con-
which in turn create the ability to softmod (such tainers at will. The WBFS filesystem uses Filesys-
as installing a custom theme) or to hardmod tem in Userspace (FUSE), which allows the user
(such as making the LED use any color from the to attach it to the system. You’ll need to attach
spectrum of color), thus helping to replace the WBFS filesystem in order to properly manage
some of those old boring default vendor-locked the library of digital assets..
settings. Anything having to do with features The usage is simple: wfuse followed by the path
can be accounted for via the LibreShop of the source mount and destination. In my case,
application. the command will be:
Figure 1: Use the -h option for help with the wfuse command.
Backing Up a Game
Wanting to create backups of your game collection certainly is Other methods exist for scrubbing Nintendo games images,
an honorable goal, but rest assured that Nintendo doesn’t make but the one I will be exploring in this article is converting from
it easy to own your own data. Luckily for us, it is not impossible! the ISO to the WBFS file format, as scrubbing is one of its fea-
Begin by analyzing what comes immediately after the physi- ture. For now, no matter which format you decide to use in the
cal disc barrier following the extraction step. After success- long run, keep in mind that once games have been transferred
fully transferring the retail collection into ISO format, the first to a WBFS container, they will always be presented similarly;
thing you will notice is how all of the Wii games have the therefore, it makes no difference if they were originally stored
same exact size (Listing 1). as .CISO, .WIA, .WBFS, or any other format.
This type of format is referred to as unscrubbed disc images. In Listing 3, a Wii game’s content is located under the path
Of course, none of the games actually use all of that space wbfs/slot, located at the root of the WBFS container. Even
and, in most cases, the dead space is anywhere from 5 per- though the id and title folders exist, they are really symlinks
cent up to 95 percent of what is reported by the ISO size. You pointing back to the content of wbfs/slot/<NUMBER>, so space is
can use the wit ISOSIZE option to get the actual size. Doing so not wasted printing their contents. That <NUMBER> folder will
will reveal what the scrubbed image will look like (Listing 2). contain both the scrubbed ISO and its exploded content.
library (Figure 1). See the box entitled “Backing Up referencing, such as cutting a file at 2GB, by using
a Game” for more on how games are stored on the --splize-size 2G command argument.
Nintendo systems.
Nintendo? On Guard!
wwt: The Interactor Now that you know what WIT is and what you can
Wiimms WBFS Tool (or wwt for short) is the man- do with it, it is time to put it into practice. Listing 6
aging tool for all interaction with the WBFS con- shows how to attach an external USB storage
tainers (see Listing 4). component and prepare it “the Nintendo way,”
Known as the WBFS manager, wwt is responsible which means by first creating an exFAT partition
for everything that has to do with cloning, creating, on it using fdisk and then giving it that WBFS coat,
repairing, and verifying WBFS objects, in addition to using the wwt format command.
applying some crude data operations on files and You can use the wwt dump command to see the
data partitions. You can also invoke wwt to add, ex- contents of the partition (Figure 2). Listing 7 shows
tract, list, recover, and truncate WBFS content. how to convert a game dumped in ISO format into
Some of the most notable wwt options would WBFS and add it to the storage unit. The last step
be listing (specifying list or ls), adding (speci- on my Ubuntu system is to unmount the manager
fying -a ADD file.iso or -a ADD --re-
cursive .) and removing (via the re- Listing 4: Using wwt
move option) any files located in a $ sudo wwt check
WBFS container. Listing 5 shows the ***** wwt: Wiimms WBFS Tool v3.01a r0 x86_64 - Dirk Clemens - 2024-08-13 *****
output of the ll and llll options.
CHECK /dev/sda1
$ wit copy mybackup1.iso --wbfs --dest . ID6 MiB Reg. 3/500 discs (10 GiB)
-------------------------------------------------------------------------------
This command creates the file my- 112233 2340 USA My backup 1
rectory. You can also combine wit 223311 889 USA My backup 3
-------------------------------------------------------------------------------
using edit and --id to change the
Total: 3/500 discs, 110656 MiB ~ 10 GiB used, 999184 MiB ~ 999 GiB free.
metadata of the library. For example,
the following command $ sudo wwt llll
ID6 m-date m-time MiB Reg. 3/500 discs (10 GiB)
$ wit edit mybackup1.wbfs --id ABCD01 ------------------------------------------------------------------
112233 2010-04-20 20:21:22 2340 USA My backup 1
sets the ID6 value to ABCD01 for the 122331 ---------- --:--:-- 1993 USA My backup 2
Command (m for help): n INODE-TIM: ok 1 747065b0 200 e8e0 1000000 1f4 600 2025-01-04
14:50:11
Partition type
n=500
p primary (0 primary, 0 extended, 4 free)
INODE-CNT: ok 1 74706d71 200 e8e0 1000000 1f4 600 2024-12-13
e extended (container for logical partitions)
23:00:44
Select (default p):
n=498
Partition number (1-4, default 1):
---------------------------------------------------------------
First sector (2048-1953525167, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1953525167,
ANALYZE /dev/sda1
default 1953525167):
---------------------------------------------------------------
HD SECTORS WBFS SECTORS DISCS (all values in hex)
Created a new partition 1 of type 'Linux' and of size 931.5 GiB.
WBFS total sec total sec max inode
NAME magic vrs num size num size num size ADDITIONAL
Command (m for help): t
INFORMATION
Selected partition 1
---------------------------------------------------------------
Hex code or alias (type L to list all): 07
HEADER: ok 1 747065b0 200 e8e0 1000000 1f4 600 WBFS header
Changed type of partition 'Linux' to 'HPFS/NTFS/exFAT'. scanning
INODE-TIM: ok 1 747065b0 200 e8e0 1000000 1f4 600 2025-01-04
Command (m for help): w 14:50:11
The partition table has been altered. n=500
Calling ioctl() to re-read partition table. ---------------------------------------------------------------
Syncing disks.
$
2248 MiB copied in 0:07, 325.2 MiB/sec wfuse: Wiimms FUSE Tool v3.01a r0 x86_64 - Dirk Clemens
***** wwt: Wiimms WBFS Tool v3.01a r0 x86_64 - Dirk Clemens - 2024-08-13 wfuse umount /mnt/wii
using the wfuse command. Only then can do, but one cannot help but better than most. Better documentation means a
will I be able to plug the storage unit feel very optimistic about the WIT less intimidating learning curve when attempting
back into my Wii console and confirm suite and its quite refined use to step into the rabbit hole of long-lost, vendor-
the success of my operation. cases. I must admit though that I locked standards. Q Q Q
But before attempting any of that couldn’t help but feel somewhat
funky stuff, make sure that every- overtaken at times by all of the Info
thing is already in place on your aliases, sub-aliases, and available
[1] Nintendo hates people who pay their hard
system by issuing the command options. Of course, the great vari-
earned money purchasing their products:
which wit. command. If nothing ety of options could also be cele- https://www.gamesradar.com/former-
shows up, go ahead and install wit brated because it shows that this pokemon-lawyer-explains-why-nintendo-
by invoking: suite of tools is only the result of goes-after-so-many-fan-games-no-one-likes-
such fine craftmanship forged over suing-fans/
$ sudo apt install wit -y the course of time. [2] Great fan-made projects some execs did not
The maturity of any tool should al- want the world to benefit from: https://www.
cbr.com/most-infamous-nintendo-fan-game-
Conclusion ways be considered in the context
shutdowns/
When a vendor isn’t helping, there of the documentation it provides. In [3] Trademark mongering? https://www.reddit.
are only so many things a savant that respect, WIT nails it and does it com/r/nintendo/comments/vptk4a/why_is_
nintendo_so_against_fan_made_projects/
[4] Nintendo does not have a great reputation
with its fanbase: https://8bitpickle.com/
video-games/why-does-nintendo-
hate-their-fans/
[5] RIP Nintendo 3DS and Wii U:
https://en-americas-support.nintendo.com/
app/answers/detail/a_id/63227/~/
announcement-of-discontinuation-of-online-
services-for-nintendo-3ds-and-wii-u
[6] The backbone of the Wii renaissance: the Open
Shop Channel: https://oscwii.org/
[7] A WAD to enable Dual Shock 3 game control-
lers: https://www.wiibrew.org/wiki/Sixaxis
[8] Pretendo:
https://pretendo.network/
[9] A WAD to enable support for USB game con-
trollers: https://github.com/xerpi/fakemote
[10] The LibreShop, powered by the community:
https://oscwii.org/library/app/libreshop
[11] First ever announcement of WIMM:
https://gbatemp.net/threads/wwt-wit-
wiimms-wbfs-iso-tools.182236/
[12] WIT support: https://github.com/Wiimm/
wiimms-iso-tools
[13] WIT official website:
https://wit.wiimm.de/
[14] Dolphin emulator: https://wiki.dolphin-emu.
org/index.php?title%3D
[15] CheatManager:
https://www.wiibrew.org/wiki/CheatManager
The Author
Daniel LaSalle saw his first keyboard at the
tender age of eight and was fascinated from
the get-go with this wide new world. Daniel
has been using technology nearly every day
of the five decades since. In 2014, he found
the guts to commit to a monogamous part-
nership with Linux and regrets nothing.
Figure 2: Combining wwt alongside the dump option gives a view of the WBFS container.
QQQ
FOSSPicks Nate explores the top FOSS, including the shiny new Zen
Sparkling gems and new
releases from the world of
Free and Open Source Software
Web browser By way of disclaimer, Zen After I installed it via left by default, but you can
Podcast client
CPod
his podcast client was recommend readers make a
Command-line utility
BobRossQuotes
n 2020, my doctor diag- PBS. However, if all you need is
Ear Tag
ccording to the project tracks and chose Identify Se-
WikiTimeline
eveloper Wenzheng Li’s summaries sometimes aren’t
File Shredder
his app was built by de- launch users can drag files to be
Pixelpusher
his game is currently only If you are this inept, your over-
T available as an AppImage
via itch.io under the BSD
3-Clause License. However, it has
seer will eventually spawn more
drones. The same applies to
enemy overseers, meaning the
an official page on Steam that onus is on you to destroy all its
says (at the time of writing) the drones before it can respawn
title will be officially released on them. Should you lose patience
the platform in March. as I did, you can ram one over- Players control the movement of drones with the mouse and use the
The main page describes Pix- seer into another to obliterate overseer dash using WASD to destroy enemies.
elpusher as a “drone-based team them. The tutorial also walks
combat game” that’s best played players through extra weapons in After checking out the official Dis-
with a two-button mouse. This their arsenal, such as using left cord server, I noted a recent YouTube
was clear to me when I fired up shift to unleash a torrent of review, which describes this game as
the in-game tutorial, because drones towards the cursor in a a “clone” of Arras.io. This is a 2D
drones are controlled by moving “psionic storm.” Though I had shooter where players control armies
the mouse. The player can also great fun with the single-player of tanks, defeat other players, and
change the position of the “Over- mode, Pixelpusher also supports level up. YouTuber Masterico claims
seer” using WASD. Players can a multiplayer “capture the flag” he switched to Pixelpusher because
attack enemy drones by moving game for a combination of up to it “takes drone tanks from Arras.io
their own drones into them. How- 32 people and bots. You can host and refines its combat to the maxi-
ever, as I found out the hard way, this yourself if you wish, using mum level.” I’m inclined to agree.
any of your drones that crash Pixelpusher’s dedicated server
into an enemy overseer are im- software available from https:// Project Website
mediately destroyed. aetup.itch.io/pixelpusher-server. https://aetup.itch.io/pixelpusher
OnlyOffice
his online office suite watermarking, file
Project Website
The OnlyOffice presentation editor has moved the themes, colors, and slide size tools to the new Design tab. https://www.onlyoffice.com/
Blanket
fter my therapist recently the interface is very clean and
A diagnosed me with
ADHD, I’ve been driven to
distraction searching YouTube
well spaced out. The main win-
dow offers various options for
ambient noise including rain,
for supposed videos that will play storms, and white noise. I was
the perfect sound to soothe the mildly puzzled by the “coffee
mind and help me focus. I must shop” option, as when I work in
admit that after poring over Starbucks I stick in my head- Blanket can play multiple ambient background noises. You can
claims about binaural beats and phones to drown out such adjust volume levels for these individually.
isochronic tones, I discovered noises. But variety is the spice
that the scientific community is of life. If you have a particular instance, I cranked up rain sounds
divided on this topic. Still, ADHD ambient noise you enjoy, you to full while leaving white noise at 50
or not, plenty of people use re- can also choose Add to load it percent (default). From here, you
cordings of music or ambient here. Supported formats in- can also adjust the master volume
noise to block out external clude MP3, OGG, and AAC. as well as Reset Sounds to stop all
sounds to help them focus. When you select a specific am- ambient noise from playing. The
Developer Rafael Mardojai bient noise it will be highlighted. main menu offers an option to keep
has built Blanket for the pur- This is important because you Blanket running when closed. You
pose of improving focus and can choose more than one can also launch Preferences to have
productivity with ambient sound to play at a time. The pop- the app autostart in the background.
noise. It’s currently available for up volume dialog at the bottom
install via Flathub. As you’d ex- of the screen allows you to select Project Website
pect from a Gnome Circle app, sound levels for these. For https://apps.gnome.org/Blanket/
Gaia Sky
his amazing app has On first launch, Gaia Sky help-
Plug It In
Using apps to make your Nextcloud work more efficient and private.
n a previous installment of this tutorial [1], keep their data, work, and online life under one
I
BY MARCO FIORETTI
-ɄHIWGVMFIHLS[XSFYMPHERHGSRJMKYVI roof without distractions, information overload,
Nextcloud as a fully self-hosted cloud hub and privacy invasions. Second, these apps are all
that individuals or small groups can use to store actively maintained and compatible with the ver-
files, edit office documents, communicate sion of Nextcloud I described in the previous tuto-
through chats and video calls, and access web- rial (version 30.0.5). The apps are also easy to in-
mail. This month, I will show how to make your stall, even for first-time Nextcloud administrators
online work even more private and efficient thanks with limited time and resources.
to Nextcloud’s extensive gallery of plugins or (as Nextcloud also provides app bundles that offer
they’re called these days) apps. a collection of apps for a specific purpose such as
I’ll introduce you to some Nextcloud apps that education, public service, or social sharing. The
fit two criteria: First, they help ordinary web users app bundles are great, but they are aimed at pro-
fessionals or large groups with full-time profes-
Great but Much Less Usable sional administrators, so I won’t cover them in this
article.
While writing this tutorial, I came across a few apps I’m sure many cur- The “Great but Much Less Usable” box lists a
rent or potential Nextcloud users would love, but for one reason or an- few more apps that I believe would be very im-
other, these apps aren’t usable without advanced administrator skills portant for all Nextcloud users if they were more
and non-negligible configuration efforts. I’ll list a few of these promising actively maintained or easier to integrate in
but problematic apps in hopes of stimulating more developers and Nextcloud.
users to get involved with these projects. Finding and installing an app is easy: All you
The first thing that would benefit Nextcloud users is real-time communica- have to do as Nextcloud administrator is to
tion between people with a Nextcloud account and everybody else. The click on your icon in the top-right corner, select
Nextcloud Talk app is great, but as of early 2025, it only handles chats and Apps, and then click again on the hamburger
calls among users of one or more Nextcloud installations. It is not possible menu button to choose which category of apps
to, for example, email a Nextcloud Talk video conference link to people the to browse. When you find an app that you want,
way you do with Zoom. Nextcloud does have an app for the Jitsi videocon- click on its icon to read what it does and
ference platform, but even that is just a client for external Jitsi servers. whether it’s compatible with your version of
Nextcloud. If you like what you see, click on
Another area in which Nextcloud could stand to benefit is document ed-
Download and Enable.
iting. For example, even the LibreSign app, which can digitally sign PDF
In most cases, you will have to do some extra
documents and annotations, is just a front end to a server that does the
configuration. If so, click again on your avatar,
real work.
then click on Administration Settings, and scroll
It would also be great to be able to write Markdown documents with live down through the administration menu: if you find
preview, but on Nextcloud 30 this is not possible because it requires an a new entry corresponding to the app you just en-
app that isn’t compatible with that Nextcloud version. Integration with abled, click it and follow the instructions. If there
HedgeDoc, the in-browser Markdown editor and online publishing sys- is no such entry, select the very last entry of the
tem, has the same problem. Ditto for ebook reading: Nextcloud has two menu, Additional Settings, and check if the app
or three eBook apps, but none of them worked on my Nextcloud. added its own section.
The last service that would really help if it were functional is an app that The base directory of every Nextcloud installa-
offers migration from Google Drive to Nextcloud. Unfortunately, the tion includes a command-line tool called occ that
Nextcloud app created for this very purpose is outdated and cannot be you can use to configure and manage Nextcloud,
installed because it depends on another app called files_external that including enabling or disabling apps. The occ util-
will freeze your Nextcloud install until you disable it from the command ity is sometimes the only way to fix your Next-
line with the occ command. cloud when a broken app or some other bug
makes the web interface crash.
Figure 5: With Nextcloud, you can save, share, and even archive copies of the websites you need to remember.
Figure 7: Nextcloud apps? No, just two external websites embedded into Nextcloud.
Figure 10: Organize your work, alone or in teams, with the Nextcloud Deck.
QQQ
NEWSSTAND https://bit.ly/Linux-Magazine-Library
Linux Magazine is your guide to the world of Linux. Monthly issues are packed with advanced technical
articles and tutorials you won't find anywhere else. Explore our full catalog of back issues for specific
topics or to complete your collection.
#293/April 2025
Trojan Horse
We’re all taught to fear Trojan horse programs, but what are they really? This month we steal a
look inside to show how attackers use Trojans to stash their nefarious code in ordinary
applications.
On the DVD: Debian 12.9 Live Gnome and Arch Linux 2025.02.01
#292/March 2025
What Comes After Git?
Git is practically part of the woodwork in open source circles, but can we do better? The Pijul
developers think we can. This month we look at the ambitious Pijul project and the effort to
build a next-generation version management system based on patches rather than snapshots.
On the DVD: AlmaLinux 9.5 and Manjaro Gnome 24.2
#291/February 2025
Optimizing Linux
All the classic Linux distros are optimized for some abstract “general purpose” use case that no
one matches exactly. If you want to get better performance out of your system, you’ll need to
tune it yourself. This month we study some steps for tweaking system and network performance.
On the DVD: Linux Mint 22 Cinnamon Edition and EndeavourOS Neo
#290/January 2025
LibreOffice Alternatives
LibreOffice is the reigning king of the Linux desktop, but some users would rather explore
the other offerings before opting for the perennial default office suite. We explore some of
the leading contenders.
On the DVD: Fedora 41 Live Workstation and Manjaro Xfce 24.1.1
#289/December 2024
Coding with AI
Futurists predict a day when computers will write the computer programs. Are we there
already? This month we separate fact from hype to examine some of the popular AI-based
coding tools and explore what they can (and can’t) do well.
On the DVD: Kubuntu 24.10 and Kali Linux 2024.3
#288/November 2024
Smart Home
If you listen to megavendors like Google and Amazon, the only path to a smart home is
through the cloud, but the Linux community has a better way. We'll show you some open
source smart home tools with no cost and no spying.
On the DVD: Rocky Linux 9.4 and MX Linux MX-23.3
FEATURED EVENTS
Users, developers, and vendors meet at Linux events around the world.
We at Linux Magazine are proud to sponsor the Featured Events shown here.
For other events near you, check our extensive events calendar online at
https://www.linux-magazine.com/events.
If you know of another Linux event you would like us to add to our calendar,
please send a message with all the details to [email protected].
Events
stackconf 2025 April 29-30 Munich, Germany https://stackconf.eu/
OpenSearchCon April 20-May1 Amsterdam, Netherlands https://events.linuxfoundation.org
KubeCon + CloudNativeCon China April 20-May1 Hong Kong, China https://events.linuxfoundation.org
Regional SDC Denver April 30 Denver, Colorado https://www.sniadeveloper.org/denver
JAX Mainz May 5-9 Mainz, Germany https://jax.de/mainz-en/
PyCon US 2025 May 14-22 Pittsburgh, Pennsylvania https://www.python.org/events/python-events/1507/
DORS/CLUC 30 May 21-23 Zagreb, Croatia https://www.dorscluc.org/
Flock to Fedora 2025 June 6-8 Praque, Czech Republic https://fedoramagazine.org
ISC High Performance 2025 June10-13 Hamburg, Germany https://isc-hpc.com/
June 2025 FreeBSD Developer June 11-12 Ottawa, Canada https://freebsdfoundation.org
Summit
BSDCan 2025 June 11-14 Ottawa, Ontario https://www.bsdcan.org/2025/
KubeCon + CloudNativeCon June 16-17 JapanTokyo, Japan https://events.linuxfoundation.org/
OpenSouthCode 2025 June 20-21 Málaga, Spain https://www.opensouthcode.org/conferences/open-
southcode2025
Open Source Summit June 23-25 Denver, Colorado https://events.linuxfoundation.org/
North America
Images © Alex White, 123RF.com
Contact Info
WRITE FOR US
Editor in Chief Linux Magazine is looking for authors to write articles on Linux and the
Joe Casad, [email protected] tools of the Linux environment. We like articles on useful solutions that
Associate Editor
Amy Pettle solve practical problems. The topic could be a desktop tool, a command-
Copy Editor line utility, a network monitoring application, a homegrown script, or
Aubrey Vaughn anything else with the potential to save a Linux user trouble and time.
News Editor
Jack Wallen
Our goal is to tell our readers stories they haven’t already heard, so we’re
MakerSpace Editor especially interested in original fixes and hacks, new tools, and useful ap-
Hans-Georg Eßer plications that our readers might not know about. We also love articles on
Managing Editor advanced uses for tools our readers do know about – stories that take a
Lori White
Localization & Translation traditional application and put it to work in a novel or creative way.
Ian Travis We are currently seeking articles on the following topics for upcoming
Layout
Dena Friesen, Lori White cover themes:
Cover Design
Dena Friesen
• Internet Privacy
Cover Image • Alternative FOSS Version Control Systems (not Git)
© korkut82 and gl0ck33, 123RF.com
Advertising • Cool Rasp Pi Projects
Jessica Pryor, [email protected]
Let us know if you have ideas for articles on these themes, but keep in
Marketing Communications
Gwen Clark, [email protected] mind that our interests extend through the full range of Linux technical
Linux New Media USA, LLC topics, including:
4840 Bob Billings Parkway, Ste 104
Lawrence, KS 66049 USA Security
•
Publisher
Brian Osborn • Advanced Linux tuning and configuration
Customer Service / Subscription • Internet of Things
For USA and Canada:
Email: [email protected] • Networking
Phone: 1-866-247-2802 • Scripting
(Toll Free from the US and Canada)
• Artificial intelligence
For all other countries:
Email: [email protected] • Open protocols and open standards
www.linux-magazine.com
If you have a worthy topic that isn’t on this list, try us out – we might be
While every care has been taken in the content of the
magazine, the publishers cannot be held responsible interested!
for the accuracy of the information contained within
it or any consequences arising from the use of it. The Please don’t send us articles about products made by a company you
use of the disc provided with the magazine or any work for, unless it is an open source tool that is freely available to every-
material provided on it is at your own risk.
Copyright and Trademarks © 2025 Linux New Media
one. Don’t send us webzine-style “Top 10 Tips” articles or other superfi-
USA, LLC. cial treatments that leave all the work to the reader. We like complete so-
No material may be reproduced in any form lutions, with examples and lots of details. Go deep, not wide.
whatsoever in whole or in part without the written
permission of the publishers. It is assumed that all Describe your idea in 1-2 paragraphs and send it to: [email protected].
correspondence sent, for example, letters, email,
faxes, photographs, articles, drawings, are supplied Please indicate in the subject line that your message is an article proposal.
for publication or license to third parties on a non-
exclusive worldwide basis by Linux New Media USA,
LLC, unless otherwise stated in writing.
Linux is a trademark of Linus Torvalds.
Authors
All brand or product names are trademarks of their
respective owners. Contact us if we haven’t credited Bernhard Bablok 64 Jon “maddog” Hall 69
your copyright; we will always correct any oversight.
Printed in Nuremberg, Germany by be1druckt GmbH. Erik Bärwaldt 18, 56 Daniel LaSalle 76
Distributed by Seymour Distribution Ltd, United
Kingdom Zack Brown 12 Rubén Llorente 70
Represented in Europe and other territories by:
Sparkhaus Media GmbH, Bialasstr. 1a, 85625 Bruce Byfield 6, 26, 40 Vincent Mealing 67
Glonn, Germany.
Linux Magazine (Print ISSN: 1471-5678, Online
Joe Casad 3 Pete Metcalfe 52, 60
ISSN: 2833-3950, USPS No: 347-942) is published
monthly by Linux New Media USA, LLC, and dis- Andrea Ciarrocchi 32 Mike Schilli 44
tributed in the USA by Asendia USA, 701 Ashland
Ave, Folcroft PA. Application to Mail at Periodicals Mark Crutch 67 Tim Schürmann 36
Postage Prices is pending at Philadelphia, PA and
additional mailing offices. POSTMASTER: send ad- Nate Drake 82 Jack Wallen 8
dress changes to Linux Magazine, 4840 Bob Billings
Parkway, Ste 104, Lawrence, KS 66049, USA. Marco Fioretti 88 Harald Zisler 28
Grub Tricks
The grub2 boot loader is a staple of the Linux ecosystem.
It is so easy to press the button and watch it go that
many users don’t ever look closely at how to customize
and adapt the system startup process. Next month we
show you some tricks with grub2.
Also inside:
• Build a Custom Linux Distro for Niche Applications
• Onion OS: Play with Linux on Retro Handheld
Gaming Consoles
• Rust in the Linux Kernel
• Ultra-light Web Apps with Streamlit
• And much more!
Please note: Articles could change before the next issue.