Professional Documents
Culture Documents
A I Powered Raspberry Pi
A I Powered Raspberry Pi
A I Powered Raspberry Pi
Subscribe
& save!
Michael Reed
I’m happy to hear the Linux percentages on
Steam are up, no doubt thanks to the Steam
Deck. It’s reached the stage where I assume On digital and print:
that most games will work, but I do a quick
check on ProtonDB to be safe. Frostpunk,
see page 16
Fallout 76 and No Man’s Sky are among my current installs.
A.I.-POWERED
REVIEWS
RASPBERRY Pi
like more performance from his
performance products.
OPNSense 23.7 23
CREDIT: Magictorch
Nate Drake has the good sense to try out
OPNSense, a top-notch firewall distro
based on FreeBSD.
ROUNDUP IN DEPTH
Pi USER TUTORIALS
REGULARS AT A GLANCE
News 6 Subscriptions 16
Valve’s game-changing Proton turns five; Get your monthly Linux dose, grab yourself
kernel 6.5 hits the streets; Vim creator an Alexa Aquablaster and save money!
Bram Molenaar dies; happy birthday to
Debian; plus Distro Watch, and more stories Back issues 62
from the world of open source. Get hold of previous Linux Format editions.
Answers 11
Diving into the darkest recesses of his HotPicks 83
enormous brain, Neil Bothwick drags Mayank Sharma would steer people away
out solutions to readers’ problems with from a future Star Wars/Star Trek crossover
backing storage, listing running GUI apps in movie and towards HotPicks, so they could
Next-gen Wi-Fi 78 a terminal, upgrading Linux Mint, and more. read about OnionShare, Bulky, Sweeper, Min,
Another new wireless technology, KDiskMark, OnionMedia X, Pwall, Nostlan,
already? Darien Graham-Smith looks Mailserver 14 DevilutionX, Paper Clip and Menu Editor.
ahead to the next-generation networking Readers share their experience of firewalls
standard, Wi-Fi 7. and FORTRAN, while others ask for advice. Next month 98
GAMING
KERNEL OPINION
Bram also authored the software announced his passing due to “a But open source can no
build tool A-A-P, which was written in medical condition that progressed more win than a person
Python as well as the programming Bram delivered a talk at quickly over a few weeks”. His
can be fit, once and for all.
language Zimbu, designed to make T-DOSE 2014 on Zimbu, funeral was held in Lisse, the But it can lose through slow
coders more productive. However, he which was shared by Netherlands, on 16th August. Vim erosion of values and apathy,
still found the time to work on Vim fans on social media will be continued by co-contributor if we let it. It’s time for
almost daily for over 30 years after his passing. Christian Brabandt. us to push back.
OPINION DISTRO
n 16th August 1993, the late and great releases are always code-named Sid, after the
Faith Ekstrand
is an engineering fellow
O Ian Murdock announced the Debian
Linux Release as an alternative to SLS
character who regularly mutilated his toys.
Despite its great age, millions of users, and
at Collabora. (Softlanding Linux Systems). the fact it’s the basis for other popular Linux
The name itself was a portmanteau of distros, such as Ubuntu, Debian isn’t the longest
NVK, the new, fully Ian’s (then) wife Debra’s name and his own. actively maintained Linux project. That honour
open source Vulkan Successive Debian distribution code names belongs to Slackware, which turned 30 in July.
driver for Nvidia GPUs, has are based on the names of characters from Debian birthday parties are taking place in
finally landed in the main the Toy Story films, such as the most recent Belgium, Bolivia, Brazil, the Czech Republic,
Mesa branch. Included as Debian 12 Bookworm. Germany, Portugal and Turkey. You’re invited to
an experimental driver in Releases do not follow a fixed schedule but join in the fun at https://wiki.debian.org/
the 23.3 release of Mesa, come out roughly every two years. Unstable DebianDay/2023.
it’s the culmination of over
a year of work by myself
as well as Karol Herbst
and Dave Airlie at Red
Hat, and about a dozen
DISTRO SOFTWARE
private released
Red Hat, who has been
hard at work building
Nouveau kernel support
for the new memory
binding and execution SUSE has plans to be The Document Foundation
API required by NVK.
With this first release,
taken private once again releases another version of
NVK brings support for by owner EQT Partners. its powerful office suite.
Turing (RTX 20XX and
GTX 16XX) and later USE, the company behind SUSE Linux he Document Foundation announced
GPUs. We plan to
eventually support
S Enterprise (SLE), has had a number of
owners over the years. The German
T the release of LibreOffice 7.6
Community on its blog on 21st August.
hardware as far back as Linux distributor was originally founded in 1992 This will be the last release numbered in this
Kepler (GeForce 600 and and was later acquired by American software way, as TDF intends to switch to a calendar-
700 series), but those are company Novell in 2003. Novell itself was based system moving forward.
currently poorly tested at acquired by the Attachmate Group in 2011. We took the time to view the helpful
best and missing a few Attachmate and Micro Focus merged in 2014, YouTube video summarising the main upgrades
essential features. only to sell off SUSE to private equity firm EQT (https://youtu.be/AB7TbrkCTSA). For instance,
It runs on the same Partners in 2018. the suite now supports touch zoom gestures
Nouveau kernel driver as Despite an IPO on the Frankfurt Stock for touchpads in the main view, while the Linux
the old OpenGL drivers Exchange in 2021, EQT is now taking SUSE Format team was also delighted to discover
but it requires an entirely private once again. It expects SUSE to delist that Writer now incorporates one-step insertion
new userspace API. This in the last quarter of the year. Existing of page numbers.
API will be included in shareholders can still retain private You can find out more at https://wiki.
Linux 6.6 and later kernels. investments in the company. documentfoundation.org/ReleaseNotes/7.6.
You may have to build In a statement, SUSE said the move will allow
LibreOffice 7.6
your own kernel and Mesa it to “focus fully on its operational priorities and
comes with a video
if you want to give it a try, execution of its long-term strategy”. No doubt showcasing its new
but now that NVK is finally this strategy will involve continuing its work features, including
out there, you are more on SUSE’s own fork of RHEL, after Red Hat’s better support for
than welcome to play decision to restrict the availability of its source Open Document
with it! code to Linux distributors. templates.
Distro watch
OPINION
QUALITY
What’s behind the free software sofa? CONTROL
MAGEIA 9
Mageia started life in September 2010 as a fork of Mandriva
Linux. Unlike its forebear, the OS is a community-based, not-
for-profit project, and is based in France.
Although Mandriva fell by the wayside in 2011, Mageia has
enjoyed nine stable releases since its inception. Italo Vignoli
The default desktop is KDE. Mageia’s online repositories is one of the LibreOffice and The
also support installation of every other major desktop Document Foundation founders.
environment, and prebuilt images are available for Gnome
and Xfce, as well as the Plasma desktop. Mageia was built from When LibreOffice was
Learn more at www.mageia.org. the ashes of the former born, the developers
distro Mandriva. changed the approach from
OpenOffice.org, launching a
source code clean-up activity
KALI LINUX 2023.3 that resulted in a significantly
A favourite of penetration testers everywhere, Kali is named better quality office suite. As
after the Hindu goddess who maintains the balance of good part of this, the developers
and evil. This reflects the fact that the OS contains a number also revised their approach to
of tools used for hacking but which are intended to help users quality assurance, setting up
improve their network security. an automated process based
Version 2023.3 includes the Kali Autopilot automated on state-of-the-art tech.
attack framework. It also incorporates nine new tools, The LibreOffice project
including Rekono, an automation platform combining different uses Gerrit as a patch review
hacking tools for pentesting. The latest version of Kali tool for its integration with
You can read more at www.kali.org. includes more tools for Git. The source code is
automating pentesting. regularly compiled by a
battery of Tinderboxes, and if
the compilation is successful,
SIDUCTION 2023.1.0 it undergoes a series of
Siduction is based on the unstable Debian Sid branch. It automated tests that verify
usually follows a rolling release model but version 2023.1.0 the software’s behaviour.
was released specially in honour of Debian’s 30th birthday This is complemented by
in August (see opposite). It’s based on a snapshot of Sid, the quality assurance team’s
combined with some extra packages and the ever- work, which uses tools such
indispensable Calamares installer. as Bugzilla to manage both
Live installation media are available offering the KDE bugs and regressions, and to
Plasma desktop, as well as LXQt, Xfce, Xorg and noX. report them to developers for
Find out more at https://siduction.org. The Siduction team created fixing the source code.
a special release to celebrate The quality of source code
Debian’s 30th birthday. has improved significantly
since developers started
using Coverity Scan services
SMARTOS 20230824 in 2012. LibreOffice now has
SmartOS is an open source Unix-like operating system one of the lowest rates of
based on Illumos, a community fork of (now discontinued) defects in its source code of
OpenSolaris. It’s designed to be particularly suitable for all software packages.
building clouds and generating appliances, so has no default The stats from Coverity
desktop environment. Scan are testament to the
Releases are issued every second Thursday and include the cleaning and refactoring of
ZFS filesystem/logical volume manager, as well as multiple LibreOffice source code
virtualisation solutions, including Zones, KVM and bhyve. done since 2010. They also
Interestingly the development team claims SmartOS SmartOS is clever enough to be confirm the extent of the
containers can run securely on bare metal. able to run containers securely technical debt inherited from
Learn more at www.tritondatacenter.com/smartos. on bare metal. OpenOffice.org, which was
completely resolved
within four years.
Kernel Watch
OPINION
PLUMB
LINE
Jon Masters keeps up with all the latest happenings
in the Linux kernel, so you don’t have to.
inus Torvalds announced the improve power management on certain future
Jon Masters is a kernel hacker
who’s been involved with Linux
L release of Linux 6.5, noting he had a
“nagging feeling that a lot of people
Xeon processors.
for over 22 years, and works on are on vacation and that things have been Downfall
energy-efficient ARM servers. quiet partly due to that”, but no giant issues This past month came the disclosure of another
had been raised during the development round of speculative execution vulnerabilities.
As I write this, it’s the cycle. As a result of the 6.5 release, the Speculative execution is a feature of all modern
US Labor Day holiday merge window (period of time during which high performance CPUs in which they attempt
weekend, the unofficial end disruptive changes can be incorporated into to mitigate the relative speed of memory (slow)
of summer that signals one the kernel) is open for what will be 6.6. versus CPU (very fast) by having the CPU guess
last hurrah before it’s back Features merged into 6.6 so far include ahead while it is waiting to load data from
to school for the kids, and the usual set of updates to work-in-progress memory. This is what was (ab)used by the
time to hunker down for Rust language support, drivers and a number Spectre and Meltdown vulnerabilities in 2018.
the adults for the final push of core kernel features. For example, it’s now Downfall or GDS (Gather Data Sampling) is
ahead of the end-of-year possible to build a kernel without support for similar to the earlier MDS (Microarchitectural
holidays. This summer has buffer heads, a legacy feature of the Linux Data Sampling), which came after Spectre and
felt more ‘normal’ than filesystem layer that had become a Meltdown. In both cases, CPU buffers intended
the past few, and it has been bottleneck, as we detailed last month. to help store values that are in the process of
great to actually see a whole being loaded from memory can leak stale data
bunch of folks face to face Linux 6.5 loaded by another program running on the
at assorted events. The latest released kernel was right on time same CPU. Downfall targets AVX (a vector
This year, I’m super- following a mostly uneventful development extension on Intel CPUs), and specifically a
excited about the Linux cycle. It includes a number of internal buffer used for gathering operations that
Plumbers Conference. I’m changes, such as support for mount-beneath combine multiple loads from different memory
looking forward to having (a feature that allows lower layers of locations. It is possible to write a malicious
hallway catchups with many containers to be updated at runtime without program that abuses speculative execution to
people I’ve not see over exposing new mounts to programs within), extract data previously loaded by another
the past few years, but also and a confidential compute (CoCo) feature program into AVX vector registers.
participating in discussions called unaccepted memory (confidential This includes various cryptographic secrets
around a number of exciting compute VMs from, for example, AMD, Arm where vector processing is used to speed up
technologies coming along or Intel must explicitly accept the memory the generation of hashes and verify checksums.
at once. One of the biggest handed to them by the host; memory not yet Thus, the attack is potentially quite serious.
to me is confidential accepted can be tracked). Users of Intel There is a workaround that can be enabled
compute (or CoCo), in server platforms might be interested in through a microcode (CPU configuration data)
which virtual machines support for Topology Aware Register and update that should be available in most major
are ‘encrypted’ and their PM Capsule Interface (TPMI) intended to Linux distributions (and from BIOS vendors).
contents can’t be examined,
even by the operator.
Finally, I want to say a few ONGOING DEVELOPMENT
words about the early death
of Kris Nova, who passed Modern CPUs implement a Return Address (SRSO) is mitigated through microcode
away in a climbing accident. Stack (RAS) that optimises the return of updates, or through forcing function returns
She was in the prime of her function calls so the CPU can guess where via a common location (safe RET). Patches
career and was particularly the next instruction will come from. This for SRSO are in distro updates but still
well known in the is similar to a branch predictor, but for being cleaned up in upstream discussion,
Kubernetes community. function call returns. A vulnerability was so further rounds of updates are likely.
She also founded and ran discovered in certain AMD Zen processors A number of announcements continue
the popular Hachyderm.io in which an attacker could mistrain these from the organisers of micro-conferences
Mastodon server from her resources such that the CPU would later at the upcoming Linux Plumbers
basement lab. I didn’t know speculatively hallucinate branches that Conference (Virginia, US, November 2023),
Kris, but from what I’ve seen didn’t exist, theoretically allowing for data such as testing and confidential compute.
of her online, she had an leakage. Speculative Return Stack Overflow Details are available at http://lpc.events.
outsized impact and
will be missed.
Q Sticky computer
I have a device that records data
a FAT filesystem and split the output into
files of 1GB or 2GB. Provided you only
For a file-based store, use:
$ sudo mount /path/to/file /mount/point
to a USB stick. I cannot change this, it is read from these files, and do not touch the -o loop,ro
a ‘black box’. It works fine except that in one currently being written to, you should Naturally, you are free to remount the
order to access the data, I have to stop be OK, but no promises. backing storage as read-write when not
the devices, change sticks and start a new Once you have compiled the kernel connected to the host device.
session. Is there a way to connect a Linux and rebooted, you create somewhere for
box to the USB ports on the device so that
it sees the Linux box as a USB storage
the data to be written, called the backing
storage. This can be either a hard disk
Q Starting with X
I was wondering if there is a way,
device and records the data to its hard partition or a file. A partition is easiest – in a terminal, to show what GUI programs
drive? I have not heard of such a thing, all you need to do is format the partition are running in Xorg. Something like
but it would mean I could access the data with an appropriate filesystem and tell the FVWM’s FvwmIconMan or the Workspace
while it was running. module to use it, for example: List menu of Blackbox, except it would be
Alex Bennett $ sudo mkfs.vfat /dev/sdb2 a command-line program that prints a list
$ sudo modprobe g_mass_storage file=/ of the running programs in the console. In
A There is a solution using the Linux
kernel gadget class, but it has a
dev/sdb2
If you want to use a file as the backing
other words, like ps but only for GUI.
Leo Frost
couple of drawbacks. The first is that the storage, create and format it with:
kernel module used for this, g_mass_
storage, is not normally enabled on
$ dd if=/dev/zero bs=1G count=16 of=/path/
to/file
A At first this seems like a simple
request, then on further thought, it
distribution kernels, so you most likely $ mkfs.vfat /path/to/file is more complex a problem. In fact, it turns
need to install the distro’s kernel source This creates a 16GB (bs x count) file – out to be so simple that there are several
package, enable the CONFIG_USB_ give this as the file option for the module. ways to accomplish this. One such option
MASS_STORAGE option, then recompile Now you can connect your USB cable, is pstree. As the name implies, this is like
it. The other drawback is that the and your black box device should see the ps but it outputs processes in a tree-like
filesystem you use to receive the data ‘USB stick’ you have created. To avoid any format. Unlike ps, you can start the tree
is mounted on the other device, so any chance of data corruption, when you need with a particular process ID, showing only
changes to it from your computer will to access the backing storage, you should children of that process:
probably cause corruption. However, most mount it read-only, like this: $ pstree $(pgrep Xorg)
devices that record to USB storage expect $ sudo mount /dev/sdb2 /mount/point -o ro This uses pgrep to get the PID of Xorg
and then gives that as an argument to
pstree. Some desktops, particularly those
using Wayland, need a different parent
process. You may need to tweak pstree’s
arguments to get the style of output you
need, or even process it with sed or awk .
One thing to bear in mind is that if more
than one user is running an X session, this
fails. You can use the -o option with pgrep
to return only one PID, but there’s no
guarantee it’s for your session.
The output from pgrep is verbose, it
lists every process running under the X
(or Wayland) server. If you actually just
want a list of windows opened by these
programs, you have a couple of choices.
Use $ xlsclients for a brief list, though
we found it omitted some programs that
had windows open, including the editor
being used to type this and the terminal
Hidden away in the rarely visited corners of the Linux kernel is a way to make your computer from which it was launched. A more
appear as a USB storage device. complete list is given by $ wmctrl -l .
You may have to install wmctrl from information about input events; the -event For a graphical approach, there is
your distro’s package manager. It can also option limits the display to button presses Input Remapper, available from https://
list open desktops and other information so you avoid reams of output as you move github.com/sezanzeb/input-remapper.
about the desktop environment as well an the mouse. Press each of the buttons you This is not in most distros’ repositories,
manipulate your open windows: moving, want to disable and note its number. Let’s but installation files, including a DEB for
closing or resizing them. say they are 6 and 7 – so, using the ID of Debian/Ubuntu/Mint, are on the releases
your mouse, run: page. Once installed, you need to enable
Q Button it
I need a utility to disable the third
$ xinput set-button-map [ID] 1 2 3 4 5 0 0 8 9
What xinput does is remap the mouse
and start the Input Remapper service:
$ sudo systemctl enable --now input-
and fourth mouse buttons on my Logitech buttons. The order of the arguments is the remapper
Marble Mouse. I use Advanced Mouse original button numbers, the arguments Then you can run the graphical
Manager on Windows, but can’t find an are the buttons to map them to, so this program to modify the behaviour of
equivalent for Linux Mint. command remaps the sixth and seventh your mouse and other input devices.
Ryan Scott buttons to button 0, which disables them.
You can also use this to swap buttons
Q Different kernels
A You can do this with the xinput
command, without installing any
around. So, to swap buttons 1 and 3, the
left and right buttons, for those who prefer
I installed the HWE kernel on
my Linux Mint system a few years ago
extra software, or there is a graphical a left-handed mouse, run: when I got a new computer and the stock
program you can use. To use xinput , you $ xinput set-button-map [ID] 3 2 1 4 5 6 7 8 9 kernel didn’t yet support the graphics.
need to get your mouse’s ID by running: The xinput command runs for the Now it does, and I’m unsure what steps I
$ xinput list current session only, so if you mess should follow to bring things back to the
Then you need to find the number of things up, simply log out or reboot and standard configuration.
each button you want to remap, which everything will be back to normal. Once Kernels in Update Manager shows
may be different from what you think you find the command that gives you 5.19.0-50 as installed and active, and
because scroll wheels are also seen as what you want, add it to ~/.xinitrc or set the only other installed kernel is 5.19.0-
buttons. Run $ xev -event button in a your desktop environment to run this 41. The 5.15 series is listed but none are
terminal. It opens a window showing command at startup. installed. Apt shows six HWE packages in
place: linux-generic-hwe, linux-headers-
generic-hwe, linux-hwe-5.19-headers,
linux-image-generic, systemd-hwe-hwdb.
Will it work to install and make active
the newest 5.15 kernel, boot it, and then
(when I’m sure it’s working) uninstall
the HWE packages with Apt? Will the
presence of the HWE packages interfere
with putting a 5.15 kernel in place? (In
other words, should I do the Apt removal
first?) Will I have to remove the 5.19
kernels myself?
Luke Thomson
Q Fresh Mint
I am currently using Linux Mint
Once you are at the latest version of
Mint 20, open a terminal to install and run
$ echo “Hello World” | rev
dlroW olleH
20.2 and want to install Linux Mint 21.2 the Mintupgrade tool – this handles major So, if we reverse the lines in your file,
Victoria. During the installation, where version updates: remove the first word (which was the last),
it is asking to create a user, can I use the $ sudo apt update then reverse it again, you get exactly what
same username ‘dave’ from Linux Mint $ sudo apt install mintupgrade you want:
20? And if I use the same username, will $ sudo mintupgrade $ rev file.txt | cut -d ‘ ‘ -f 2 | rev >newfile.txt
all my files and config files still be there in The first command updates the And there you have it: the utter
/home/dave or will it erase everything? package list. Then Mintupgrade opens a simplicity of the Unix approach of
Harvey Shepherd graphical program to guide you through combining several small and simple
the upgrade process. Doing it this way, programs in a pipeline to achieve
A This is not a good idea. Installing
over the existing setup erases not
you keep all your existing software – but
upgraded to the latest available versions
something more complex.
only the operating system but also your – and files with no need to change to GET HELP NOW!
personal files. That is, if you have gone configure anything. Make sure you hit the
with the default Mint installation of having Refresh button each time you start the We’d love to try to answer any questions
everything on a single partition. If you Update Manager, so that it downloads you send to answers@linuxformat.com, Subscriptions: for magazine issues email help@mymagazine.co.uk
have /home on a separate filesystem from the latest list of available software. no matter what the level. We’ve all been
/ you can install over the existing distro stuck before, so don’t be shy. However, we’re
without affecting your personal files.
However, you still erase any system-wide
Q Backing up text
I have a text file containing a
only human (although many suspect Neil is
just ChatGPT), so it’s important that you
configuration you have done. That number of lines each containing several include as much information as you can. If
includes any software you have installed in words. The number of words on each line something works on o ne distro but not
addition to the basic distro. Even if you do varies, but I need to remove the last word another, then tell us. If you get an error
this, Linux bases file permissions on the from each line. I know I can use cut or message, please tell us the exact message
numeric IDs of users – the names are a awk to identify the last word, and I could and precisely what you did to invoke it.
convenience for us mere humans. If you then use sed to remove it, but this seems If you have, or suspect, a hardware
only have one user, then that user is likely complex and prone to error. Is there a problem, let us know about the hardware.
to be created with the same UID – users simple way to script this operation? Consider installing hardinfo or lshw.
normally start with UID 1000, IDs below Lucy Doyle These programs list the hardware on your
that are reserved for system services. But machine, so send us their output. If you’re
if you have more than one user, you need
to ensure the IDs match.
A There is an easy way to remove the
first word from a line with cut :
unwilling, or unable, to install these, run the
following commands in a root terminal and
The Mint developers have said in the $ cut -d ‘ ‘ -f 2- <file.txt send us the system.txt file, too.
past that reinstalling is not the way to go, The -d option sets the field delimiter to uname -a > system.txt
as there is a way to upgrade to the new a space (the default is tab), then -f 2- tells lspci >> system.txt
version without reinstalling everything, cut to print everything from the second lspci -vv >> system.txt
and then having to reconfigure it. First field onwards. That’s all well and good, but
WRITE TO US No sense!
While I agree that you can’t
Do you have a run pfSense on a Raspberry
burning Linux-
Pi, I take issue with the
related issue
assumption that pfSense
that you want to
discuss? Write doesn’t support the ARM
to us at Linux architecture (Build Your Own
Format, Future Hardware Firewall, LXF305). I
Publishing, own one of Netgate’s 1100
Quay House, appliances, which is based on
The Ambury, a dual-core ARM Cortex-A53
Bath, BA1 1UA or 1.2GHz processor. Likewise,
email letters@ the Negate 2100 is also based We wouldn’t complain if that were our upscaled video…
linuxformat.com.
on the same processor.
Admittedly, users have to purchase these ARM- and this product also has a separate console output
based products from Netgate to run pfSense on (RS-232 COM port), which connects to a laptop
ARM and cannot just install this code on their own USB port. Given that pfSense upgrades can take
generic ARM device. 10 to 20 minutes or so to download and install on
One feature I would advocate that wasn’t slower devices, it really helps to be able to view the
mentioned in your article is being able to monitor progress and resist the urge to reboot before the
the firewall via a console port, which is particularly upgrade is complete.
useful if you tend to install regular pfSense updates Chaz Curran
or tinker with the firewall. The remote Webgui
interface is the much preferred option when Neil says…
configuring the pfSense firewall – however, when To be fair, we were talking about publicly available
upgrading or rebooting the firewall, the console port builds of pfSense. While I’m sure it’s possible,
is extremely useful for monitoring progress and compiling ARM binaries on non-ARM systems (which
viewing any errors. a lot of readers would be doing) can be a pain and
The Netgate appliances have a console port as takes an age. But that’s great advice about the serial
standard, I also have a generic x86 fanless four- interface that is easily overlooked these days.
network port box configured as a backup firewall,
Upscale funk
As a long-time subscriber, it’s great to see the
magazine filled with such useful features. I’ve
enjoyed reading about new AI-based software to
upscale and improve images, but is there anything
like this to improve videos? I have a few videos
recorded in formats such 3GP and MPEG on mobile
phones, and I would love to be able to improve the
quality of both the picture and sound. Is anything like
CREDIT: www.netgate.com
this available?
Tom Morgan
Neil says…
Our normal advice for people wanting to run both
Windows and Linux is to pick up a second hard drive
and dual boot. SSDs are pretty damn cheap now –
240GB will set you back around £15 for either a SATA
or last-gen PCIe v3 NVMe model. Install Windows
first and then your flavour of Linux. You can still run
Windows in a VM if you want, but unless you have a
pretty recent processor and graphics card, software
virtualisation of the GPU won’t be an option and Honestly, coding kids today don’t know they’re born!
pass-through is a pain to configure.
shane_collinge@yahoo.com
SUBSCRIBE NOW!
www.magazinesdirect.com/LIN/C45D
Call 0330 333 1113 and quote C45D
16 LXF307 October 2023 www.linuxformat.com
Save money today! SUBSCRIBE
*Terms and conditions: Offer closes 31/10/2023. Offer open to new UK subscribers only. Pricing is guaranteed for the first 12 months and we will notify
you in advance of any price changes. Please allow up to six weeks for delivery of your first subscription issue (up to eight weeks overseas). Your gift will be
delivered separately within 60 days after your first payment has cleared. Gifts only available to subscribers on the UK mainland. Gift not available with a digital
subscription. Gifts only available in the colour black. The full subscription rate is for 12 months (13 issues) and includes postage and packaging. If the magazine
ordered changes frequency per annum, we will honour the number of issues paid for, not the term of the subscription. For full terms and conditions, visit www.
magazinesdirect.com/terms. For enquiries please call +44 (0) 330 333 1113. Lines are open Monday-Friday 9am-5pm UK time or email help@magazinesdirect.
com. Calls to 0330 numbers will be charged at no more than a national landline call, and may be included in your phone provider’s call bundle.
INSIDE RDNA 3
Think of RDNA 3 as a translation of what AMD’s achieved with
chiplets in the CPU world with its Ryzen chips – two chiplets
connected by a high-bandwidth interconnect. The thing is, when it
comes to the graphics world, you need an even bigger interconnect
and even more chips chock-full of transistors to get the job done.
Let’s start with the biggest chip, the GCD. This is the largest
component inside the Navi GPU. And within the GCD lie the
foundational computational cores that power the AMD RDNA 3
gaming experience, the compute units (CUs). Much like in RDNA 2,
these are divided up into dual compute units, which means they
share access cache and memory, although most of their constituent
The brand new Navi 33 GPU
makes its debut inside the RX 7600. parts are discrete to each CU.
Each CU contains 64 stream processors (SPs). These are the
driving force behind rasterised gaming performance on any AMD
and is supposed to rival Nvidia’s DLSS 3. The RX 7600 GPU. AMD brags a 2.7x increase in shader FLOPs (floating point
is certain to support FSR 3. If you appreciate the extra operations per second) versus RDNA 2.
performance FSR 2 brings, FSR 3 promises to be better. Ray tracing accelerators introduced with RDNA 2 are back,
The RX 7600’s sweet spot is 1080p. At high settings, including new hardware for specialised box sorting, aimed at pushing
with the exception of the ultra-punishing Cyberpunk efficiency up for ray-traced workloads. It’s all for a pretty serious
2077, the RX 7600 is capable of the all-important 60fps finessing of the entire RT pipeline in RDNA 3, and it’s clearly working
or higher. Less demanding but popular games such as for AMD, with a focus on reducing bandwidth requirements, and the
DOTA 2 purr along at well over 100fps. pressure on ALUs to perform RT tasks has put it on a better footing
Notably, AMD has yet to catch up to Nvidia in terms of versus the competition in ray-traced games.
ray tracing. It struggles to match the RTX 3060 when AMD is introducing Infinity Links with RDNA 3. These are a way
there’s heavy ray tracing involved, but generally pulls to transfer heaps of data at a rapid pace between chiplets on the
ahead of it in more traditional raster rendering, as we see Navi GPU. The resulting performance is 3.5TB/s across the new
in Warhammer III. We’d argue that ray tracing isn’t all that interconnect, and to be able to offer that for less than 5% GPU
important on mid-range cards that lack grunt anyway. power consumption.
We’ve spent a lot of time comparing or contrasting the
RX 7600 to Nvidia’s offerings, but don’t dismiss the Intel
Arc A750. Its performance is a bit hot and cold, but it has uncomfortable. We’d expect the premium tier partner
definitely improved since its release, and it’s now far cards to be effectively silent.
cheaper than the RX 7600. The card’s performance is best described as adequate,
The RX 7600 tends to run out of horsepower at though that’s mostly in respect to demanding titles.
1440p, at least at high settings in demanding games. There are millions of gamers playing games from a few
There’s nothing stopping you from dropping the image years ago or esport titles who are looking for a modern
quality a notch or enabling FSR to boost your 1440p card for a good price. The RX 7600 is just such a card.
performance, though. If you want 60fps-plus for high The RX 7600 isn’t quite the budget hero gamers have
refresh monitors in all modern games, you’ll have to take been waiting for. Unless you’re coming from a GTX or an
a step up to a better and hence more expensive card. AMD Vega, the performance gains may not be worth it.
The RX 6700 XT remains a solid option. But its modern features, display capabilities and
The little RX 7600 ran hotter than we expected but a compact size will appeal to more than just gamers.
peak temperature of 72°C is nothing to worry about. Still, the card still leaves us wishing for more. It doesn’t
You can expect the bigger partner cards to run a lot do enough to appeal to RX 6000 or RTX 30-series
cooler than that. It’s a quiet card, too. At no stage did owners, and its 8GB and 128-bit bus will begin to look
the fans ramp up to anywhere near a level we’d consider weak as we move into 2024 and 2025.
VERDICT
DEVELOPER: AMD
WEB: www.amd.com
PRICE: £250
Rating 7/10
In games at 1080p, you can expect 60fps or more from the RX 7600.
OPNSense 23.7
Nate Drake has the good sense to try out OPNSense, a powerful
firewall distro based (in a roundabout fashion) on FreeBSD.
PNSense is one of the
IN BRIEF
What do you
O most popular specialist
operating systems
mean, “We only designed specifically for firewalls
cover Linux?” and routers. It boasts a proud
This open ancestry, given the OS is a fork of
source BSD- pfSense, which itself is a fork of the
based OS has it now (sadly) defunct m0n0wall, built
all: a slick setup, on the FreeBSD operating system.
clear UI and We’ve delved into OPNSense’s
advanced lineage as FreeBSD places a strong
features far emphasis on security, such as
beyond your ACLs (access control lists), MAC
basic firewall. (mandatory access control) and
support for OpenSSH. Like Use the UI to set firewall rules. OPNSense also supports other features, such as VPN, and it can
FreeBSD, OPNSense also has an be expanded further with extensions.
SPECS integrated mechanism to handle
CPU: 1GHz automatic updates. image of the OS, an integrated GeoIP database, as well
dual-core Unlike FreeBSD, which can be run on virtually any as a discount on business subscriptions.
Mem: 2GB chipset known to man, the only official build for Just spending a few minutes setting up OPNSense
HDD: 8GB OPNSense is for x86_64. This is balanced by an easy and creating some basic LAN rules is enough to see
Builds: x86_64 installer, available in the traditional ISO format, as well why it remains one of the most popular firewall distros.
as VGA, serial and nano images for USB sticks. Our The user interface is very intuitive and well laid out.
installer was just 413MB, expanding to a 1.6GB ISO. There are three main support tiers, from Critical to
Community. Community users are well served by the
Guess the password documentation section, though paid subscribers also
On first launch, you can choose to run in live mode as benefit from support from the OPNSense core team.
root or as installer. This is where we hit our first issue, If this weren’t enough, the team bundles an ebook,
as we were encouraged to use the default password, Practical OPNSense, free with business subscriptions.
without any mention of what it is. Luckily, OPNSense’s (Hard copies are available for more tactile firewall
extensive online documentation came to the rescue, users.) The manual gives a full rundown of OPNSense’s
revealing the password to be opnsense. more advanced features, such as intrusion prevention,
After this, it was a simple matter of choosing a app control, web filtering and malware detection.
keymap, install configuration and hard disk, before Having criticised OPNSense’s lack of availability for
setup was underway. Once complete, just navigate to non-X86 devices, said documentation has instructions
192.168.1.1 to interact with your shiny new firewall. on how to build the OS for your own chipset using
We say “firewall” but OPNSense is capable of much OPNSense Tools (https://github.com/opnsense/tools).
more than blocking traffic. Inline intrusion prevention is The forum has multiple accounts of users successfully
provided care of Suricata and Proofpoint’s Emerging running the OS on their Pi but if you want to use it in a
Threats open rules, which are built in to the OS. Its web serious way, we recommend sticking to bare metal.
proxy offers access control and support for external
blacklists to filter unwanted traffic. Other options
include firewall aliases and DNS blacklisting.
VERDICT
OPNSense also integrates support for OpenVPN, as DEVELOPER: Deciso
well as WireGuard. You can log in to user-created VPNs WEB: https://opnsense.org
via 2FA, as well as the user interface itself. LICENCE: Simplified BSD/FreeBSD
You can expand the OS’s capabilities even further
via plugins such as ZenArmor, which has a built-in FEATURES 9/10 EASE OF USE 9/10
threat intelligence system. There’s both a free and a PERFORMANCE 10/10 DOCUMENTATION 10/10
paid version.
OPNSense itself is released under a FreeBSD OPNSense is the last word in firewalls. Setup is simple and it
licence but developer Deciso also sells a Business can be easily managed from the intuitive UI.
Edition of the latest version of the OS (code-named
Restless Roadrunner). This includes extra features Rating 9.5/10
such as a commercial firmware repository, an OVA
VERDICT
DEVELOPER: Rhino Linux Team
WEB: https://rhinolinux.org
LICENCE: GPL-3.0
Like every good desktop environment, Unicorn can quickly switch Rating 7/10
between workspaces. Don’t expect too much from the Rhino wiki, though.
VERDICT
DEVELOPER: Failbetter Games
WEB: www.failbettergames.com
PRICE: £16.75
Rating 7/10
Reconnect with siblings over their poor taste in suitors!
Michael Reed
sometimes has
HOW WE TESTED…
then tested the file document editing. The use case we’re with a web interface. To this end, it’s fairly
synchronisation facilities considering is setting up a web-enabled easy to set up and use. Pydio Cells has a
between it and a desktop cloud server that can be shared with family similar purpose, but it also contains a lot of
machine. We also tried to members or colleagues rather than setting group collaboration facilities. Seafile has a
connect to each cloud system up a business file server. business-like appearance but it contains
using its own mobile app. OwnCloud is one of the best-known all the facilities you would want for file
systems in this area, and one of the other management within your personal cloud.
installing
up the MySQL
database and
then run the
executable
Installable apps
Some systems can do more than
just file share and can be expanded.
y default, Nextcloud has some apps already configured,
B such as a photo manager with basic editing and
slideshow capabilities. There are also email, calendar and
contacts apps, and a note-taking app that integrates with an app
for mobile devices. Beyond that, there is an excellent marketplace
with apps that cover pretty much every area of functionality you’d Nextcloud has some apps built in (but their installation can be skipped the first time
expect, along with some niche areas such as GPX viewers for you log in), and the marketplace is packed with both substantial and niche apps.
visualising outdoor activity data. Overall, it’s an excellent system.
With OwnCloud, some of its functionality is provided by apps architectures. As with most systems of this type, much of the GUI
behind the scenes, but it doesn’t ship with any extras configured. functionality is provided by plugins behind the scenes. In Pydio
Thankfully, it has a built-in, categorised marketplace with ratings. Cells, there are a few of these that are disabled by default, such
It doesn’t have as many apps as Nextcloud, particularly if we’re as an HTML editor and an audio/video capture one.
talking about the type that a home user is likely to want, but it’s
still a good selection. It’s also worth considering the fact that VERDICT
OwnCloud is undergoing a transition right now, introducing some
uncertainty to the apps ecosystem, at least for the moment. NEXTCLOUD 9/10 SEAFILE N/A
The Seafile developers have stated that they don’t want to PYDIO CELLS 5/10 OWNCLOUD 7/10
add a plugin or app architecture for security and performance FILESTASH 4/10
reasons, as well as not wanting to dedicate development Nextcloud is the winner here, with OwnCloud not far behind. The others were
resources to it. Pydio Cells and Filestash, however, do have plugin underwhelming, but keeping things simple has its own merit.
W in the file-management
facilities of these systems.
does a good job of presenting it all with a
clean and bright interface. Small icons run
is rather pleasant to look at. When you
first log in, you are taken to a summary
To a degree, we expect a user along the top of the window and these page of recent files and directories, but
interface that places a slightly give access to apps, such as the calendar the starting point is configurable on a per
different emphasis on layout and email, along with the user and admin account basis. Users can also select
from that of a file manager for configuration editors. Within here, there between a light and dark theme.
a desktop operating system. are some good light and dark themes. On the right is an icon bar with links to
Typically, one wouldn’t expect to File management is good, with a the home directory and bookmarked
carry out the same sort of detailed multiple-select box as part of each icon locations. Once you’re deeper into the
file management when working and a right-click menu. Oddly, there is a directory structure, things take on a more
with files in the cloud; however, we file upload icon, but this can’t handle full business-like look, without being drab.
do expect to be able to carry out the directories. This oversight is partially The user interface implements a right-
standard operations such as copying, compensated for because you can drag click menu, which is good to see. It’s
moving and deleting without too and drop files and directories from the file always a subjective take, but the user
much difficulty. manager of your operating system. interface feels fast compared to the
The majority of file management There weren’t any speed problems others, no doubt because this is a self-
in the cloud tends to consist of file as such, but Nextcloud didn’t feel quite as contained system rather than a system
browsing. To this end, we appreciate fast as systems such as Pydio Cells and that runs inside a web server. Looks-wise,
views such as one showing the Filestash, particularly when moving from it strikes a good compromise between
recently added files. Large one area of the system to another. being functional but also colourful.
thumbnails are also appreciated,
along with easy access to favourite
folders. Pop-up context menus are
always nice, as simple operations
shouldn’t be overly complicated
compared to carrying them out on a
desktop computer. Browsing should
be fast, with minimal delays and an
aesthetic that is pleasant to look at.
Mobile apps
You probably want to be able to access your files while on the move.
eafile has a simple app that’s available for Android and Pydio Cells also offers a basic file browser for Android and
S iOS. You can either enter the URL of your server (which
can be an IP address) along with your username and
iOS, but we were unable to test it because we couldn’t quite
produce the authentication certificate it required and the option
password, or enter the details of professional hosting if you to ignore the security issue didn’t work.
have paid for that. Once it’s running, you can browse your files, OwnCloud also has a mobile app, and as with the others, it
download them and launch media files. It worked fine with the allows browsing and launching of files. The sharing options were
image and video files that we tested it with. limited to a publicly available HTTP link, however, rather than to
The files are presented in list format with icon previews any other services, such as social media, available on the device.
alongside some file details. In many ways, the simplicity and Filestash doesn’t have a mobile app, but you can, of course,
functionality reminded us of Seafile itself, and it’s well suited to browse to the web interface on a mobile device.
mobile use. A corner hold-down button gives access to further
options, including the ability to share. The share options seemed VERDICT
to include all of the registered services on the device (such as
social media platforms) or a pasteable HTTP link. NEXTCLOUD 8/10 SEAFILE 7/10
The Nextcloud app works in much the same way, but it can PYDIO CELLS 5/10 OWNCLOUD 7/10
also switch to an icon palette mode as well as the default details FILESTASH N/A
list view. As is the case with Seafile, it supports dozens of The mobile apps weren’t massively different from each other, but Nextcloud
platforms when making files publicly available. had the most features.
File synchronisation
Automatic duplication of a folder on your computer to your cloud.
he Nextcloud website provides a desktop client synchronised because the filename was not understood. Seafile
Storage back-ends
Flexibility in terms of where you
store your file data is a boon.
t’s worth noting that Linux symlinks and network
Freemium vs free
Does the enterprise version offer
vital features not in the free one?
ithin moments of visiting the OwnCloud website you’re
The verdict
Personal cloud servers
e’ve decided to make Nextcloud the winner of this
ALSO CONSIDER
Installing OwnCloud raises the question potential to offer superior performance potentially a simplified way to set up a
of whether to install the classic 10.x and simpler installation. We ran it and it computer as a dedicated cloud server.
version or the new Infinite Scale edition. seems to be a fully working system, but Sandstorm.io is a do-everything
Infinite Scale is a from-the-ground-up it doesn’t yet have all the features or the solution in the same vein as Nextcloud
reimplementation that was released app compatibility of the older version. or OwnCloud that has a lot of apps in its
towards the end of last year. As it is an YunoHost (https://yunohost.org) is a marketplace. You can go to the website
executable coded in Go and contains standalone Debian-based distro that (https://sandstorm.io) to try out a live
its own web server code, it has the you install like any other distro. This is demo to get a feel for what it offers.
..
Tam Hanna has followed the Raspberry Pi since the first
revision, and puts the RPi 4 to work on amusing AI tasks.
rtificial intelligence payloads are common, you can also look forward artificial intelligence works in principle
your first steps into the fascinating realm systems using Python is not only lots of whole. We will, for example, take a look at
of artificial intelligence. fun, but it also gives you some basic the swap memory system and the new-ish
The following pages demonstrate a experience of workflow, which can often libcamera2 API – knowledge that can
wide variety of possibilities – while some also be applied to advanced, cloud- and will also be useful for other, more
tasks, such as the recognition of faces, sourced AI systems. Knowing how mundane, everyday computing.
ong gone are the halcyon days when the the history of process computing.
e are using the project found at https://github. The deployment of the program might take a few
picam2.configure(config)
picam2.start(show_preview=True)
Working with the API is somewhat complex, as it
works with the fully stream-driven paradigm. Therefore
our first task is the creation of an example configuration
– it is a struct containing various parameters specifying
how information from the camera sensor is to be
presented to the application.
In the case of our example, the attribute “format”:
“YUV420” is especially important – it specifies the bit-
field sequence that will be expected by the OpenCV
code. Furthermore, we invoke the method picam2.
start(show_preview=True) to start the actual image-
processing pipeline. By setting show_preview to true,
we furthermore spawn a preview window.
After that, the main work loop needs to be modified:
while True:
print(“-------”)
print(“are we done? n for another one, q to
terminate”)
inp = input(); above, the precompiled OpenCV image was compiled The face
if inp == “q”: without the GUI stack. recognition is
ready for action.
break; Due to this, the first act involves modifying the
print(“Capturing”) image-acquisition pipeline so that it uses libcamera2
yuv420 = picam2.capture_array() instead of OpenCV:
rgb = cv2.cvtColor(yuv420, cv2.COLOR_ ...
YUV420p2RGB) data = pickle.loads(open(encodingsP, “rb”).read())
We intend for each acquisition cycle to be triggered #vs = VideoStream(usePiCamera=True).start()
by pushing n and Return – this is accomplished by the picam2 = Picamera2()
code shown here. The method picam2.capture_array() config = picam2.create_preview_
momentarily freezes the CCD data stream and returns configuration(main={“size”: (640, 480), “format”:
an array with colour information, which is then “YUV420”})
transformed into the format expected by the machine- picam2.configure(config)
learning payload. picam2.start(show_preview=True)
After that, one of the predefined methods in the After that, the main work loop must be modified to,
face detection module can be used to determine once again, process the image data provided:
the face position: while True:
boxes = face_recognition.face_ yuv420 = picam2.capture_array()
locations(rgb,model=”hog”) rgb = cv2.cvtColor(yuv420, cv2.COLOR_
encodings = face_recognition.face_encodings(rgb, YUV420p2RGB)
boxes) frame = imutils.resize(rgb, width=500)
for encoding in encodings: ...
knownEncodings.append(encoding) In principle, the program is ready to run – due to
knownNames.append(“Tam”) the missing GUI support, errors will crop up pointing to
The example at hand trains only one face. If you missing elements in the OpenCV framework. If this is
want to train the model to use multiple faces instead, the case on your machine, simply comment out the
the string passed to knownNames must be modified to offending line.
contain the name of the person currently occupying the When run successfully, a result similar to the one
space in front of the sensor. in the screenshot (above) appears. Note that the
Finally, image information is to be persisted. The preview window runs independently of the rest of the
code is a prime example of the persistence module – if Python program, providing an overview of whatever
you have issues understanding it, please consult the information is shown in front of the CCD sensor.
documentation at https://docs.python.org/3/library/
pickle.html to learn more about this generally useful Going further
part of the Python standard library: While a library-based face detection system is
data = {“encodings”: knownEncodings, “names”: convenient to use, it doesn’t go very deep into the
knownNames} underlying neural network theory. Should you wish to
f = open(“encodings.pickle”, “wb”) learn more about the underlying mathematics, the
f.write(pickle.dumps(data)) tutorial at https://pyimagesearch.com/2018/09/24/
f.close() opencv-face-recognition/ might be useful – do,
however, keep in mind that it is quite difficult.
Harvesting the models Finally, a disclaimer is required: this code must not
Once the model files are persisted, the facial_req.py be used for any security-relevant applications. It can
script is intended to be used to perform the actual easily be tricked – for example, with a static image of
image detection. It has to be modified – as mentioned the relevant person.
VERDICT
DEVELOPER: 52Pi
WEB: https://52pi.com
PRICE: £40
It looks good, and holds everything neatly but its cooling ability
is questionable and is more for show than performance.
Rating 6/10
Elegoo Neptune 4
“Smoke me a Klipper, I’ll be back for breakfast!” cries Denise Bertacchi.
VERDICT
DEVELOPER: Elegoo
WEB: www.elegoo.com
PRICE: £258
Much the same as the Neptune 3 Pro but with added Klipper.
Fast and accurate, The lack of Wi-Fi or KlipperScreen negates most of the perks.
the Neptune 4
Rating 7/10
does a fine job
on our speed
benchmark.
CWIID
Credit: https://github.com/azzra
Control a Pi bot
with a Wiimote
Les Pounder travels back to 2014, the last time that he held a
Wiimote that wasn’t embedded in an LCD TV.
YOUR PHONE
Tired of being tracked and spied upon by popular mobile OSes,
Jonni Bidwell is ditching Android and taking back privacy with /e/OS.
ast issue we reviewed Murena’s the Murena cloud, you don’t have to miss out
MURENA CLOUD
Ever since Google launched documents. Oh, and there’s reasonable rates – for setup-use-mailvelope-with-
its Gmail and Drive apps, no surreptitious scanning of example, 64GB is only €3.99 murena.html .
Android users have come to your files to train AI models, per month. For the privacy- If you are already running a
expect their email and files serve ads or other nefarious conscious, /e/OS includes Nextcloud instance, that can
to be available on their purposes. Once you’ve OpenKeyChain, which makes also integrate more or less
phone. The Murena cloud can signed up, it even offers to easy work of setting up PGP seamlessly. If you’ve always
do all of this and more. And automatically synchronise keys, which you can then use wanted to run a Nextcloud
all without spying on you. It’s your photos, although the with the built-in mail app. If instance but never got round
powered by some great free package only offers 1GB you want to use PGP with to it, you might consider
Image credit: Murena
FOSS tooling, including of storage, which will fill up Murena cloud’s webmail, self-hosting Murena cloud
Nextcloud and OnlyOffice. fast if your device has, say, a you can find a great guide instead. Check the project’s
And altogether it offers a 48-megapixel camera. You to doing just that with GitLab at https://gitlab.e.
complete solution for email, can pay for more storage Mailvelope at https://doc. foundation/e/infra/ecloud-
calendar, contacts and (up to 2TB) at really quite e.foundation/support-topics/ selfhosting for details.
module is a three-pronged /e/OS, you can tell it’s something all its
own. On first boot, you’re invited to
defence against everything that’s create (or sign in with) a Murena cloud
account. This is entirely optional, and
lock screen, from whence they and messages) before you begin.
can be summarily dismissed. Everything is wiped when you do
this. There’s a fine guide to doing
Advanced Privacy a complete (OK nearly complete)
As we noted last issue, one of backup of your device with Team
/e/OS’s most notable features Win Recovery Project (TWRP) at
is its Advanced Privacy module. https://doc.e.foundation/pages/
This is a three-pronged defence backup-and-restore-with-twrp.
against everything that’s wrong html. This might end up being
with mobile ecosystems. Firstly, quite large, so you need sufficient
it blocks in-app trackers. This is space on your SD card.
done at the DNS level by If you’ve dabbled with
referencing tracker lists alternative mobile OSes, you’ll be
maintained by Exodus and familiar with all the rigmarole of
AdAway. Some apps stop unlocking bootloaders, booting
working with their trackers into Fastboot and installing gauche
stymied, but they can be safe- recovery environments (TWRP, for
listed on a case-by-case basis. example). And, of course, the nail-
Next, there’s an option to not only biting moments before the new
disable Location Services, but OS starts booting. You’ll also
also to randomise it, or set it to understand why we won’t try to
anywhere in the world. This give complete instructions here.
overrides the usual GPS and The bootloader unlocking process
Wi-Fi mapping, rather than using differs from device to device, but
a VPN or the like. As a reader of there is a beta Easy Installer
this magazine, you’ll know we (https://doc.e.foundation/easy-
don’t like commercial VPNs installer) that currently supports
anyway, but if you do want to 21 phones. It’s a multi-platform
hide your IP address, Advanced desktop application (yes, there’s a
Privacy lets you route all traffic The official YouTube app may not work with Linux version) that reduces the
over Tor. Obviously, this is much /e/OS but NewPipe is a fine alternative. process to just a few clicks. If
slower, and unsuitable for your device isn’t supported by the
streaming video, but if you really want to be private, Tor Easy Installer, you can use the traditional installation
is much more suitable than some random VPN that method, which involves installing the Android Debug
you saw in a sponsored link somewhere. The Advanced Bridge (ADB) and Fastboot.
Privacy module may become available for the wider Current /e/OS builds are based on Android versions
Android soon, but for now it’s an /e/OS exclusive 10 (Q) to 12 (S), and by the time you read this, Android
13 (T) builds should be available. If you’d like to try your
Installing the /e/ ROM hand at porting /e/OS to a new device, do check the
If you have a supported device (check the list on the docs. And if you’d like to support /e/OS, you can
Murena website), it ought to be pleasantly easy to ditch donate, offer help on the forums, or tell your friends
Android proper and enjoy /e/OS. Of course, flashing a they should run it, too. These projects with punctuation
new ROM should never be taken lightly, so do back up in their titles are usually awkward to spell out, but this
everything you might possibly need (photos, contacts one can be voiced slash-e-slash, which we quite like.
emember the good ol’ days of the internet case available in the software repositories, you also
{
width: 600, INSTALLATION IS A CHORE
height: 300,
outPath: ‘./images-to-video.mp4’, Unless you’re running a rolling release distribution, such as Arch
defaults: { Linux, you likely have an older, incompatible version of FFmpeg.
transition: null, This leaves you with two options.
duration: 1.2, First is to manually compile a recent release of FFmpeg, which can
}, be quite a cumbersome task, more so because we don’t have room
clips: [ enough to go over the steps in this tutorial. Thankfully, you can head
{ layers: [{ type: ‘image’, path: ‘./ over to FFmpeg’s homepage, where you’ll find detailed instructions
IMG_20190805_130342931.jpg’ }] }, on compiling it.
{ layers: [{ type: ‘image’, path: ‘./ The second option is to retain the version of FFmpeg you already
IMG_20190805_130358474.jpg’ }] }, have available, and grab the static release of FFmpeg from the
], project’s website. This is designed for users who don’t wish to
} go through the trouble of manually compiling FFmpeg. Head to
Here we’ve created an MP4 file using two images, https://johnvansickle.com/ffmpeg/ and grab the version that best
and we’ve defined certain parameters at the top, such suits you. You can opt for the latest 6.0 release or the master branch.
as the width and height. Save this file as images-to- Extract the tarball with the tar xvf ffmpeg-release-amd64-static.tar.xz
video.json5 and then run the editly images-to-video. command. Now navigate into the extracted directory and place the
json5 command. You can now play the images-to- comprising FFmpeg and FFprobe binaries into a directory within
video.mp4 file in your favourite video player. your $PATH.
You can use a combination of image and video files, If you’ve decided to retain the current version of FFmpeg, make
add text overlays and custom music files, and even use sure to first run the which ffmpeg command, and place the
multiple music files for the same video clip. extracted binaries in a directory in $PATH, which will be scanned
To get a sense of some of the operations possible before the directory the contains the installed FFmpeg:
with Editly, open the terminal and clone the Editly $ which ffmpeg
directory from GitHub: /usr/bin/ffmpeg
$ git clone https://github.com/mifi/editly.git $ echo $PATH
$ cd editly/examples /home/linuxlala/.cargo/bin:/home/linuxlala/.local/bin:/usr/local/
You can now read through the different JSON5 files bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/
in the examples directory to get a feel for how Editly local/go/bin:/home/linuxlala/go/bin
works. To see any of the effects in operation, run the $ sudo cp ffmpeg ffprobe /usr/local/bin
editly <filename.json5> command, which creates an
output file of the same name. You can then play the file
to see the effect. for example, uses two video files and a music file to Editly doesn’t
{ create a stitched video file. offer a man page,
but the ‘editly
// verbose: true, Should you run into any problems, you can use the
--help’ command
// enableFfmpegLog: true, Issues section on the project’s GitHub page. Your own provides a quick
outPath: ‘./video2.mp4’, creativity and willingness to experiment are the only introduction to the
defaults: { impediment to transforming your vanilla images and command options
transition: { video clips into stunning visual masterpieces. you can use.
name: ‘linearblur’,
},
layer: { fontPath: ‘./assets/Patua_
One/PatuaOne-Regular.ttf’ },
},
clips: [
{ layers: [{ type: ‘video’, path: ‘./
assets/changi.mp4’, cutFrom: 0, cutTo: 2 }, {
type: ‘title’, text: ‘Video 1’ }] },
{ layers: [{ type: ‘video’, path: ‘./
assets/IMG_1884.MOV’, cutFrom: 0, cutTo: 2
}] },
],
}
This example uses the linearblur transition
and two different video clips to create the
final file. If you only have a couple of video or
image files to stitch together, you can even
work with Editly without bothering with a
JSON file – editly title:’Masterpiece’ vid1.mp4
vid2.mp4 --audio-file-path ./filename.mp3 ,
KDE MARBLE
Credit: https://marble.kde.org
and out, plus move around the map, but it’s quicker to NAVIGATING KDE MARBLE
use your mouse: zoom using the wheel, then click and
drag to move around. As you zoom into the Atlas, you’ll
see it’s rather basic, and you can’t zoom in that far.
You’ll also see a thumbnail of the map in the top-left
– double-click anywhere inside here to jump to that 1 3 5
place on the map. This thumbnail can also be clicked
and dragged to a new location and is an example of
one of many Info Boxes that can be placed on the map
(check out the box, opposite page, to learn more).
The basic topographical map provides relatively few
landmarks. Click on one to reveal a pop-up providing 2 4
info, including a description (such as National Capital)
and stats: geospatial coordinates, and a factsheet
offering population, country, state and time zone.
Beneath the map is a wealth of more information. To 6
see this, position the crosshairs in the middle of the
screen over an area of interest, then right-click and
choose Address Details to be given its address at
street level, including postal or zip code.
This underlying information can also be used to Search panel Crosshairs
jump to a specific point on the map using Marble’s
1 Use this to quickly locate places across 4 Click and drag the map into position
the entire planet – including street addresses. so your target location appears beneath
search tool. Simply type the place name you’re looking
the crosshairs.
for into the Global Search box and hit Enter. Depending Map view
on how much information you’ve provided, you may be 2 Choose which type of map you want Bookmarks
given several options to choose from – double-click to view from this list – simply click on it to 5 Once created, click a bookmark or
one to centre the map on that position. instantly switch. landmark to bring up a pop-up dialog with
information about it.
You can search at all levels right down to a specific Overview
street – note, only the first six results are displayed by 3 Double-click anywhere on this Navigation controls
default, so be prepared to narrow your search. In most Overview Map Info Box to jump to another 6 If you don’t have a mouse wheel, use
cases, Street Name, Town should be sufficient to get a part of the world. this slider to zoom into and out of your map.
hit. Alternatively, change your position so the place
you’re looking for is within the visible map, then click
the binoculars icon and select Area Search instead. ensure the latest versions are supplied (and to prevent
filling your hard drive with tens of gigabytes of data). As
Switch map you zoom in, therefore, new levels require downloading.
The topographical map is rather basic, but Marble One advantage of the Atlas view is that its lack of detail
comes with plenty of alternatives. Start by switching to means it’s fast and responsive, but be patient with
OpenStreetMap, a global roadmap. Select this, zoom in OpenStreetMap and the blurry map eventually resolves
and you’ll see a more familiar-looking map with obvious itself into detail.
advantages over the topographical map, not least of If you’re on a slow internet connection, it’s possible
which is a greater level of magnification and detail akin to download maps and regions to your hard drive – the
to what you see on OS maps. This means street-level latter option enables you to store portions of the
detail, roads and a far more useful overview. There’s current map for a more responsive experience. The
also a vector-based variant – Vector OSM – at the end simplest way to use it is to position the map to show
of the list, which is mainly suited for HiDPi displays. the area you wish to download, then choose File > By default,
When you move around the OpenStreetMap or Download Region and leave Visible Region selected. Marble displays
Vector OSM, it’s less responsive than the topographical You’ll also see a Tile Level Range option, which refers its maps as
map, particularly when you zoom into a location. That’s to the different levels of detail you want to download. a spinnable
because the maps are all pulled from online sources to The first figure is the current magnification level, so globe, but you
increase it and you’re given an estimate of how many can change
‘tiles’ require downloading and how much space they’ll this by clicking
consume. As you nudge each magnification level up, the Projection
drop-down
the number of tiles (and download size) more than
menu, where
doubles each time. Once you’re happy, click OK.
you’ll see seven
alternative
Plot routes views are
One of the principal uses of the roadmap is to plot available.
directions from A to B, and in theory, Marble should Experiment to
handle this with aplomb. Sadly, it appears the API used see which one
to provide this feature – OSRM (Open Source Routing suits you best
Machine) – is broken. Whenever you plot a car or – for traditional
pedestrian journey using this engine, your route is top-down maps,
Mercator is
Build up a library of favourite (or notable) places with the help of plotted and shown on the map (along with distance and
probably best.
Marble’s bookmarking feature. You’ll never get lost again. estimated journey time), but after searching for a short
time, you’re told ‘No route found’, which means no by Marble are used for that specific mode – however,
step-by-step directions are provided. see the tip (opposite page) for a word of warning.
Switch to the The only exception is when plotting relatively local
Legend tab bike journeys in the UK – when you select Bicycle as Set up bookmarks
next to Map your preferred means of transport, a different API Having to manually select favourite locations each time
View and you’ll called CS (CycleStreets) is used. This does work as you want to use them is laborious, which is where
find options for advertised – the step-by-step guide (below) reveals Marble’s bookmarks come into play. These work as
customising how to use Marble to plot routes. Ultimately, though, you’d expect, enabling you to store places for easy
the look of the
it’s not going to replace your phone’s route planner. retrieval later – whether when selecting points of travel
currently
Beneath the Get Directions button are several more or just to mark them so they’re easy to find.
selected map
as well as buttons. To the left of the Preview button is Save, for Let’s start with your home: once located on the map,
viewing a legend storing the route on your hard drive in KML format, position the map so the crosshairs are over your house
explaining which can be restored later using Open to its left. or the street where you live, then choose Bookmarks >
the various Click the green + button and you can add one or Set Home Location. You can return here by clicking the
elements shown more stopping points to your route. There’s a Reverse Home button above the magnification slider.
on the map Route button to generate directions for the journey The Home bookmark is simply a convenient means
itself, such as back and a handy Clear Route button to allow you to of jumping to your home location with a single click.
roads, and types start again. Finally, a Settings button enables you to Other bookmarks go further, so why not create
of buildings and
configure the currently selected mode of transport by a second bookmark pointing to your home location
businesses.
selecting which online and offline services supported now? Right-click on it and choose Add Bookmark. The
bookmark’s name is the street address by default, but as ZIP files, then extract them before choosing File >
you can edit this, plus add a description, and file the Open to open them in turn.
bookmark into your choice of folder to create another Railways and roads offer nothing you won’t find Sadly, it appears
layer of organisation. Once created, a star appears with from the roadmaps, but other options – particularly only two of
the bookmark title on the map – click it to display the points of interest – do add items of new interest to Marble’s route-
Place Information pop-up, which includes geospatial your map. The British example, for instance, is planning back-
coordinates and the description you entered. To jump staggering in the sheer volume of local landmarks that ends currently
work – partially
to a bookmark, select it from the Bookmarks menu, have been added, but sadly not all have been labelled.
or fully. We
where you’ll also find a Manage Bookmarks option that You can install multiple files at once – they sit on top
tested the
enables you to tweak (and remove) bookmarks. of each other until you close Marble, at which point other services
they’re removed, and you need to reload them again. – including
Add more details registering for
You can also overlay additional information over your Create your own map and providing a
maps thanks to Marble’s support for files created in the If you’re not happy with any of the maps on show, MapQuest API
GIS ShapeFile format. Start your search for free files at why not create your own? Choose File > Create A New key – but none
https://mapcruzin.com – click Maps on the navigation Map to be shown a choice of three options: Web Map had any effect.
banner to see what’s available. We recommend Service (WMS) is the simplest option to follow. First It’s a testament
to Marble’s
browsing Free World Shapefiles By Country, where you you’ll need a suitable WMS URL – for example, go to
ageing status
can find such overlays as buildings, natural features, www.gebco.net and navigate to Data & Products >
and apparent
railways, roads and points of interest. Download these GEBCO Web Services > Web Map Service to obtain the lack of support.
URL. Input this into the URL box and click Next.
You’re shown a list of available maps – select one
and click Next. Provide a suitable map title, name and
description, as well as a preview image if it’s not been
provided, then click Next again to set up the Legend
tab, which allows you to choose what elements users
can show – there’s no need to provide a different
Legend image. Finally, click Next to preview your map
and – if you’re happy with it – click Finish. Once created,
the map is accessible via the Map View tab.
A good source of WMS URLs can be found by
visiting https://directory.spatineo.com – not all work,
but many do (including those offered by the British
Geological Society). You can browse by location or
Choose Settings > Configure Marble Virtual Globe > View to switch search for specific keywords, then copy and paste the
from kilometres to miles and to tweak other options. URL to see if it’s accepted. Happy map hunting!
DIGIKAM
Credit: http://digikam.org
FACE RECOGNITION
We can’t help but think that Once you’ve set up facial some time but, eventually, To cut a long story short –
DigiKam’s face recognition recognition in DigiKam, you DigiKam tells you that it’s and you should really read
feature is the first step in can search for named people completed its search. Now up about this further in the
more general image analysis. in just the same way as any click on People at the top DigiKam manual – you might
If that’s the case, it might no other keyword, as described of the left-hand area and a have to identify a person in a
longer be necessary to add in the main part of this zoomed-in portion of all number of photos before they
keywords to photos, which tutorial. First, click on the images containing faces are recognised automatically.
would be a huge benefit. People tab at the left of the appears on the right. Move However, with sufficient
However, face recognition is screen and then click on the pointer over a face and training, DigiKam should be
already a part of DigiKam, so Scan Collection For Faces. when it asks ‘Who is this?’, able to select photos using
here’s the low-down. This will probably take quite provide the person’s name. people’s names as keywords.
provides a histogram showing how many photos were whichever photos are selected. So, an easy way to
taken on each day, week, month or year. Conceivably, select the photos you want to export is to first carry
this might just come in useful on occasion. out a search using your relevant criteria. Needless to
say, this is much quicker than selecting them by hand
Finding your photos outside of DigiKam. Export is available in the menu of
Our penultimate topic is to look at finding specific that name and the options are extensive, running to 16
photos when you’ve got a collection of hundreds or platforms, including Dropbox, Flickr, Google Drive and
thousands of shots. We’ve already touched on the Map Twitter. And as a parting shot on exporting – this time
tab at the left of the screen, and this does, indeed, in the very broadest sense of the word – and bearing in
provide a means of searching for photos by their mind that it works with your selected photos following
location. However, we’ve not yet seen how to make use a search, you might be interested in the Print Creator,
of the star rating, keyword, title and other data that you which can be found in the Tools menu.
add to your photos over time. One of the easiest This completes our overview of DigiKam, but we
searches is by star rating. You can apply this filter – and have to admit there’s so much more that we haven’t
also Pick and Colour Labels – in the Labels tab at the been able to cover, but which you might find useful. Our
left of the screen. Note that you can search for more recommendation, therefore, is that you first try out
than one rating, so if you want to find all photos that what we’ve covered in this tutorial, but then move
are rated four or five stars, just select those two on to trying out other things that sound interesting.
options. Similarly, the Tags tab at the left of the screen However, because a few of DigiKam’s tools can actually
permits you to view any photos containing one or more alter your photos permanently, before you start using
tags. However, for more complicated searches, you these advanced facilities for real, we suggest that you
need to head over to the Advanced Search tool that create an album containing copies of just a few of your
you can find in the Tools menu. It provides the option of photos that you can experiment with in safety, knowing
specifying multiple criteria, all of which, or any of which, that your original photos are all stored separately and
have to be met. So, for example, you could search for out of harm’s way.
photos with a particular word in their titles, are tagged
with specified keywords, and have a specified
minimum star rating. Finally, on the subject
of searching, you probably noticed that, even before
you started adding keywords, there was already one
called Faces. This is concerned with using DigiKam’s
facial recognition feature and, while named faces are
selected in just the same way as other keywords, it first
needs to be set up (see box on page 59).
Take it online
Our final main topic concerns exporting photos to
various online destinations, including social media and
file-sharing sites. You might just wonder why you’d
want to do that from within DigiKam rather than by
your existing tried-and-tested method. And while for
some there’s an appeal to managing everything photo-
related from a single package, there’s a more tangible Although more fully-featured photo editors are available, DigiKam’s editing facility will be
benefit, too. The export functionality exports sufficient for many users.
Don’t wait for the latest issue to reach your local store –
subscribe today and let Linux Format fly straight to you.
Faster, cheaper and with DRM-free archive access!
3 GREAT
WAYS TO
SUBSCRIBE
Print, digita
l-only,
and print+d
igital
bundles!
FORTRAN
Credit: https://fortran-lang.org
been likened to With so much performance at forthcoming El Capitan powering the world’s most
Python, MATLAB your disposal – 100,000 times supercomputer, housed at demanding applications in 2023?
and Julia.
use a more modern compiler, but only use the original example, the FORMAT
instructions, and avoid using any that have been associated with the
deleted more recently. Perhaps the most well- READ statement tells it
respected FOSS compiler is GFortran (GNU Fortran), to expect an inter value
available in the main repositories. Instead, if you want of, at most, two digits and
an immediate way of trying out some FORTRAN code, the FORMAT associated
perhaps before moving to a locally-installed solution, with the last PRINT
use the online Try It Online resource (https://tio.run), statement tells it to print
which enables you to see the output from your code it as a six-figure integer.
immediately, and actually uses the GFortran compiler. The IF statement is an
As a first example, we suggest you try, and perhaps arithmetic IF statement,
then modify, the following code, which is written in the compared to the logical
original version of FORTRAN. Note that we deliberately IF statement that we
kept an error in this code, as you’ll discover if you input mostly use in other
a value of 10 or more, so you might like to correct that. languages, and which
It displays the factorial of a number – a number’s didn’t appear until a later
factorial being the result of multiplying together all version of FORTRAN.
positive numbers up to and including that number. By An arithmetic IF
definition, the factorial of zero is 1, and there’s no such branches to one of the
thing as the factorial of a negative number. three lines, depending on
READ 30, N whether the result of the
30 FORMAT (I2) expression in brackets is
IF (N) 40, 60, 70 negative, zero or positive,
40 PRINT 50 respectively. A DO loop is
50 FORMAT (17HCAN’T BE NEGATIVE) terminated by a
GOTO 110 CONTINUE statement, the line number of which is The team at
IBM that was
60 NFAC = 1 specified in the DO statement. Only capital letters responsible
GOTO 90 could be used originally, although most compilers for developing
70 NFAC = 1 now accept lower-case letters. The code is fixed FORTRAN was led
DO 80 I = 1, N format. A C in the first column indicates that the line by John Backus, a
name you might
NFAC = NFAC * I is a comment, an optional line number can appear in
recognise from
80 CONTINUE columns 1-5, any character in column 6 indicates that the Backus Naur
CREDIT: Wikimedia.org/Leonardo da Vinci National Museum of Science and Technology, Milan, CC BY-SA 4.0. IBM
90 PRINT 100, NFAC the line is a continuation of the previous line, and the Form notation.
100 FORMAT (I6) actual statement appears in columns 7-72.
110 STOP To learn more about the original FORTRAN, take a
END look at the IBM Programmer’s Reference Manual, at
A few comments here will help you understand https://bit.ly/lxf307manual.
the code. In 1957, computers generally didn’t have
terminals like VDUs or teletypes, so the READ The ongoing journey
statement would have read from a punched card. If Because the original FORTRAN had just 32
you’re using Try It Online, enter the value to be read – instructions, several of which were tied up with the IBM
which is the number for which the factorial is to be 704’s unique hardware, it’s not particularly surprising The original
calculated, and which would have been read from a that FORTRAN was expanded over the years. The first version of
BASIC, which
punched card – in the Input area. By default, all variable extension went by the name of FORTRAN II, it was still
differed
names starting with I, J, K, L, M or N are considered intended exclusively for use on the 704, and it added
significantly
integers; variables beginning with any of the other support for subroutines and user-defined functions, from many
letters are real. READ and PRINT statements refer to a surely major drop-offs for the original FORTRAN, plus of the more
FORMAT statement by its line number, which dictates complex numbers. There was also a FORTRAN III, but it modern
how the data should be interpreted or displayed. For was never publicly released. versions and
The first really important upgrade was FORTRAN IV. which was
It was supported on a much wider range of computers, introduced
and it became the de facto language for scientific, in 1964,
engineering and mathematical applications for several was heavily
influenced by
years. It appeared in 1962 and – if we skip FORTRAN
FORTRAN II.
66, which was essentially the same as FORTRAN IV,
In fact, it had
but named in recognition of it being adopted as an even fewer
ANSI standard in 1966 – it remained unchallenged until statements, but
FORTRAN 77. The main way in which FORTRAN IV many of the
added to FORTRAN II was its introduction of the logical drop-offs were
IF statement, an example of which is IF (N .EQ. 10) I = I those FORTRAN
+ 1 . Note that, unlike most more recent languages, the statements
relational operators were not symbols such as =, >, < that were
and so on, but two-letter codes surrounded by periods. closely related
to the IBM 704
Perhaps the best way to illustrate FORTRAN’s maturity is to point out So, for example, the relational operator in our previous
hardware.
that the IBM 704 on which it was first run used valves, aka tubes. example was ‘less than or equal’ and others, the
the earliest microprocessor-based computers. we’re dividing two integers and, had we not used the
Personal computers, in the broadest sense of the word, first REAL function, it would have given an integer result.
appeared in the early ’70s, many based on the 1974 8-bit Intel 8080 We’re not going to discuss all the successors to
processor, and its close relatives the Intel 8085 and the Zilog Z80. FORTRAN IV/66 in the same detail – after all, there
They were expensive, so were commonly used for early business have been quite a few – but we will summarise the
applications, but also attracted well-heeled hobbyists. Even in those main features of the more important versions.
early days, while there was a lot of diversity, standardisation also FORTRAN 77 added the ELSE option to the IF
came to the fore in the form of the CP/M operating system. From statement, and also introduced the concept of blocks,
1977 to the late ’80s, CP/M appeared on a whole range of machines, but only for the IF statement. A character data type
albeit sometimes only if a co-processor was added. While most of was added for the first time. Further block structured
those computers were from largely forgotten names, other support was added, over time, to include the DO
companies, including Acorn, Amstrad, Atari, Commodore and Tandy, WHILE and CASE constructs. With the introduction of
also sold CP/M-based machines. It mostly didn’t come as standard, Fortran 90 – and, no, that’s not a typo; with the onset of
but when other home computer users were programming in Basic, the 1990s, FORTRAN became Fortran – the
FORTRAN allowed CP/M users to embrace a superior language. requirement to put line numbers and statements in
specific columns was relaxed. It also allowed a mix of
FORTRAN today
If we wanted to be critical, we could describe
FORTRAN as an outdated language. Certainly, it’s
continued to be updated, but it could be argued that
the new versions represented belated efforts to
introduce programming paradigms that had been
commonplace in other languages for decades. For
example, block-orientation only started to appear, in a
limited way, with FORTRAN 77, almost 20 years after
ALGOL introduced the concept. And to take the (many concurrent threads in the same program), off- In the world of
example of object-orientation, this wasn’t provided loading to accelerators like GPUs, and distribution – high-performance
computing,
until Fortran 2003, which appeared on the scene no that is communication between different programs, FORTRAN remains
fewer than 31 years after the Simula language first possibly on different computers. This has allowed a hugely important
introduced the world to this paradigm. If all this is a FORTRAN to take advantage of large supercomputers workhorse.
valid criticism, though, it would be somewhat surprising that have many CPUs and GPUs.”
to learn that, according to the latest TIOBE index of the So, what are the benefits of FORTRAN that have
popularity of programming languages, FORTRAN contributed to its use today, and how does it compare,
currently stands at a quite respectable 14th place. in this respect, to more modern languages? According
To learn more about FORTRAN’s continued appeal, to Rafik, “FORTRAN is a high-level language that gives
we spoke to Rafik Zurob, IBM Open XL Fortran the compiler more opportunities to optimise. An
compiler development manager. To start, we wanted to example of this is in the design of pointers. FORTRAN
know what types of organisation use FORTRAN and in lets the user specify targets a pointer can address.
what typical applications. Rafik’s response suggested This allows the compiler to construct a more precise
that it’s used in the upper echelons of computing for aliasing analysis than other languages like C, in which
CREDIT: Wikimedia.org/Bill Bertram, CC BY-SA 2.5. Wikimedia.org/OLCF at LANL, CC BY-SA 2.0
leading-edge research. “FORTRAN is typically used for pointers can address anything.” It remains to be seen
high-performance computing and other compute- whether the likes of Python and Java are still attracting
intensive applications. Examples are scientific such favourable comment in another half century.
modelling and simulations in the fields of weather
prediction, physics, chemistry, biology, medicine,
astronomy and AI. Some of the big users are the large
research labs in the US and Europe,” he told us.
But is it only used to maintain legacy applications, or
are new projects being written in FORTRAN today?
Apparently, both are true, as Rafik went on to say.
“While legacy FORTRAN libraries still account for a
significant part of FORTRAN’s user base, many users
also take advantage of the new features in later
FORTRAN standards. The use of FORTRAN has also
shifted; instead of being used to write the whole
application, it is now commonly used to write the
computation kernels for the application. Other
languages like C/C++ or Python are then used to
write the user interface or other code that calls the
computational kernel. As a result, many users don’t
realise they’re using FORTRAN libraries. For example,
if you’ve used Python’s SciPy or NumPy modules,
you’ve likely used a BLAS library written in FORTRAN.
FORTRAN programs nowadays often also use either While other home computers of the ’80s were Basic-only, the Amstrad CPC 464 offered
the OpenMP or MPI specifications to add parallelism CP/M as an option, and hence FORTRAN.
VIRTUALMIN
Credit: www.virtualmin.com
irtualmin has been helping people administer usually lets you choose between different Linux server
FREE VPS
Finding a completely free VPS
isn’t easy, but there are a few
around, such as https://vpswala.
org. Typically, you get one CPU
core, 25GB of SSD storage, 1GB
of RAM and 1TB bandwidth. Will
Virtualmin work on this? The
minimum requirement is 256MB
but it grabs more RAM if you let
it. With only 1GB of RAM, the
Linux distribution needs to start
with few packages installed.
Here’s how to configure The Virtualmin login prompt (with
Virtualmin on a low-memory IP address hidden).
system; it boils down to switching things off.
To install Virtualmin, run Wget with this script:
$ wget https://software.virtualmin.com/gpl/scripts/virtualmin-
install.sh
Now run it with this command:
$ sudo sh virtualmin-install.sh
Ignore any error that mention fd0 – that’s the absent floppy drive!
After Virtualmin has installed, log in to the VPS IP on port 10000
and you should see the above login screen.
After logging in, you can configure things with a Post-Installation
Wizard to use less memory. Set it so that it doesn’t preload
Virtualmin libraries, doesn’t run an email domain lookup server, and
disable email virus scanning with ClamAV. If you don’t want MariaDB
or PostgreSQL database servers, they can be disabled here as well.
The Virtualmin and Webmin tab menus shown side by side. If you don’t see a module – for example, PostgreSQL – look at the
Unused Modules list under the Webmin menu. Look for PostgreSQL
a free VPS. So, let’s look at what you can do with your Database Server – there’s an Install Now button on its page.
brand-new server.
Lower your expectations! you a count and link to a page where you can update
The answer is not a lot because the lack of RAM is a one or more. Just click a button or two, and the update
big drawback. The main uses are installing websites, happens. If a reboot is needed, you’re also provided
setting up SSL certificates and what we really want with a Reboot Now button.
practising administration for when you move to a paid Virtualmin includes a decent file manager, too.
VPS. It gives a very good feel for what’s needed on a There’s no need to remote in to upload or edit files.
live server, and if you mess up, you can always restart The File menu enables you to create new folders or
and reinstall everything. files, and upload files from your computer. The Tools The Software
Package Update
Virtualmin provides a terminal so you can also menu lets you change ownership, permissions and screen, showing all
practise Linux commands on that as well. So, instead of attributes. Right-click on a selected file or files and you updates that are
using Virtualmin, you can level up your Linux fu doing can download, copy, cut or rename them. The image to be performed.
tasks such as adding users and
groups, and changing ownership by
hand if you wish. The web server
enables you to practise your PHP on a
live website as well.
If you want your website to access
a database, the Webmin Servers menu
lets you access MariaDB (on the
MySQL Database Server page) and
restart it if it’s not running. You can
then add databases, tables and so on.
Lazy updates
Anyone can do sudo apt update -y &&
sudo apt upgrade -y from a remote
terminal but Virtualmin also has you
covered. When there are updates
available, the main dashboard shows
xx.xx.xx.xx
vpsserver.local
vpsserver Before
xx.xx.xx.xx example123. you install
com Virtualmin, if
That provided access you plan to host
to both websites from the a website, you
should set up
home browser.
your domain
Virtualmin treats the
to point to the
virtual server’s websites VPS. Use the
slightly differently from domain name as
the main server website. the hostname
With virtual servers, you when you install
get more control, and it Virtualmin.
has the visitor tracking
software AWStats.
The System Information page provides handy details about your system’s current state. Each of the servers
has an extensive user
decide to move to another server, you can take all interface but you can edit the config files instead. If
three with you and install the private key and certificate you’re feeling adventurous, the Webmin Servers menu
on the new server. Also, you need the CSR when it lets you view or edit any of the various Apache config
comes time to renew the certificate after the 398 or files, including those for the virtual servers. This is
possibly 90-day period. That is free; you only pay for a where you can make changes – redirections, for
new certificate after four years. example. Before you do, spend time on the Webmin
Backup Configuration Files menu and make copies.
Creating virtual sites Something to bear in mind when you add
Web servers such as Apache can manage multiple Virtualmin to a Linux box: not only does it have
websites on the same IP address. This is done by the main user davidxyzer but it adds a user for the
setting up virtual servers in Virtualmin. A virtual server main site vpsserver and any virtual servers, such as
is an account in Virtualmin that includes a website, example123. On the Virtualmin tab, the first line below
email and FTP access all associated with a domain Virtualmin is a pull-down control showing the current
name. You can also create subservers. These are site and it lets you switch between them. You won’t see
secondary domain names set up within a virtual the pull-down until you have at least one virtual server.
server, with their own domain name and set of email Don’t get them mixed up! Even if you don’t
addresses and FTP accounts. Virtualmin is an amazing piece of software and it own a particular
So, if you have the domain fred.com, you set it up as simplifies administering a Linux server safely, but there domain, you can
a virtual server. Now, if you want primary.fred.com, you is quite a learning curve and the documentation is add it to your
set it up as a subserver of fred.com’s virtual server. adequate at best. Everything is there in the web hosts file with
When you set up a virtual server, you can have interface; you just have to find it. sudo nano /
Virtualmin set up DNS zones and an Apache website, Virtualmin includes extensive support for email, etc/hosts and
accept mail for the domain, complete with spam setting up accounts, anti-spam, Postfix mail server and your browser
will believe that
filtering, have its own Webmin login and even AWStats so on, but on a free VPS with limited disk space and
it is yours.
reporting for web traffic. These happen by default but RAM, managing email might not be its best use.
you can disable any or all.
When Virtualmin creates the
virtual server, it does a lot of things
in the background: it adds a virtual
site to Apache, configures DNS
zones, creates email and tries to
get a Let’s Encrypt certificate for
the new virtual domain. The domain
example123.com was added as a
virtual server but Virtualmin wasn’t
successful in getting a certificate
from Let’s Encrypt due to not
owning that domain and so not
pointing the DNS to the VPS.
The IP was added to our home
computer hosts file and the domain
example123.com. Here is /etc/
hosts with IP addresses masked
to protect the innocent: Provide the relevant details and Virtualmin can generate a CSR and install an SSL certificate for you.
STEAM DECK
Credit: https://store.steampowered.com/steamdeck/
CryoUtilities app. Enter your password when prompted. running game. Generally, it’s been shown that 4GB of
Don’t have a password? In Desktop Mode, open the VRAM is optimal, leaving a decent 12GB for the OS
application menu and select System > Konsole. Type and game. To adjust this value, power down the
passwd and select something simple as the characters Steam Deck. Hold the Volume Up button and press
are hidden. Press Enter and retype to confirm. the Power. Once the UEFI has loaded, select Setup
Generally, you can just stick to the Recommended Utility > Advanced > UMA Frame Buffer Size > 4GB.
Settings and you’ll bank the speed improvements. For Select Save and Exit.
specific games, you might want to tweak some of the Finally, one last quick tweak you can apply is to
settings but it’s unlikely you’ll improve performance lock the frame rate to 40fps. “But surely 60fps is
beyond the supplied tweaks. So, what’s it doing? best!” you protest. Au contraire – due to the reduced
Firstly, it pares back the Deck’s swap file use and hardware of the Deck, it’s often impractical to ever get
optimises its memory policies to avoid stutters. It also near that 60fps figure and an erratic frame rate can
advises you to tweak VRAM, which we look at below. cause input lag and pointless strain on the battery life.
To kick off, it massively reduces the tendency of the While 40fps may seem closer to 30fps, that’s
Deck’s kernel to use the swap file, until it absolutely actually not the case. A 60fps game refreshes every
needs to, and also reduces wear on the SSD. So, rather 16.7ms, while a 30fps game refreshes every 33.3ms,
than constantly copying memory to disk, it only does and a 40fps game refreshes every 25ms. The 40fps
so when it’s actually running low on physical memory. It level is precisely in the middle of 30fps and 60fps.
also greatly increases the size of the swap file as the This results in lower input lag, smoother visuals and
Giving games
default one is rather small. smoother screen updates. more VRAM helps
An optimisation to the virtual memory system To set the Framerate Limit in gaming mode, press … them run faster.
enables Transparent Huge Pages and also enables > Performance > Refresh Rate > 40 and profit! Whatever next?
wider use of them by memory subsystems. This is less
intensive than using the standard 4K page chunk in the
MMU. Alongside this, the kernel as standard tries to
defragment memory during system down time, which
is great on desktops and servers, but there’s never a
‘good time’ while gaming, so this function is disabled.
More VRAM
The Steam Deck has a unified memory architecture,
which means the CPU and GPU use the same physical
memory. At boot, the UEFI allocates a reserved block
for just the GPU to use, though it can access more if
requested – however, the CPU also takes precedence.
By default, that’s 1GB of VRAM, which isn’t a lot
for modern games and leaves 15GB for the OS and
Global pruning of
unused items is
straightforward
but exercise
caution over
what’s deleted.
Bitwarden
A powerful, feature-packed open source password manager
with a free option and decent pricing, thinks Mike Jennings.
itwarden takes a different
IN BRIEF
There’s lots
B approach from most
password manager tools
to like about because it’s released under the open
Bitwarden. It source licence. But there’s more to
has rock-solid like about this app beyond it being
security options open source. Bitwarden promises
bolstered by easy, powerful security within
the app’s open minutes, unlimited password and
source status. device support, and secure,
It works with encrypted sharing.
virtually every Subscriptions begin for free, and
device and for many this is more than sufficient,
browser you because it supports an unlimited
could think number of passwords and device
of – so it’s syncing. Typically, rival companies’ With a full range of browser, platform and mobile support, all the boxes are ticked.
impressively free plans limit users to just one
versatile, too. active device, so this is a real selling point for Bitwarden. Bitwarden includes plenty of features to make
Sharing passwords is also included in the free plan, as is life easier. It automatically fills forms, quickly syncs
a password generator and support for email aliases. passwords and data across devices, and tests passwords
Upgrading to the $10 per year Premium plan adds for strength levels. Like many other apps, it monitors
emergency access, advanced 2FA, an authentication your password vault and lets you know if your
module and security reporting alongside priority information has been exposed in a security breach.
customer support. Paying customers can also send Bitwarden has announced that passkey support is
encrypted files, which is good for sharing sensitive coming in the summer of 2023, so it should be just
information like bank statements and bills. There is also around the corner. It works both ways, which means
a family option at $40 per year, and Team packages users will soon be able to set up a passkey for their
from $3 per member per month, with API access and Bitwarden account to skip the master password stage.
unlimited sharing. An Enterprise package bumps this to Most importantly, third-party sites that support passkeys
$5 per member per month but adds single sign on and can be added to the extension or app.
full admin controls. All of these can be self hosted, too. This is an active open source project, so there’s plenty
of support in the form of an online community, tutorials, a
Platform games knowledge base and forums. Every common feature has
Setup is a breeze and it happily imports LastPass, a well-written tutorial, and the user forums, while basic,
1Password, Firefox, Chrome, Edge and more config files. are active and helpful. You can even email the Bitwarden
It has superb platform support, too. There are Windows, developers for support via an online support portal, with
Mac OS and Linux desktop clients, and extensions for Premium subscribers getting priority. The only thing
every major browser, such as Chrome, Safari, Firefox and missing is phone support – that would have been a
Edge, alongside more obscure options, such as Vivaldi, welcome addition, especially for business customers.
Brave, Tor and Opera. For mobile users, the iOS app is
accompanied by a Watch OS app for Apple Watches, and
Android users are also catered for. Bitwarden supports
VERDICT
command-line use and can be accessed on the web. DEVELOPER: Bitwarden
Bitwarden has a sleek, straightforward interface that WEB: www.bitwarden.com
enables you to easily search and access your passwords PRICE: Free or $10 per year
and secure data. It’s not as slick-looking as some other
tools, but the app’s functionality is more important. FEATURES 9/10 EASE OF USE 9/10
While there are desktop clients for viewing or editing PERFORMANCE 9/10 VALUE 9/10
credentials, and checking other account information,
most people rarely use them in favour of the extensions One of the top password managers around, Bitwarden is
CREDIT: Bitwarden
that serve the password manager’s primary function: to secure, feature-packed and open source, and has support
automatically fill out login details and capture new ones. for mobile devices.
Adding a new item is as easy as filling in a simple form,
and you can attach notes and custom fields to each Rating 9/10
entry for total personalisation.
ExpressVPN
Looking behind the hype machine, Mike Williams wonders
whether this is as good as it sounds?
xpressVPN has ramped up its investment in
IN BRIEF
This is a top-
E third-party audits over the past year, and the
results are spectacular. While other providers
quality VPN that expect you to be impressed by a single app audit from
exceeds our years ago, ExpressVPN released the results of 11 audits
expectations in 2022 alone.
in everything Another recent highlight is Keys, ExpressVPN’s highly
from platform configurable secure password manager that comes free
coverage and with your subscription. Significant new features include
privacy, to support for saving credit card details and secure notes,
ease of use, and even importing credentials to Chrome. This is
unblocking excellent news, but Keys is being rolled out gradually, and No matter your requirements, ExpressVPN delivers secure connections.
abilities and you may not have access to it yet on your device.
excellent Elsewhere, ExpressVPN has released Aircove, a some did better. Private Internet Access, Proton VPN
customer powerful Cure53-audited Wi-Fi 6 router with the and Windscribe all beat 300Mb/s, and Mullvad soared to
support. More company’s router app built-in. Set this up at home and an exceptional 500Mb/s.
expensive than all your devices can use ExpressVPN, without having to The real star is ExpressVPN’s Lightway protocol,
most, but you install apps or worrying about device connection limits. though, which accelerated its average download speeds
can see why. The company offers a vast network of more than to between 720Mb/s and 750Mb/s – a significant jump
3,000 servers across 160 cities in 94 countries. Europe from our previous tests, which clocked in at 560Mb/s.
and the US have the best coverage, but ExpressVPN also Unlike most of the competition, ExpressVPN doesn’t
has many locations in Asia and several countries that just make vague claims about its unblocking abilities.
rarely appear elsewhere. There are 26 Asia-Pacific The company publicly specifies which platforms are
countries alone; by comparison, Mozilla VPN only has supported: Netflix, BBC iPlayer, Amazon Prime, Disney
around 30 countries in its entire network. Plus, Google, Wikipedia, YouTube and others. It’s good to
see a provider being upfront about what it claims to do.
Shields up! Support is wide and full, covering Linux, Windows,
ExpressVPN’s privacy protection begins with its choice Mac OS, Android, iOS, routers, Chromebook and Kindle,
of highly secure protocols (OpenVPN and its own open with Chrome and Firefox extensions that provide direct
source Lightway), with industrial-strength encryption to control from your browser.
shield your data from even the best-equipped attacker. ExpressVPN’s support site gets off to a good start
ExpressVPN also runs its own private, zero- with its list of troubleshooting guides. Most articles are
knowledge, 256-bit encrypted DNS on every server. This well written and deliver in all the key areas. The setup
prevents data about your online activities leaking out of articles are even more impressive. And this isn’t just
the VPN tunnel, keeping you safe from every angle. We about Windows – it covers Linux, iOS, Android, Mac,
put the mobile and desktop apps through the wringer, Chromebooks, Smart TVs, routers and anything else you
using multiple leak-testing websites, and couldn’t find can think of. The chat support was well above average,
any trace of DNS or traffic leaks. too, with agents spending a long time patiently walking
Check out the typical VPN website and you usually us through some well-chosen diagnostic steps.
find ‘no logging’ claims prominently displayed, but often
behind that there is a privacy policy that either gives you
very little detail on specifics or reveals that the company
VERDICT
does log some of your information after all. DEVELOPER: ExpressVPN
ExpressVPN does things differently. Out goes the WEB: www.expressvpn.com
usual fact-free ‘zero logs’ boasting, in comes a clearly PRICE: From £5.53 per month
written Policy Towards Logs document, which explains
precisely what ExpressVPN collects, what it doesn’t, why FEATURES 9/10 EASE OF USE 9/10
the service works this way, and what it means for you. PERFORMANCE 9/10 VALUE 8/10
Speed is an important factor when choosing a VPN,
and we run intensive tests to see what a service is A huge network, plus it’s fast, secure, unblocks Netflix and
capable of. While ExpressVPN offers some fantastic just about everything else, supports torrents, has no serious
speeds, it’s by no means the fastest VPN. Its peak logging, offers apps for everything, and is easy to use.
OpenVPN speeds were reasonable at 280Mb/s. That
outperforms VyprVPN (100Mb/s), Surfshark (130Mb/s), Rating 9/10
IPVanish (225Mb/s) and NordVPN (240Mb/s), although
Next-gen Wi-Fi
Another new wireless technology, already? Darien Graham-Smith
looks ahead to the seventh generation of the IEEE networking standard.
f you’re not ready for Wi-Fi 7, that’s and technologies are already firmly defined, allowing
Moving from binary modulation to quad modulation, then adding amplitude modulation takes us from encoding a single binary digit to four binary digits and a total of 16-QAM.
Wireless networks use radio You can see a traditionally a polar chart, you’ll see this (above), we have two bits
waves to transmit digital drawn sine wave with some gives a huge margin of error, per quadrant, enabling us to
data. How quickly the waves numbered dots on it (above making it very robust, and it’s encode four bits (16 decimal)
oscillate – 2.4GHz, 5GHz or left). Alongside this is a polar the base modulation scheme per wavelength frame, but
6GHz – underlines the overall coordinate chart (a circular for 802.11a/g/n/ac. with the margin of error now
speed. You add channels, plot) representation of the The next step is to say a quarter of the size. This is
which are blocks of same sine wave. This plots a why not encode a number for called 16-QAM, and if you
wavelengths within those full cycle of the wavelength every 90 degrees of a phase think this is impressive,
frequency ranges. But around the 360 degrees of a shift? This is Quadrature 802.11a supported 64-QAM
how does digital data get circle, and you can see where Phase Shift Keying (QPSK) back in 1999, and 802.11ac
encoded on to radio waves? the path tracks through. and it lets you encode two supports 256-QAM. QAM is a
It takes the form of a type Let’s send some data: if bits and twice the amount of sliding system; as noise in
of modulation – a system you receive a waveform of data in the same amount of the signal increases, the
where the waveform is 0 to 180 degrees, that’s a 0, wavelength, but halves the router will fall back from
altered in a way so the but if it’s shifted to 180 to margin of error. 256-QAM to 64-QAM, then
data can be retrieved at the 360 degrees, it’s a 1. What This is where QAM steps 16-QAM, 4-QAM (QPSK) and
receiving end. The industry we’ve just invented is Binary in, which modulates not eventually BPSK, reducing
uses Quadrature Amplitude Phase Shift Keying (BPSK): just the phase but also the the data rate but increasing
Modulation (QAM) – yay, we shift the phase 180 degrees amplitude (size) of the wave. reliability. Wi-Fi 7 will boost
know some of those words! and you change the value. On In the 16-QAM polar diagram this to 4,096-QAM!
order QAM – quadrature amplitude modulation. This is meaning that the same radio patterns that used to
a technique used to encode data in a radio signal by convey eight or 10 bits of data can now carry 12.
adjusting the amplitude and phase of a pair of carrier Wi-Fi 7 also brings upgraded MIMO capabilities,
waves. Different combinations create different wave enabling devices to communicate using up to 16
patterns, used to represent different binary values. antennae at once – twice as many as Wi-Fi 6. In
Since the radio waves themselves are analogue, the practice, we doubt you’ll see a 16x16 MIMO connection.
number of values that can be represented is effectively Multiplexing pushes up the cost and complexity of the
infinite – the only limitation is how precisely the radio design considerably, which is why consumer Wi-Fi 6
transceiver can modulate and decode the waves. Wi-Fi and 6E devices rarely go beyond 2x2 MIMO.
5 used a 256-QAM system, where each wave pattern
encoded eight bits of data, while Wi-Fi 6 increased this Double lanes
to 1,024-QAM, supporting 10 bits of data. The latest Wi-Fi 6 and 6E benefit from fat 160MHz channels,
Wi-Fi 7 standard further boosts this to 4K-QAM, twice as wide as those specified in the previous Wi-Fi 5
Jumping to
6GHz (actually
7GHz in the USA)
increases the
available channels,
and reduces
interference for
a total available
bandwidth of
33Gb/s – but not
to a single device.
standard. Wi-Fi 7 doubles this again, with the maximum at the forthcoming World Radiocommunications
supported channel size going up to 320MHz. That Conference in November.
increases the nominal data rate from 1.2Gbits/sec to To get the best performance from these ultra-wide
2.4Gbits/sec per stream. channels, Wi-Fi 7 uses preamble puncturing, which
This benefit doesn’t apply on every radio band. allows the router to selectively avoid transmitting on
There simply isn’t enough contiguous spectrum specific frequencies within the 320MHz channel where
available within the 2.4GHz or 5GHz frequency ranges interference is detected. This was optional in Wi-Fi 6,
to accommodate such an enormous data channel. but on next-gen networks it’ll be de rigueur.
However, the 6GHz band (as licensed in Europe)
offers a broad frequency range, stretching from Multi-band madness
5.955GHz to 6.415GHz. Wi-Fi 6E can only use a single We’ve mentioned that Wi-Fi 7 devices can use MIMO
160MHz chunk of that spectrum, but with Wi-Fi 7, to communicate across 16 antennae at once. However,
there’s enough space for a full-width 320MHz channel that only works on a single radio band. Wi-Fi 7 also
– plus a second, non-overlapping 160MHz channel introduces a new feature called Multi-Link Operation,
alongside it, should you want to run a second network. or MLO. This means devices can establish multiple
In the United States, the available frequencies go all simultaneous connections to the router across
the way up to 7.115GHz, allowing three 320MHz combinations of the 2.4GHz, 5GHz and 6GHz ranges.
This is how
Netgear envisages
channels to coexist without interference, and Ofcom It’s a revolutionary enhancement. Multiple radio
us all using its is currently considering whether to permit a similar bands have been supported since 802.11n, but until
Nighthawk RS700. expansion in the UK. An announcement is expected now, each device has had to connect to the router on a
single nominated band. The ability to aggregate two or
three links together enables bandwidth to be multiplied
up at a stroke.
In addition to increasing throughput, Multi-Link
Operation can provide more reliable wireless
connections; using traffic analysis and QoS rules, the
router can spot interference, calculate priorities, and
decide which frequencies to use for communicating
with different clients.
Gigabit slow
Most people’s wireless networks can already go faster
than their internet connection. There’s nothing wrong
with that – if it were the other way round, you’d be
paying your ISP for bandwidth you couldn’t use. But
I WANT MY WI-FI 7!
As with all Wi-Fi standards, US RRP is $699.99, which and BE550 variants, plus $1,199 for two units. As
Wi-Fi 7 devices can connect will probably translate to a a gamer-focused Archer with the Archer, there are
to older networks, but if you similar number of UK pounds GE800, but pricing for these cheaper alternatives – the
want the best performance, in the UK. hasn’t yet been revealed. BE65 and BE85 are rated at
you need a matching router – If that doesn’t appeal, On the mesh front, the star 11Gbits/sec and 22Gbits/sec
and the first Wi-Fi 7 models TP-Link has announced no of the show is the TP-Link respectively, with pricing
on the market are going to fewer than four Wi-Fi 7 Deco BE95, which offers and release dates yet to
be pretty pricey. routers, alongside three a massive total bandwidth be confirmed.
One example is Netgear’s mesh systems. The lead of 33Gbits/sec, including Finally, Asus has also
Nighthawk RS700, due to product is the Archer BE900, twin 6GHz radios rated at thrown its hat into the ring,
launch late September 2023. an imposing device that 11.5Gbits/sec each. Without with two initial Wi-Fi 7
This distinctive upright router matches the Netgear’s a doubt, it’ll be far faster than offerings. The RT-BE96U
promises a total throughput $699.99 price tag but boasts any mesh we’ve previously matches the Netgear’s
of up to 19Gbits/sec, with a cool touchscreen and a tested – the current 19Gbits/sec speed rating and
4x4 MIMO across the faster all-bands speed rating titleholder is the Wi-Fi 6E- its twin 10GbE ports, while
2.4GHz, 5GHz and 6GHz of 24Gbits/sec – achieved by powered Netgear Orbi the gaming-oriented ROG
radio bands. It also includes adding a second 5GHz radio, RBK963E, which offers an Rapture GT-BE98 adds a
10Gbits/sec Ethernet ports which means previous- aggregate connection speed second 5GHz radio, similar to
for both WAN and LAN ports, generation devices won’t of 10.8Gbits/sec across its the TP-Link Archer BE900.
to support next-generation interfere with full-bandwidth four radios. It’s also one of Currently there’s no release
internet connections and MLO connections. There are the most expensive systems date or pricing for these
high-speed wired clients. The also cheaper tri-band BE800 we’ve seen, launching at routers, but watch this space.
you might well be wondering, therefore, what the point depends enormously on the specific environment.
is in introducing even faster wireless. What we can say is that a typical latency of around
One answer is that internet connections keep on 10ms has been suggested for Wi-Fi 7, potentially
getting faster. In the labs, we’ve found that the latest falling as low as 1ms with the right hardware and a
Wi-Fi 6E routers transfer data at between 500 and strong signal. To put that into context, Nvidia’s cloud-
800Mbits/sec at short range, falling to 250Mbits/sec based GeForce NOW gaming service recommends a
in other rooms. In the next few years, as gigabit and latency of 40ms or less for an optimal experience –
multi-gigabit broadband lines become cheaper and suggesting that any lag from your Wi-Fi 7 router should
more widely available, a growing number of households be unnoticeable. Though the latency of your internet
will find that a Wi-Fi 6 router holds them back. connection might be another story, of course…
Remember, too, that not all networking involves The TP-Link
the internet. Our homes contain a growing number of Wi-Fi 7 is already in the building Archer BE900
smart appliances, which are continually talking to hubs If you’re eager to get your mitts on a device with a offers 10Gb/s
Ethernet linked
and to one another. And while we’re storing more and shiny Wi-Fi 7 logo, you don’t need to wait until next
to 24Gb/s Wi-Fi 7
more data in the cloud, domestic NAS systems remain year. Broadcom has been shipping fully featured Wi-Fi for maximum
CREDIT: TP-link, Qualcomm, Netgear
popular for convenient shared storage and bulk 7 chipsets to device manufacturers since April 2022, throughput.
archival. The huge bandwidth of Wi-Fi 7 can keep and both Qualcomm and MediaTek are now offering
all this data flowing swiftly. their own Wi-Fi 7 solutions.
There’s another factor to consider, too. Wi-Fi 7 In fact, two fast-moving Chinese manufacturers
doesn’t aim only for faster transfers, but also for lower are already offering Wi-Fi 7-enabled smartphones,
latency. That means it’s ready for the incoming age of namely the OnePlus 11 5G and the Xiaomi 13 Pro.
game streaming and extended reality – applications Other flagship Android phones such as the Samsung
that demand a near-instant response to user input. Galaxy and Google Pixel series will likely follow suit in
It’s hard to put a figure on the benefit compared to their next generations. iPhone fans may need to wait
earlier Wi-Fi standards, because real-world latency a little longer, as Apple tends to lag behind the curve
when it comes to Wi-Fi – the iPhone 15
is expected to ship with Wi-Fi 6E.
It’s a similar situation with
computers. 802.11be expansion cards
will probably appear in the second half
2020: Wi-Fi 6E (802.11ax)
More a variant than a true standard, Wi-Fi 6E is a version of of 2023, which means custom-built
Wi-Fi 6 that adds support for connections in the 6GHz radio PCs with Wi-Fi 7 are likely only a
band. Otherwise the encoding and transmission systems are matter of months away – and existing
identical to those in Wi-Fi 6 – but reduced interference in the systems with an accessible PCIe or
higher frequency range means that 6E devices often achieve M.2 2230 slot should be easily
better real-world performance than a standard Wi-Fi 6 upgradable. Intel says the new Keep an eye out
connection on the 5GHz band. networking tech will be standard for the new Wi-Fi
on Core-powered PCs in 2024. 7 certification.
Mayank Sharma
will offer to be gatekeeper if
OnionShare Bulky Sweeper KDiskMark Min they make a Star Wars/Star
Trek crossover movie, and
OnionMedia X Pwall Nostlan DevilutionX turn people away so they do
FILE SHARING
OnionShare
Version: 2.6
Web: https://onionshare.org
Instead of working
FILE RENAMER with characters,
Bulky
advanced users
can use Bulky to
find and replace
names with regular
expressions.
Sweeper
privacy without
much effort,
especially on
systems that are
shared between
multiple users.
Version: 23.04.3
Web: https://apps.kde.org/sweeper
KDiskMark
fire it up from the
CLI with superuser
privileges to get
more accurate
results.
WEB BROWSER
Min
Version: 1.28.1
Web: https://minbrowser.org
OnionMedia X
Version: 2.0.0.1 Web: https://github.
com/onionware-github/OnionMedia-X
PHOTO MANAGER
Pwall
Version: 2.1-4 Web: https://github.
com/ltiber/pwall
Nostlan
Version: 2.2 Web: https://quinton-
ashley.github.io/nostlan-web/
RPG
DevilutionX
Version: 1.5.0 Web: https://github.com/
diasurgical/devilutionX
Paper Clip
PDF METADATA EDITOR doesn’t have
Paper Clip
any configurable
parameters, but
you can ask it
to open the PDF
in an external
PDF viewer.
Version: 3.2 Web: https://github.com/
Diego-Ivan/Paper-Clip
Depending on your
MENU EDITOR distro, changes
Menu Editor
made by Main
Menu might not
show up until you
log out and log
back in.
Version: 1.0
Web: https://codeberg.org/libre-
menu-editor/libre-menu-editor
s its name implies, Menu Editor enables you to
Text adventures:
page 62!
INTRODUCING IMAGES
The text adventure genre is such that Add these lines to the top of the if os.path.exists(image_path):
the illusion is rather ruined by images. Python script in which you want images: display_image(image_path)
They can be a welcome distraction but from PIL import Image else:
if you don’t have them for every area, import os print(“Image file not found.”)
players may complain they feel cheated. You can now create a procedure to Make sure to update image_path to
Unlike text, images also don’t always load images: the actual path for your image. If you
appear in the same way when run on def display_image(file_path): plan to do this on a room by room basis,
different systems. try: you may want to add a new image_path
This is why we haven’t used images in img = Image.open(file_path) attribute to the Room class, similar
this series of tutorials but, as Bob Ross img.show() to how we streamlined the sound
would say, this is “your world”, so if you except Exception as e: procedure (see box, page 92).
want pictures, you should have them. print(“Error:”, e) Note that these commands will
To get started, you need to install the display images only in your player’s
powerful Pillow image-processing library image_path = “/home/yourusername/ default image viewer. If you actually
via the terminal: image.jpg” want to display them in-terminal, you
$ sudo apt-get install python3-pil probably need a specialised emulator.
STREAMLINING SOUND
In this tutorial we cover how to create procedures to insert the You can now replace individual sound procedures, such as
sounds of weapons during combat. While this might make for play_sword_clang, with a more generic one:
a more immersive experience, it’s not very efficient because def play_player_weapon_sound():
it requires you to create a specific procedure for every single sound_file_path = player.weapon.sound_path
weapon. If you want to streamline your sound process, add a playerweapon_sound = pygame.mixer.Sound(sound_file_
new sound_path attribute to the Weapon class: path)
class Weapon(Item): playerweapon_sound.play()
def __init__(self, name, itemdesc, updroomdesc, portable, return
revealsitem, usedin, usedesc, removesroomitem, Finally, you need to modify the fight procedure to play the
addsroomitem, useroomdesc, disposable, damage, sound_path): correct sound for the weapon the player is currently wielding
super().__init__(name, itemdesc, updroomdesc, portable, each time they use it:
revealsitem, usedin, usedesc, removesroomitem, while enemy.alive and player.hp > 0:
addsroomitem, useroomdesc, disposable) player_damage = player.weapon.damage
self.damage = damage enemy.hp -= player_damage
self.sound_path = sound_path play_player_weapon_sound()
You can now add the path to the sound file for each weapon: For convenience, you can download an example of this
sword = Weapon(“Sword”, “A sharp and sturdy sword.”, None, more efficient code from:
True, None, 0, “You swing the sword around with great skill.”, https://github.com/azuregate/lxfpythontextadventure/blob/
None, None, None, False, 2, “/home/nate/mu_code/sword.wav”) main/nextroomsoundscript2.py
sword_sound.play()
return
As you can see here, the path to the sound file
sword.wav (which you can also retrieve from Nate’s
GitHub repo) needs to be modified to make it work
with your game. Make sure the media file is in the same
folder as your Python script.
You can now modify the fight procedure to play
the sound:
while enemy.alive and player.hp > 0:
player_damage = player.weapon.damage
The Pygame library supports sound playback. Here the sword and enemy.hp -= player_damage
mace sounds can be called via separate procedures. You can find a play_player_weapon_sound()
more efficient implementation of sound in the box, below-left. typewriter_effect(f”\033[32mYou hit the {enemy.
name} with your {player.weapon.name}. It causes
bar at other times as well, such as during the {player_damage} damage.\033[0m”)
fight procedure. The example script also supports playback of a file
enemy_damage = enemy.weapon.damage mace.wav for whenever the enemy hits your player
player.hp -= enemy_damage during combat.
typewriter_effect(f”\033[31mThe {enemy.name} hits These effects work well for the example script but
you with its {enemy.weapon.name}. It causes {enemy_ aren’t the most efficient way to code, given you have to
damage} damage.\033[0m”) create and invoke a new procedure to play each sound
showhpbar() effect. See the Streamlining Sound box (opposite page)
As things stand, the HP bar is always displayed in for a more efficient implementation of this.
green. If you want to colour-code it depending on how
many hit points you have remaining, add the following: Further reading
if player.hp >4D By now, you’ll be well on your way to a visually stunning
Finally, change the last print command in the text adventure. In this tutorial, we’ve only made a few
showhpbar procedure to: small tweaks to sample scripts in order to encourage
print(hp_color + f”HP: [{bar}] {player.hp}/10 HP”) you to be creative.
You can download an example of this script that For instance, sound effects only currently play
shows the HP power bar in the player’s inventory and during combat, but you may want them to do so when
during combat from: https://github.com/azuregate/ players use stat items, which increase or decrease
lxfpythontextadventure/blob/main/ their health. Consider also colour-coding the various
testroomprogressbar1.py exits in the game to assign shades to each direction,
because this may make it easier to navigate.
Sounds and sorcery You also may want to experiment more with text
CREDIT: Stephen Roy (https://www.flickr.com/photos/nynyny/2545392976/in/photolist)
Although text adventures aren’t especially rich in effects, changing sizes and the way in which they’re
media, some, like Sherlock Holmes: The Riddle of the displayed. Although text adventures usually shy away Although we’re
Crown Jewels, put sound effects to good use, such as from full-blown images (see Introducing Images box, against images in
by playing a cacophony of discordant notes if Doctor page 91), you could consider using some ASCII art. text adventures in
general, there’s no
Watson tries to play Holmes’s Stradivarius violin. Once you’ve finished your game creation, please
reason you can’t
Sound is one of the many supported features in don’t hesitate to contact us at Linux Format to show include a helpful
Pygame – a collection of modules that, believe it or off your sprawling Python adventure. in-game map.
not, are specifically designed to help Python game
creators. To get started, make sure you have Pygame
installed by opening the terminal and running:
$ sudo apt install python3-pygame
Next, open your script and add the following line at
the start:
import pygame
Initialise Pygame by adding:
pygame.init()
If you take the time to download the example
script from https://github.com/azuregate/lxfpython
textadventure/blob/main/nextroomsoundscript1.py,
you’ll see that there is a dedicated procedure for
playing the sound of a sword each time the player
uses it in combat:
def play_sword_clang():
sound_file_path = “/home/nate/mu_code/sword.wav”
sword_sound = pygame.mixer.Sound(sound_file_path)
The other piece of code that was written for the The configuration
definition used
game is a config parser class. This will not be printed for levels can
here due to size constraints, but a small sample of the be seen here.
code can be seen in the screenshot (over the page). This level plays
Now we have finished defining the objects, let’s background music,
displays a specific
have a look at the main code, which is used to define a
background image,
lot of variables, determine what happens each time the defines some level
main program loop runs, and capture keypresses: descriptions and
import pygame has six rows of
import Constants bricks. Note how
each row can be of
from Ball import Ball
a different length.
...
pygame.init()
fullScreen = False
screenRes = (pygame.display.Info().current_w, pygame.
display.Info().current_h) laserTimeCounter = 0
screenWidth = pygame.display.Info().current_w / 2 frameCount = 0
screenHeight = pygame.display.Info().current_h - 100 gameScore = 0
if fullScreen == True: clock = pygame.time.Clock()
screenWidth, screenHeight = pygame.display.Info(). Next we create two Paddle objects and one Ball
current_w,pygame.display.Info().current_h object. We then create a sprite group to hold instances
frameRate = 60 of Ball objects and one for Paddle objects. Note the
size = (screenWidth, screenHeight) secondary ball group, which is used to hold Ball objects
if fullScreen == True: that are created after the beginning of the game. And
screen = pygame.display.set_mode(size, pygame. note how we don’t put the second Paddle object into
FULLSCREEN) the paddle group as this is only to be used when a ball
else: collides with a brick that has a certain power value. We
screen = pygame.display.set_mode(size) then create groups to store the Brick objects. The
gameTitle = “Paddle Smash” secondaryBrickGroup is used to store bricks that can
window = pygame.display be destroyed – bricks can be indestructible. Finally, we Learn more
window.set_caption(gameTitle) create a group to store any created laser bullets and about
ballRadius = (screenWidth * screenHeight) / 30000 we have some variables to store whether laser bullets decorators in
paddleWidth = screenWidth * screenHeight / 5000 should be created. We then initialise a frameCount Python at this
... variable, which we can use to determine regular time link: https://
levelConfigDir = “levels//” intervals. Finally, we initialise a variable for the realpython.
collisionPoints = 10 gameScore and add a clock to the game. com/primer-
on-python-
font = pygame.font.SysFont(None, int(screenHeight / In the code, we define some variables to store
decorators
20)) information about the configuration that we will
The first thing we do in this sample is import the
necessary libraries, we then initialise the Pygame
library and define some variables for the size of the EXTEND THE GAME
window we need to generate. Note how functionality
has been included to create a full-screen game While designing the data structures and classes within the game,
window. Next we create the window and set the title. care was taken to make it as extensible as possible. As can be seen
Then we define some variables to store things such from Constants.py, there is already the following extra functionality:
as the radius of the Ball objects, width of the Paddle more balls can be added, an additional paddle can be shown on the
objects, and locations of the level config files. Finally, screen, and the ball can obtain fireball power, enabling it to travel
we create a variable to score how many points each through bricks. It is also possible to grow and shrink the paddle(s),
brick collision is worth before defining a font to use for speed up or slow down the ball, and attach laser bullets to the
the high score and countdown line. paddle, allowing it to also destroy the bricks. These power values are
paddle = Paddle(paddleWidth, paddleHeight, 0, defined in the level config and any number can be added at one time.
screenHeight - 100, paddleSpeed) It is clearly documented in the code where the power values are
paddle2 = Paddle(paddleWidth, paddleHeight, actioned, both to initiate them as soon as the brick has been collided
screenWidth - 400, screenHeight - 100, paddleSpeed) with and when to destroy the extra functionality, when the power
ball = Ball(ballRadius, ballRadius, paddle.positionX + countdown has reached zero. Once the initiation and removal code
ballRadius / 2, paddle.positionY - ballRadius, ballSpeed) has been added, all that remains is to add the necessary constants
ballGroup = pygame.sprite.Group() to the Constants.py file.
ballGroup.add(ball) While testing following the implementation of the last power
secondaryBallGroup = pygame.sprite.Group() values, an issue was discovered: if two power values for the same
paddleGroup = pygame.sprite.Group() object are defined, the countdown is cancelled for the first and is
paddleGroup.add(paddle) added for the second power value only. For example, if an extra ball
brickGroup = pygame.sprite.Group() is added, closely followed by fireball power, the fireball power will
secondaryBrickGroup = pygame.sprite.Group() timeout after the countdown period, but the extra ball will not. This is
laserBulletGroup = pygame.sprite.Group() left as an exercise for you to remedy if this functionality is unwanted.
createLaserBullets = False
A small sample of usage of the q and Escape keys to quit the level, then
the level import
define what happens when the left or right arrow keys
parser can be
seen here. are pressed.
carryOn = True
while carryOn:
...
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_LEFT]:
if len(paddleGroup) == 1:
paddle.updatePosition(Constants.Left,
screenWidth)
else:
for paddleCounter in range(0,
len(paddleGroup)):
import. We then import information from all config files paddleObject = paddleGroup.sprites()
in the levels directory. This is then used by the menu [paddleCounter]
More can be system, to enable us to select the level we wish to play. if paddleCounter == 0:
learned about The next part of the code sample is the main loop for direction = Constants.Right
Pygame here: each level that is played. We describe this later in the else:
https://www. article, because it flows better if we switch the order. direction = Constants.Left
pygame.org/ Let’s define our menu system that we wish to paddleObject.updatePosition(direction,
news display on the screen: screenWidth)
def setLevel(name, positionInList, filePath, numbers): In this code sample, when the left arrow key is
global levelConfig pressed, we move a single paddle to the left. If there
levelConfig = levelConfigFileDict[filePath] are two paddles in the paddleGroup, we move one
menu = pygame_menu.Menu(‘Welcome’, to the left and the other to the right. Printed here is
screenWidth - 100, screenHeight - 100, the equivalent code for when the right arrow is
theme=pygame_menu.themes.THEME_BLUE) pressed, but this simply reverses the logic.
menu.add.text_input(‘Name: ‘, default=’John Doe’) carryOn = True
menu.add.selector(‘Difficulty: ‘, levelConfigMenuList, while carryOn:
onchange=setLevel) ...
menu.add.button(‘Play’, startLevel) for ballObject in ballGroup.sprites():
menu.add.button(‘Quit’, pygame_menu.events.EXIT) ballObject.updatePosition(screenWidth)
menu.mainloop(screen) if (ballObject.directionY == 1 and ballObject.
pygame.quit() positionY >= paddle.positionY):
In this code sample, we define a function that if ballObject.type == “secondary”:
is called when the menu selector object is used. ballObject.kill()
When the arrow keys are used to select the level, this elif ballObject.type == “primary”:
function is called, which updates a variable with the ballObject.positionX = paddle.positionX +
necessary configuration needed to play the level. Next, ballRadius / 2
we create a menu object, select the text to display, size ballObject.positionY = paddle.positionY -
of the menu and the colour theme to use. On the next ballRadius
lines, we define the menu objects to display and which numLives -= 1
functions to call when the menu objects are interacted print(“Lives:”, numLives)
with. Finally, we call the mainloop on our screen object # Secondary balls should
and call the quit method when the mainloop exits. be removed after the relevant countdown
When the Play option in the menu is selected, the if type(ballObject.
startLevel function is called. This contains a huge countdown) == type(int()):
amount of logic. Firstly, the configuration options are ballObject.clock.tick()
used to provide paths to the background image and ballObject.testClock()
music. These files are then loaded in and initialised as # Detect if any balls collide with the bricks
required. Next, the Row information is loaded from the brickCollidedWith = ballObject.
configuration object and the Brick objects are created. detectCollision(brickGroup)
This contains the number of collisions, power values if brickCollidedWith != None:
and position they need to be drawn. These objects are if ballObject.powerValue != Constants.Fireball:
added to the relevant Brick groups as well. Next, the ballObject.directionY *= -1
code runs within a while loop, while a number of brickCollidedWith.registerCollision()
conditions are met. Should the countdown timer run # Add to the score whenever a collisions
out, lives drop to zero, or all destructible bricks be occurs
destroyed, the loop exits and the game is over. For gameScore += collisionPoints
each iteration of the loop, the screen is updated at 60 # Deal with the power ups / power downs.
frames per second. First, we paint the screen black Depending what the power value is, do different things
and, if a file is available, draw the background image. if brickCollidedWith.powerValue != 0 and
Next we use the event handling functionality to take brickCollidedWith.powerInstigated == False:
action when certain keypresses occur. We catch the # Extra ball
if brickCollidedWith.powerValue ==
Constants.ExtraBall: CREATE A COLLABORATIVE GAME
extraBall = Ball(ballRadius, ballRadius,
paddle.positionX + ballRadius/2, paddle.positionY - If you have had your interest piqued by this two-part series, please
ballRadius, ballSpeed, type=”secondary”, do take the code, copy it and make changes or improvements. We
countdown=powerTime, would be really pleased if improvements were made and pull
powerValue=brickCollidedWith.powerValue) requests sent that can be used to improve the game as it stands
ballGroup.add(extraBall) at time of publication. GitHub contains a wiki with the basics of
secondaryBallGroup.add(extraBall) information about the configuration file format and what each of the
brickCollidedWith.powerInstigated = True power values are used for. Some possible improvements would be
screen.blit(ballObject.image, to enable each object to have multiple power values attributed to it,
(ballObject.positionX, ballObject.positionY)) each with its own countdown timer. Another improvement would be
Within the while loop, we first iterate through each to use the menu system and a high score system to save the top
Ball in the ballGroup and call its updatePosition score each time a game is played. This would allow a leader board
function, which uses the speed, angle and other between friends who play on the same machine.
variables to determine where the ball should move on Thinking of bigger-picture additions, an online leader board would
the screen. Next, we need to determine what happens be an excellent addition for multiple people to compete against each
if a ball moves below the top of the paddle. In this other. Other interesting features to add would be extra power values,
situation, the original ball should be moved back to such as slowing down and speeding up the paddles, and reducing
the position of the paddle and the numLives variable the level countdown time, which adds another level of difficulty.
decremented by one. If the ball is generated by a
power value, it should be destroyed by calling its kill
function. Next we use the testClock function, which There are two pieces of functionality left. The first
determines whether the ball has been on the screen is that of Laser Bullets. If this functionality is enabled
for the correct period of time, before it is destroyed. by a brick, a variable is set to determine that the Laser
It is now important to call the detectCollision Bullets should be created. The bullets are then created
function with an argument that contains the group of and their position updates once every half second.
bricks. Returned by this function is the brick object Laser Bullets are created from the middle of the
that the ball has collided with. Once we know which Paddle objects. After the countdown period is over, the
brick has been collided with, we reverse the direction bullets are destroyed and no more are created. Finally,
of the ball (if the fireball power has not been instigated). the main game’s clock method has the tick function
We then call the registerCollision function, where the called and the carryOn variable is set to False when
brick has its alpha value changed or is destroyed. Next certain conditions are met. When this happens, the
the gameScore is incremented by the relevant points. loop exits and we are returned to the menu system.
The next stanza of code is used to handle the power We trust you’ve enjoyed learning about Pygame,
values assigned to bricks. In this sample, we can see inheritance and other Python features. It can be
what happens when the power value adds an extra ball disheartening to begin programming with dry exercises
to the screen. An extra Ball object is created, set to that cover things like taking user input and performing
start in the middle of the primary paddle, with the if statements to test logic and loops to do things like
type set to secondary, countdown variable set and summing numbers together. But these basic building
powerValue set to Constants.ExtraBall. The new ball blocks of coding are all used in writing this game, with
is then added to the relevant groups. This causes an Pygame abstracting away the really difficult parts, such
extra ball to be added to the screen with a countdown as drawing shapes or images on the screen. It is also
assigned to it. Finally, when a brick has been collided worth thinking about the programmers who wrote
with, we mark a variable as such so that the power these games years ago, when such helper libraries
can only be used once. Finally, the ball is drawn on the were not available, and coding was done in such a
screen, in the updated position with the blit function. controlled way that every single CPU cycle was used
For the rest of the article, follow the code on GitHub. efficiently, due to the lower resource available.
Within the while loop we now have a similar for loop to
iterate over the Paddles. This lets us determine if a ball In this code
sample, the
collides with it. When the ball collides, we reverse the contents of
Y direction, so it travels back up the screen again. We Constants.py can
also use the familiar testClock function to determine be seen, which
if secondary paddles should remain on the screen or provides a way to
easily reference
be destroyed. Finally, for each Paddle, we update its
constants with
position on the screen with the blit function. familiar names.
Next we iterate over each Brick in the group of
bricks and draw them on the screen. Then we generate
a font object and a string of text, which we display on
screen. This text is updated each time the loop runs
and is kept updated. The string contains the current
score, countdown time and number of remaining lives.
will be on
Quay House, The Ambury, Bath, BA1 1UA
Email contact@linuxformat.com
Tuesday 17th
EDITORIAL
Editor-in-chief Neil Mohr
October
Art editor Fraser McDermott
Production editor Katharine Davies
Group editor-in-chief Graham Barlow
CREDIT: Magictorch
or view our content at www.futurecontenthub.com
NEW SUBSCRIPTIONS & BACK ISSUES
Web www.magazinesdirect.com
UK 0330 333 1113 World +44 (0) 330 333 1113
EXISTING SUBSCRIPTIONS
Web www.mymagazine.co.uk
UK 0330 333 4333 World +44 (0) 330 333 4333
Subscription delays: Disruption remains within UK
and international delivery networks. Please allow up
OPEN SOURCE
to seven days before contacting us about a late
delivery to help@magazinesdirect.com
CIRCULATION
Newstrade & retail category director Ben Oakden
PRODUCTION AND DISTRIBUTION
Group head of production Mark Constance
Production manager Nola Cokely
Senior ad production manager Jo Crosby
Digital editions manager Jason Hudson
STREAMING
THE MANAGEMENT
Managing director technology group Paul Newman
Global head of design Rodney Dive
Commercial finance director Tania Brunning
Printed by Wyndeham Peterborough, Storey’s Bar
Road, Peterborough, Cambridgeshire, PE1 5YS
Distributed by Marketforce, 5 Churchill Place,
Canary Wharf, London, E14 5HU
www.marketforce.co.uk For enquiries email:
mfcommunications@futurenet.com
Linux® is the registered trademark of Linus Torvalds in the US and other countries.
beyond – we look at the innovative new options! Disclaimer All contents © 2023 Future Publishing Limited or published under
licence. All rights reserved. No part of this magazine may be used, stored,
transmitted or reproduced in any way without the prior written permission of the
publisher. Future Publishing Limited (company number 2008885) is registered in
England and Wales. Registered office: Quay House, The Ambury, Bath BA1 1UA. All
information contained in this publication is for information only and is, as far as we
WordPress is 20!
are aware, correct at the time of going to press. Future Publishing Limited cannot
accept any responsibility for errors or inaccuracies in such information. You are
advised to contact manufacturers and retailers directly with regard to the price of
products/services referred to in this publication. Apps and websites mentioned in
this publication are not under our control. We are not responsible for their contents
or any other changes or updates to them. This magazine is fully independent and
web server for sharing tasks, messages and more with it.
grant Future Publishing Limited and its licensees a licence to publish your
submission in whole or in part in any/all issues and/or editions of publications, in any
format published worldwide and on associated websites, social media channels
and associated products. Any material you submit is sent at your own risk and,
Now pushing 64, we look at where COBOL came from and what We are committed to only using magazine paper derived from
You can’t say we’re all doom and gloom around here as we revive
leading digital business. We reach more than 57 million
international consumers a month and create world-class
content and advertising solutions for passionate
the BBC Domesday Project and find out how to run it again. consumers online, on tablet & smartphone and in print.
Get fediversed!
Make Big Social quake in fear as you fire up your own social
sharing server and get connected to the growing fediverse.
Content of future issues subject to change. We might have been taken out by Big Social. Sounds fun, actually…