Linux Format - April 2024 UK
Linux Format - April 2024 UK
Les Pounder
I use 3D printers to print my own storage
solutions based upon Gridfinity. This
system enables the containers to stack,
slot and build into IKEA drawers, just like I
am building Lego. I fear that I may have
gone too far in my quest for ultimate storage density!
Subscribe
Michael Reed
& save!
I probably shouldn’t be telling you this, On digital and print:
but I hide my emergency five pound note
in the inside back of my phone case. I see page 16
live in the north of the UK, so in a genuine
emergency, it can be used to purchase a
pint of lager and another small drink.
HACKER’S
REVIEWS
TOOLKIT
After an extended break, alleged
GeForce RTX 4070 Super 19 hacker Jonni Bidwell emerges
Benchmarking superhero Jarred Walton
considers what’s so super about from the shadows to teach
mid-cycle updates. you the noble art and
keep you out of trouble.
See page 30!
CREDIT: Magictorch
ROUNDUP IN DEPTH
AV Linux MXE-23.1 21
Nate Drake puts his ear to the ground
to hear the latest version of AV Linux,
Enlightenment, rumbling into town.
Pi USER TUTORIALS
Revealing the shell behind the shell 90 OPENSCAD: Coding CAD models 66
In the last iteration of the shell, Ferenc Hungarian boy genius Tam Hanna
Deák managed to hide the password for helps you improve your 3D models
his home computer… with OpenSCAD and a 3D printer.
SOFTWARE
CONFERENCE OPINION
22.04 LTS but you need kernel 6.7 or newer CUDA has traditionally dominated AI give up their time, effort and
with IOMMU Shared Virtual Addressing (SVA) workloads, and online chatter from Linux livelihoods will dwindle as
enabled. The XRT base package must also be enthusiasts is sceptical that a single driver with they fall out of love with their
installed. The driver is available with full install limited hardware support will topple Nvidia’s AI projects. This would
instructions via https://github.com/amd/ market share any time soon. be a huge loss.
n early February, the Rust Foundation The Rust Foundation has also created its
Italo Vignoli
is a founder of LibreOffice and
I announced via its blog that Platinum
Member Google has donated $1
new Interop Initiative, to help smooth the
transition for businesses reliant on C++
the Document Foundation. million for the specific purpose of improving code. The initiative’s first task will be to draft
interoperability between Rust and C++. a roadmap to outline the scope of work yet to
LibreOffice 24.2 In a separate post, Lars Bergstrom, director be done to this end.
Community has of Android platform tools and libraries, and Because the Rust tooling and ecosystem
recently been released by chair of the Rust Foundation Board, pointed is already interoperable with Android,
the Document Foundation out that when Google first signed up in 2021, Google’s donation is likely to continue this
with the new calendar-based Rust was already being used extensively in fruitful partnership.
CREDIT: Pexels
numbering scheme (YY.M.x) Android and other Google products. Now he You can discover more at https://
that aims to help users keep describes the programming language as “one foundation.rust-lang.org/news/google-
their installation up to date. of the strongest tools we have to address contributes-1m-to-rust-foundation-to-
There are 166 contributors memory safety security issues”. support-c-rust-interop-initiative/.
to the new features: 57% of
code commits come from
the 50 developers employed
by three companies on the
TDF Advisory Board –
BUGS COMPILERS
replace GCC
eight developers at the
Document Foundation; and A critical security flaw can
23% from 108 volunteers.
An additional 159
compromise Secure Boot.
volunteers have committed Most distros are compiled
to localisation in 160 critical vulnerability, tracked as CVE-
with GCC. LLVM now
languages, representing
hundreds of people providing
A 2023-40547, has been found in Shim,
an open source bootloader developed offers a viable alternative.
translations. LibreOffice 24.2 by RedHat. Shim is designed to provide Secure
Community is available in Boot support for computers with UEFI. ost distros use the GCC compiler and
120 languages, more than
any other desktop software,
However, its parsing of HTTP responses allows
an attacker to create specially crafted HTTP
M GNU toolchain by default. Still, LLVM
(Low Level Virtual Machine) and Clang
making it available to over requests. These can cause an out-of-bounds now offer comparable performance on most
5.5 billion people worldwide write, potentially compromising a system by systems and have excellent C/C++ support.
CREDIT: Eclypsium, FOSDEM/Chimera Linux/Daniel Kolesa
in their native language. Plus, executing privileged code before the OS loads. This may why certain versions of Linux like
over 2.4 billion people speak According to a report by Eclypsium, this OpenMandriva are built using Clang. Chimera
one of these 120 languages attack can be carried out locally, remotely or Linux also relies on an LLVM toolchain.
as a second language. via the same network. Linux users are advised Chimera developer Daniel Kolesa has
LibreOffice offers the to update to the latest version of Shim, v15.8, recently delivered a presentation at FOSDEM
highest level of compatibility then update the UEFI Secure Boot DBX. 24 on building a Linux distro using LLVM, citing
in the office suite market, See https://eclypsium.com/category/blog/ its more modern compiler design, as well as the
from native support for the for more information. ease of building and bootstrapping. See https://
Open Document Format fosdem.org/2024/schedule/event/fosdem-
(ODF) to superior support for While Shim 2024-2555-building-a-linux-distro-with-llvm/.
was developed
MS Office files, as well as
by RedHat, this
filters for a wide range of
vulnerability
legacy document formats. affects all
It is available at Linux systems
www.libreoffice. that support
org/download. Secure Boot. The presentation discusses building a Linux distro using LLVM.
Distro watch
OPINION
KERNEL
What’s behind the free software sofa? TESTING
EASYOS 5.7
EasyOS claims to be a standalone Linux distro, though it uses many of
same technologies and package formats as Puppy Linux. This includes
supporting containerisation of apps out of the box. Like Puppy, the OS
can also load fully into RAM and can even disable write access to hard
drives while doing so. It uses four package managers (PKGget, SFSget, EasyOS is GUI- Helen Koike
Appi and Flappi), so you can install virtually any software. Find out more friendly, fast is a senior software engineer
at https://easyos.org and read our in-depth feature on page 46. and lightweight. at Collabora.
Linus Torvalds’s
recent critique of the
SYSLINUXOS 12.3 Xe driver’s compilation issues
SysLinuxOS is based on Debian 12 Bookworm. It’s primarily designed in Linux 6.8 made it clear:
for system administrators, so includes a number of networking tools, thorough testing is critical in
such as VPN software, remote clients and various browsers. These are Linux kernel development.
easily accessible via either the MATE or Gnome desktop environments Without the right tools,
(separate ISOs are available). New bundled apps include WoeUSB, trying to keep up with
Teams for Linux, Webex, GitHub Desktop, Wiregui and Timeshift. SysLinuxOS offers a upstream Linux to deliver
SysLinuxOS is a live distro but installation is supported via Calamares. complete networking stability, security and new
Read more at https://syslinuxos.com. environment. features is very challenging.
Released with Linux kernel
6.7, DRM-CI is a new GitLab-
CI pipeline that enables
KAOS 2024.01 developers to test their
KaOS is another independently developed distro, although its design graphics subsystem patches
is inspired by Arch Linux. It uses the Qt 6.6.1 and KDE Frameworks across numerous devices
5.249.0. KaOS now also incorporates the Plasma 6 desktop. The within the community’s
latest version also comes with an overhauled version of the OS’s own shared infrastructure. It
Midna theme. Given that it’s available as a pure Qt6/kf6 application, KaOS now includes runs on the Freedesktop
LibreOffice has now replaced Calligra as the default office suite. You Plasma 6 with infrastructure, allowing for
can learn more at https://kaosx.us. overhauled apps. efficient kernel compilation
and dispatches tests across
multiple devices available in
various community labs.
OPNSENSE 24.1 SAVVY SHARK With DRM-CI, developers
OPNSense is a FreeBSD-based OS designed specifically for firewalls can now enhance their
and routers. Main features include a forward caching proxy, traffic patch submission process
shaping, intrusion detection, 2FA and easy OpenVPN client setup. by running pipelines and
Savvy Shark’s new features include ports-based OpenSSL 3, Suricata 7, sharing the results link when
several MVC/API conversions, a new neighbour configuration option for submitting patches. This aids
ARP/NDP, core inclusion of the os-firewall and os-wireguard plugins, A specialist distro reviewers and maintainers in
CARP VHID tracking for OpenVPN/WireGuard, and a functional Kea designed for firewalls assessing the patch’s impact,
DHCPv4 server with HA support. See https://opnsense.org. and routers. with all the advantages of
pre-merge tests. However,
to conserve resources, it’s
essential to coordinate
SLACKEL 7.7 MATE with maintainers on their
Slackel is based on Slackware Linux and Salix. Both installation and preferred testing protocols.
live ISOs are available. The MATE edition currently uses v1.26.2 of the A GitLab-CI workflow
desktop environment and incorporates Linux kernel 6.6.11. The OS also presents a significant stride
includes the latest updates from Slackware’s Current tree, as well as in Linux kernel development.
salixtools (borrowed from Salix). The developers have also created Slackware users can It not only streamlines the
useful GUI utilities such as instonusb, which can create a live Slackel also benefit from testing process but fosters a
USB stick with persistent encryption file. See more at: www.slackel.gr. Slackel repositories. culture of shared resources
and community
collaboration.
Kernel Watch
OPINION
HOW TO
MILK IT
Jon Masters keeps up with all the latest happenings
in the Linux kernel, so you don’t have to.
inus Torvalds has announced Linux The Windows kernel – which is still often
Jon Masters is a kernel hacker
who’s been involved with Linux
L 6.8-rc4, the mid-point towards a
final 6.8 release, expected by mid-
referred to by the older moniker NT – does a
number of things very differently from how
for over 22 years. March. Among the features recently merged Linux does them. One of those is how it carries
is initial host support for Intel Trust Domain out synchronisation. This refers to APIs that
I play with a lot of Extensions (TDX) – its flavour of Confidential allow threads to wait for one another while
hardware at home. Compute (CoCo). This is similar to AMD’s some work is performed, and then signal a
Lately, my experiments have SEV (Secure Encrypted Virtualization), which wake-up event to those waiting threads later.
involved a lot of machine is also in the process of being upstreamed. Wine emulates all of this in userspace but
learning, the usual dosage recent applications “use these APIs more
of Arm, and some RISC-V Optimising Windows emulation strenuously, and the overhead … has become
for good measure. On the Elizabeth Figura has posted the second a bottleneck”.
latter front, I was briefly version of a complex patch series aimed The new code creates a driver that, when
optimistic this month that I loaded, exposes an API with
had finally found a usable the NT thread semantics but
RISC-V platform capable of “The performance improvement without disrupting the core
running a real-ish Linux with kernel functionality.
decent IO and memory. measured by frame rate is anything What does it mean for
The Milk-V Pioneer began from 21% to as much as 678%.” performance? Well, according
life as a Crowd Supply to Elizabeth, the performance
fundraiser that I bought into. at introducing Windows NT-like improvement measured by frame rate is
Over the holidays, the first synchronisation primitives to Linux for anything from 21% (in Metro 2033) to as much
boards began to ship. the purpose of optimising Windows as 678% (Dirt 3). As she puts it, for some games
Supporters were able to emulation. Those readers who enjoy there’s no improvement, “but for others frame
purchase either a bare gaming, or use a few Windows productivity rate improvements of 50 to 150 per cent are
board or a full system applications, will almost certainly have used not atypical”.
with 128GB RAM, decent either Wine or the commercially supported For those who want to learn more, the work
storage, graphics and so on variants from Codeweavers. Running was presented at the 2023 Linux Plumbers
in a case. I settled for the Windows applications is an important Conference. A recording is available, which
expensive enough $1,500 use case for many people, but one that you can watch here: www.youtube.com/
single-board option and did doesn’t come naturally to Linux. watch?v=NjU4nyWyhU8.
the installation myself. This
was not as easy as it should
have been, given that the ONGOING DEVELOPMENT
docs were more bare-bones
than the board. But I did get Assorted reports claim that Qualcomm’s difference. Academics and industry would
it to boot – all 64 cores of it. upcoming Snapdragon X Elite will have often describe both as having Big-O
They’re the main selling some great performance numbers. But complexity of log2(n), but there is a
point, even if they are fairly something else equally interesting doesn’t difference, and in the real world that is
underpowered cores overall. get as much attention: it will (apparently) measurable and can be improved.
The downsides are that run upstream Linux out of the box. This is Various Calls For Papers (CFPs) are
the firmware leaves much potentially great news for us Linux users beginning for tracks at microconferences
to be desired, the OS comes interested in the new chips. happening around the Open Source
without source (and no It’s interesting to see patches flowing Summit Europe and Linux Plumbers
upstream kernel), and the into Linux for fundamental algorithms, Conference, both taking place back to
CPUs implement the non- even after all these years of kernel back in mid-September. This year’s venue
standard pre-1.0 vector development. A recent example came for the events will be Vienna (the organisers
extension, meaning future from Kuan-Wei Chiu, who posted an alternate between the US and EU). If you’re
software is likely to break. optimised heapsort that is slightly more interested in meeting with lots of open
These negatives are a real efficient than the default used by bcachefs. source developers in one room, definitely
shame because the board It requires log2(n) comparisons versus check out the Linux Foundation and
has such potential. 2*log2(n), meaning a constant scale factor Plumbers websites (http://lpc.events).
Hopefully, things will
improve over time.
Q AI have
sign of the times
a number of PDF forms
could do this in LibreOffice, but it would
involve a lot of trial and error, trying to get
background in the other three quarters.
Not clever in my not so humble opinion!
that I need to complete and sign. The the position exactly right, and would not Is there a Linux program that can get
completing part is not a problem– Okular be easily reproducible. So use gs from rid of that useless background and leave
handles that. My issue is that the forms’ Ghostscript, like this: the movie I wanted? I can think of a long-
fields only accept text input, and typing $ gs -o offset-sig.pdf -sDEVICE=pdfwrite -c winded solution: use Lives to produce all
my name in the field is not acceptable; I “<< /PageOffset [172 156] >> the frames, then use a combination of
need an actual signature. I know I could setpagedevice” -f sig.pdf GIMP and ImageMagick to cut the movie
print out each form, sign it manually, then The offsets are in points, 1/72nd of an out of each frame. Not easy, to say the
scan it back to a PDF, but that is a lot of inch, so you could determine the offset least. Then use Lives again to produce
time and a not insignificant number of with a ruler or use trial and error. Honestly, the movie from the resulting frames.
trees lost for the number I have to deal we found the latter approach easier. Then Malcolm Lang
with each month. Is there a way I can add you use PDFtk’s stamp function to overlay
a scanned image of my signature to the
field of each? I’d prefer a command-line
the signature on the form:
$ pdftk form.pdf stamp offset-sig.pdf
A The tool for this job, as it is for so
many video-processing tasks, is
option so I can batch process the PDFs. output form-signed.pdf FFmpeg. Specifically, its crop filter, which
Peter Higgins View the resulting file and, if the does exactly what you are looking for. Its
signature is not correctly placed, run basic usage is like this:
A You can indeed do this. You need
three programs: LibreOffice and
gs again with tweaked offsets. If all
the forms have the same layout, once
$ ffmpeg -i video.mp4 -vf crop=w:h:x:y
cropped-video.mp4
Ghostscript, which are installed by default you have the offset, you can apply the The -vf option tells FFmpeg to apply
with most distros, and PDFtk. You may not signature to each one with a shell loop: the crop filter with the settings given. The
have PDFtk, but it will be in your distro’s $ for f in form*.pdf; do width and height of the cropped area are
repositories. The first step is to create a pdftk $f stamp offset-sig.pdf output ${f/. given as w and h, while x and y specify the
PDF with your signature, and the simplest pdf/-signed.pdf} coordinates of the top-left corner of the
way to do this effectively is to import the done cropped area. Now you just need to know
scanned image into a blank page in the values to plug in here. You could use
LibreOffice Writer, place it at the bottom-
left, then export that page as a PDF. Call it
Q Video nastiness
I use YouTube-dl to get movies
trial and error or you could extract a single
frame with:
sig.pdf. The next step is to use Ghostscript from YouTube and have noticed a few $ ffmpeg -ss 00:00:15 -i video.mp4
to turn that into another PDF with the people think it’s clever to put the movie -frames:v 1 output.png
signature in the position you need. You in one quarter of the window with a wavy This extracts a frame 15 seconds into
the video that you can load into GIMP or
Using LibreOffice another graphics program to work out the
to create a size and position of the area you want to
PDF with only
crop. Once you have the values, you may
your signature
is the first want to try them out on a short section
step in signing of the video, especially if the full movie
other PDFs. is long. The -t option, if given before the
input file, sets the duration read from
input. You can combine this with -ss to
convert from a position in the file.
The following crops a 10-second clip,
starting one minute into the video:
$ ffmpeg -ss 00:01:00 -t 10 -i video.mp4 -vf
crop=w:h:x:y cropped-video.mp4
Q Network mapping
I need a list of all the intranet IPs
grabbed by the multiple PCs in the house
– all on same network. Is there a terminal
command, Python 3 script or Bash script
Q Walletless KDE
Every time I start up my Kubuntu
right. Create a new wallet, set a password,
then go back to the settings windows and
something works on one distro but not
another, tell us. If you get an error message,
computer. I get an annoying window from make this new wallet the default. Then please tell us the exact message and
KDE Wallet, asking for my password. I you can delete the old wallet in the Wallet precisely what you did to invoke it.
input my user password but I am told this Manager. Once you are prompted for the If you have, or suspect, a hardware
is incorrect. However, my system appears password, the wallet remains accessible problem, let us know about the hardware.
to function normally after this. What is for the duration of your session, although Consider installing hardinfo or lshw.
going on and how can I get rid of this KDE you can enable the setting to close it These programs list the hardware on your
Wallet that appears to do nothing useful? when the screensaver activates – a machine, so send us their output. If you’re
Christopher Marsden wise precaution if anyone else may have unwilling, or unable, to install these, run the
physical access to your computer. following commands in a root terminal and
A KDE Wallet is a central storage for send us the system.txt file, too:
passwords and other sensitive
information that is used by various
Q Different shell
Why is it when I create a new user
uname -a > system.txt
lspci >> system.txt
programs. The wallet does not use the using Useradd and set a password on lspci -vv >> system.txt
same password as the login for your user, that account, I get a completely different
because boot priority could be switched to the new starting with X10 in the early ’90s. I hope you really
Linux drive. Pre-GPT drives, partition numbers were think about how well you support new Linux users and
limited, but even so, it’s just neater using separate adjust future content to help us out.
drives and you can even swap out the drives to a new Mike Schellenberger
machine, which I’ve done.
Neil says…
Beginner unfriendly Sorry to hear you’re having a hard time with Linux.
I’m a recently retired software developer who started Rather than try to fire answers at you, I’ll concede we Try your distro’s
dabbling in computers in the late ’70s; you know, like could do a better job of supporting new users. But as native app store
first, but Flatpaks
Z80s and 6502s, which would be Sinclairs and you’ve found, Linux is a diverse world and it’s near are gaining
Commodore VIC 20 processors. I thought I would now impossible to offer generic help to first-timers. The popularity.
take the time to get off the Windows platform, so good news is that most distros do provide excellent
found your magazine and articles on moving to Linux. forum help for specific issues, like using the app store.
It was amazingly easy to take an old laptop and get I think you do pick up a common issue here in
Linux going and use the pre-installed apps, but that’s that Windows users tend to approach Linux like it’s
where it ended. As I sit here tonight after a few hours Windows – with a driver-first mentality. I certainly did
of trying to get DigiKam going on the latest Mint, after and it can be like hitting a brick wall. SMB shares is a
reading about it in LXF307, I thought I would write to great topic, and I’ll certainly take a look at that, while
you about the terrible process of trying to move to we have just covered printing, and I hope to go over
Linux. This is just one little simple thing out of so more nuts-and-bolts topics. We have covered Flatpaks
many that Linux makes HORRIBLE, and I’ve found no and the like when they first appeared (LXF234) but it’s
‘beginners’ help in your magazine since the articles likely time for a revisit. Please do let us know if you’ve
on moving to Linux from Windows. got any ideas or topics that you would like covering.
One really big issue has been the so many ways
to install apps – no article about Flatpaks, Snaps, Way-hey-land there!
AppImages and other ways to install, which vary Can you explain the whole X11 versus Wayland thing
across Linux versions. I don’t want to see articles on to me and why it matters? What even are they? I know
five different Linux releases – why would any person they’re somehow related to desktop environments
want to constantly see so many distributions? You and window managers, but why should I care?
It’s just so much
can really only use one or two at a time. So, back to Dan Ingmar easier dropping
DigiKam, I got the AppImage and figured out what it is in a second
and got it to run. So, next I thought I would create a Neil says… install drive…
desktop shortcut – and that’s where the past couple This is something we’ll cover
of hours went and I still can’t get a desktop icon to down the line, but X11 effectively
run the app, or a second one to run the app with a underlies everything you see
command-line option to show the editor. In this day, on the desktop, as well as
it is unacceptable to me to have to use file manager keyboard and mouse input.
and terminal windows and commands to start an app. It’s ancient (40 years
There’s a couple of other big issues you do not talk old) and comes with
about. It’s terribly difficult to get a printer going. How so much baggage –
do you connect to Windows shares? How do I share like a print server
Linux folders with Windows? There are four million – that’s it’s too
articles covering tens of Linux distros and none work. unwieldy and
I’ve read all your magazines for about a year now has security issues.
and can say I have really learned little to nothing about Wayland is the newer
Linux from them. All I look forward to now is the Pi replacement project, with a
stuff. I’ve been into home automation for many years, modern design approach.
[email protected]
SUBSCRIBE ONLINE AT
www.magazinesdirect.com/LIN/C79L
Or call 0330 333 1113 and quote C79L
1,000s of DRM-free
PDF back issues and
articles! Get instant
access back to issue
66 (May 2005) with
DON’T MISS
! tutorials, interviews,
Includes 5 ye
ars
of Linux User
& features and reviews.
Dev elop
issues
er
At linuxformat.com
OUTSIDE
THE UK?
Turn to page
for more grea61
subscriber t
deals!
SAVE!
20%
SAVE!
22
%
PLUS!
Only Only
£16.75 every 3 months
£25.99 every 6 months
3 issues of Linux Format in print 6 issues of Linux Format in digital
every 3 months, saving 20%! every 6 months, saving 22%!
With gift! Without gift!
Terms and conditions: Offer closes 30th April 2024. Offer open to new print UK subscribers only. 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 subject to availability. **Access to Linux Format subs area only available
to www.magazinesdirect.com subscribers. 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.
AV Linux MXE-23.1
Nate Drake puts his ear to the ground to hear the latest
version of AV Linux, Enlightenment, rumbling into town.
V Linux is specifically
IN BRIEF
AV Linux
A designed for multimedia
content creators. As it’s
definitely offers based on Debian (in this case,
a comprehensive version 12 Bookworm), you could
suite of apps for use it for your daily driver, but the
multimedia distro’s main purpose is audio
production. The production and its kernel has been
manual and optimised towards this end. It will
welcome guide be supported until June 2028.
can help steer When reviewing distros, one of
you in, though the first things we do is check the
some details system requirements, to make sure
are missing. you are informed and to ensure it
will run well in our test machine.
We were able to discover the
SPECS fairly comprehensive AV Linux AV Linux now uses a customised version of the Enlightenment desktop. The icons on the right-
CPU: 2GHz Manual (https://bandshed.net/pdf/ hand side launch popular apps such as Audacity.
dual-core AVL-MXE-User-Manual.pdf) but it
Mem: 4GB makes no mention of this, so we’ve cobbled together users, so they have little choice but to download the
HDD: 5GB some specs based on what others have posted online. gigantic ISO and perform a fresh install of Enlightened.
Builds: i386, We also noted that the manual refers to a previous AV Linux MXE-23.1 uses version 6.6.9 of the
x86_64 version of AV Linux and was last updated in 2022. Liquorix Kernel, which is specifically designed with IRQ
We were eager to take AV Linux for a test spin, so threading for low latency compute in AV production.
booted the hefty 5.7GB in live mode in our virtual This makes it perfect for AV Linux’s stated purpose of
machine. This is where we discovered that the desktop helping users working with multimedia. Given that the
interface has been upgraded to Enlightenment, from Systemd debate isn’t going away (are you sure?–Ed),
which we assume the latest iteration of AV Linux gets you can choose between Systemd and Sysvinit. This
its code name. This is in contrast to previous versions, offers more leeway when handling system processes,
which used other desktops, such as LXDE and Xfce. but can only be actioned once the OS is installed.
Regarding apps, the OS is definitely the last word
Enlighten us in multimedia creation. For audio, aside from the
If you’ve used Enlightenment before, you’ll see that AV aforementioned Audacity, Ardour and Reaper 7,
Linux has adapted it to the OS’s needs; the right hand- Enlightened also bundles the EasyTag audio tag editor
side of the desktop contains a dedicated column of and music production software Harrison Mixbus 32C.
colourful icons for common apps such as Ardour, For video creation, beyond Blender you also benefit
Audacity, Avidemux, Blender, Openshot and Reaper 7. from a Swiss army knife of apps including the Kdenlive
Having criticised the piecemeal documentation, we video editor and OBS Studio, to name just a few.
were impressed by the welcome guide, which opened The OS also includes 1,000 FLOSS (Free/Libre Open
on first boot, offering helpful information such as links Source Software) and licensed demo audio plugins.
to the AVL-MXe and Enlightenment websites, as well
as tutorial videos and PipeWire settings.
Speaking of which, beneath the hood AV Linux
VERDICT
has also shifted to using PipeWire v1.0.0. Given the DEVELOPER: Glen MacArthur et al
move away from PulseAudio by other major Linux WEB: www.bandshed.net/avlinux
distros, this may not seem surprising. Still, PipeWire LICENCE: Unknown
solves an issue that had plagued Linux for years,
given that previously the OS had no fewer than three FEATURES 9/10 EASE OF USE 8/10
different ways to manage audio (PulseAudio, ALSA and PERFORMANCE 9/10 DOCUMENTATION 3/10
JACK). As PipeWire offers a universal method for apps
to establish media streams, it’s much better suited for The ultimate OS for multimedia production, with thousands
an OS designed for audio engineers. of apps and plugins, but the documentation could be clearer..
On the flip side, the shift to a new Debian base as
well as other changes, such as adopting PipeWire, Rating 7/10
means there’s no upgrade path for previous AV Linux
SDesk 2024.01.26
Nate Drake discovers the new kid on the block, SDesk, including shiny
toys such as Wayland and a brand new browser.
Desk is one of the newest
IN BRIEF
SDesk is very
S versions of Linux we’ve
ever reviewed. The current
new, so we edition (2024.01.26) is only the
didn’t expect second stable release since
great things. December 2023.
Still, we Still, it has some impressive
appreciated the credentials, given that its creator
quick setup via Steve is also the author of the Blue
the Calamares programming language. According
installer. We to the main website, Blue is “cross
also enjoyed platform, portable, memory safe,
playing with small and reliable, with a fast and
the new Swirl efficient compiler”, so we expected
web browser. great things from SDesk.
As we were browsing the site,
we were impressed to see that The SDesk installer uses Calamares for a quick and easy setup. You can also manually partition
SPECS there’s a basic setup guide, as well and encrypt your hard disks if you wish.
CPU: 1GHz as more information on Blue and
Mem: 4GB the Swirl browser. However, we struggled to find any the list of search suggestions remained stubbornly
HDD: 8GB information about SDesk’s system requirements. In the on the page, forcing us to reload the window.
Builds: x86_64 end, we used trial and error with our virtual machine After running Swirl through EFF’s Cover Your Tracks,
settings to land on the specs you can see on the left. we also can’t stand completely by its claim of offering
SDesk is based on Arch Linux and uses the Gnome privacy, given that the site showed our Swirl browser
desktop. Given that most major distros are only taking had a unique fingerprint. In fairness, this is probably
their first tentative steps with Wayland, we’re delighted true of most new browsers with limited market share.
to see that SDesk defaults to Wayland sessions. Swirl is also proprietary software, though you are
allowed to download free copies for personal use.
No live performance Of course, SDesk users are also free to install an
Booting up the 2GB ISO, there’s only an option to install alternative browser if they wish. This is handled by
SDesk rather than try it in live mode. Fortunately, setup Octopi, a GUI front-end for Pacman that can handle
is handled by the intuitive Calamares installer. updates and install new apps. Octopi can easily be
This is covered in the SDesk online documentation launched from the Dash. When we did so, we were first
but more experienced Linux users can carry out more prompted to run a system update. Upon second launch,
complex tasks, such as manual partitioning. There’s Octopi offered a list of installable apps, including the
also support for encrypting the system partition. Firefox browser.
The install process took less than three minutes, On launching Firefox, we noted that by default the
and upon checking, we found SDesk’s footprint was desktop maximises app windows and hides the Dash
surprisingly light, taking up less than 8GB. at the bottom. This is actually our preference, but no
The email client is Geary, while productivity is doubt it can be changed via Gnome settings.
managed by the latest LibreOffice version. The default
Dash also contains Gnome’s Music and Calendar.
The default web browser is Swirl, an original
VERDICT
creation of Steve’s, the main developer of SDesk. On DEVELOPER: Steve Studios
firing it up, we noted that it seems to be built with WEB: www.stevestudios.ca
privacy in mind, given that it uses the DuckDuckGo LICENCE: GPL/Commercial
search engine by default. It also has features for
blocking tracking cookies and naturally incorporates FEATURES 8/10 EASE OF USE 7/10
incognito mode. PERFORMANCE 7/10 DOCUMENTATION 4/10
The SDesk website describes Swirl as “lightweight,
powerful, fast and beautiful” and says it “excels in We’d have liked more detailed documentation, but it’s easy to
simplicity, privacy and smoothness” – a lot of nouns set up and has excellent features, such as Wayland support.
and adjectives, so we put Swirl through its paces.
Upon entering a search term in the address bar, we Rating 7/10
found that even after we selected the right website,
Michael Reed
can often be
Retrogaming distros
Michael Reed takes a look at five different systems that
can turn a computer into a retrogaming paradise.
HOW WE TESTED…
an Ethernet cable, but we computer into a full-on retrogaming system running a Linux distribution.
wanted to make sure that with an easy-to-use interface. RetroArch isn’t a distribution at all,
each system also worked Recalbox is a complete Linux distribution although it does power some of the
across Wi-Fi. in its own right, but it’s one with a primary retrogaming distributions. It can be installed
All of the systems used purpose of providing emulators of classic as standalone software on practically any
much the same type of machines, and it’s fronted by an easy-to-use, existing Linux desktop. It’s a good choice if
emulator cores, and they can retro-themed controller-driven interface. you’re a part-time gamer who needs to be
all handle emulating the Batocera covers similar ground and it, too, able to use your PC for day-to-day tasks. It’s
most common retro systems. offers a polished user interface. RetroPie also a good choice if you want to have total
is a distribution that was created to turn a customisation control.
Installation and
platform support
The supported platforms and
devices, and the ease of installation.
e’re looking for a good installation experience when
Controller and
network setup
These are essential configuration
options for most people.
ontroller setup in Lakka is a bit fiddly as it imposes a
Adding ROMs
Getting the precious content on to your vintage gaming box.
n retrogaming parlance, files that contain a complete The Batocera shared partition uses a convenient scheme
As a media centre
Can we take it to the movies
when we have to?
atocera and Recalbox have Kodi built in, and it’s
Built-in and
downloadable ROMs
Some systems come with free
content or can easily download it.
ome of these systems come with built-in games, a
The verdict
Retrogaming distros
atocera is quick to install and configure, and it’s
ALSO CONSIDER
SteamOS (https://store.steampowered.com/steamos) is the Retro Home (https://github.com/wimpysworld/retro-
OS that Valve created to turn PC hardware into a Steam- home) is a complete distro for running emulators, but it hasn’t
enabled gaming box. Unfortunately, the company has now been updated in a while and never really got very mature.
abandoned that original concept. It still maintains SteamOS, Attract-Mode (https://attractmode.org) is a pure front-end
but only for its Steam Deck handheld device. ChimeraOS with versions for Linux with hardware acceleration on the PC
(https://chimeraos.org) is a modern derivative of this OS, and and Raspberry Pi. Pegasus (https://pegasus-frontend.org) is
it would be possible to set up some retro system emulators also a front-end that runs on Linux. It has good presentation
on that, but it only supports AMD GPU equipped desktop PCs. and also allows the customisation of all screen elements.
t’s that time again when our We’ll get you using coding with Python and (OK, recompiling) the kernel – the very
enforce any kind of dress code. But we The term and culture (along with the word John the Ripper. And if that’s not enough,
do have a comprehensive guide that ‘foo’ that proliferates across programming we’ll finish with a foray into the mighty
will get you started with Kali Linux, the textbooks) originated at a model railway Metasploit, showing you how it can be
ultimate distro for security newbies and club at MIT. You might want to relive some used to craft payloads for attacking
penetration-testing professionals alike. of that unofficial tweaking spirit by hacking Android mobile devices. All aboard!
Python scanning
Kali’s smorgasbord of tooling can be overwhelming at
first, but we can leverage Python to simplify things.
ADVENTURE GAMES
$ cd ~/linux-source
$ wget https://cdn.kernel.org/pub/linux/kernel/
Logging keystrokes
Malicious hackers love keyloggers. See for yourself how X is
susceptible to them, and why Wayland defends against them.
Pen-testing at home
Security begins at home – also, you probably won’t get in trouble
for probing your own infrastructure.
Cracking passwords
Learn some good password hygiene and use John the Ripper
to compromise those who don’t bother.
eople and passwords were never a good mix. passwords ensure that even if two users have the
from its native OS, but is GPU-cracking). It does using rockyou.txt by hash.txt
(in the absence of some work in John the Ripper, creating a new user: Turns out that bob123
sort of disk encryption) though, so let’s have a $ sudo useradd bob wasn’t much of a strong
very easy to access go. We know the kali $ passwd bob password. Dang.
Accessing Android
Most web browsing and ever more general net usage is happening
on mobile devices. Let’s see if we can break into one.
o finish this journey, we’ll show you how connections. When it’s ready, the prompt
REAL-WORLD HACKING
It’s not exactly realistic people might just let Visit https://
to suppose anyone their guard down. cveshield.com
to see which
would really wave away Humans are generally vulnerabilities
all the installation the weakest link. They are currently
warnings and jump can be tricked, as above, being exploited
through all the hoops or financially obliged to in the wild.
we did to get the become an initial access
MainActivity app broker (IAB). IABs sell
installed. You might be credentials that may not
surprised, though. If even be particularly
rogue apps are suitably privileged, but allow due to vulnerabilities in sometimes exploit
disguised (as a cheat attackers an initial entry software, too [software code escapes early
for a mobile game, for to the target network. A that was written by (such as ShellShock
instance), or some sort of beach head from humans – ed]. Security or Log4j), and it
social engineering is which more advanced researchers work hard becomes a race against
used (pretending to attacks may be used. to find these and time for software to be
be the target’s angry It’s not all our fault, responsibly disclose patched and users to
boss or sysadmin), some though; attacks happen them to vendors. But update that software.
T Level students
such as the
Raspberry Pi
Foundation to help
boost people’s
maker skills.
MX Linux 23.1 Pi
Les Pounder spends all day tinkering with Raspberry Pis and
the latest MX Linux has got him in a spin.
hile Raspberry Pi OS is the
IN BRIEF
A Raspberry Pi
W official – and, for many, default –
OS, there are alternatives. MX
OS alternative Linux has released the MX 23.1 Raspberry
based on Pi OS respin for the Raspberry Pi 4, 400
Debian and the new flagship 5. We tested it on a
Bookworm, it Raspberry Pi 5 with 8GB of RAM, and
offers a refined after flashing a fast microSD card, we
desktop booted to a harsh-looking setup screen.
experience By harsh we mean small white text on a
but without black background. It made our eyes go a
the bloat. bit weird, but we managed to configure
Everything is our system ready for the first boot.
easy to find and On boot, we are greeted with a login
we can use the screen, then we get access to the glorious This clean and tidy desktop holds a plethora of great apps and performance for your Pi.
OS for watching MX Linux desktop. In the top-right we get
media, writing back system details (disk usage, CPU temp and mean? It means MX Linux has parity with Raspberry
code or memory usage) and the time and date. To the left is the Pi OS, and if you are using a Pi 4, you are good to go.
browsing main menu and system tray. From here we can quickly What about the camera? We can confidently state
the internet. open network settings, Bluetooth and so on, and via that the two cameras that we tested, a V1 and a new
Designed for the MX Linux in the bottom-left, access the main V3 with auto-focus, work. There is no preview window
the Raspberry menu. Connecting to our Wi-Fi was a simple task enabling us to frame a shot, but we can take pictures
Pi 4 and thanks to the Network Manager. Ethernet just worked, and video with the camera on a Raspberry Pi 4 and 5.
upwards, MX as it should. Bluetooth connections to mobile devices The Raspberry Pi 5 introduced a dedicated PCIe
Linux benefits were easy and we soon had files copying across. connection for devices such as NVMe SSDs. While
from the The main menu is split into categories, like many the official M.2 board is still on its way, others have
speed of the other OS choices. We have an MX Tools section, which made their own versions. Using Pimoroni’s NVMe
Raspberry Pi 5. contains useful tools for disk management and system Base, we installed MX Linux to an NVMe SSD and
config. Installing applications is a breeze – after all, we booted. It was much faster than microSD and well
are using a Debian Bookworm-based system – so there worth the extra effort.
are tools to install apps using the GUI and terminal. In general use, MX Linux feels snappy on microSD
As this respin is made for the Pi, we tested a few and NVMe. The OS is light, but feels complete. It could
key features: GPIO, camera and, for the Pi 5, NVMe be a viable alternative to Raspberry Pi OS. YouTube
SSDs. First, the GPIO. The Pi 5 altered how the GPIO video playback is decent; 1080p at 30fps is solid, with
works (using the RP1 chip as a bridge to the GPIO), some hardly noticeable dropped frames. At 60fps,
which means we can’t undertake a full test. Instead though, we get around 40% dropped frames, but
we opted to use GPIO Zero to control an LED. That that is common on all Raspberry Pi OS choices.
worked well, but the test couldn’t be replicated using We enjoyed our time with MX Linux. It looks great,
RPi.GPIO, a Python module that’s key to many runs well, even on the low-spec Pi 4, and it would make
Raspberry Pi HATs. The RPi.GPIO issue is a mixture of a great OS for general use and programming.
RP1 and new guidelines on externally managed Python
environments (PEP668). We ran the same tests on a Pi
4 and everything worked as it should. What does this
VERDICT
DEVELOPER: MX Linux
WEB: https://mxlinux.org
LICENCE: Mixed
NVMe Base Pi 5
Everyone, says Les Pounder, is based, especially regarding Pimoroni!
PCIe Gen 2 Read 416MB/s 469MB/s FEATURES 8/10 EASE OF USE 8/10
PCIe Gen 2 Write 380.9MB/s 383.2MB/s PERFORMANCE 9/10 VALUE 8/10
PCIe Gen 3 Read 876MB/s 863MB/s A solid performer and well worth the money but it is picky as
to which NVMe drives can be used, so do your homework
PCIe Gen 3 Write 761.9MB/s 719.1MB/s
before making the investment.
MicroSD Read 90.5MB/s
Pi PRANK BOX
CIRCUITPYTHON 101
Les was first introduced to CircuitPython (module) system eliminating the need audience. We’ve even got a Lego Minifig
by Nicholas Tollervey and Scott for complex setups. that runs CircuitPython
Shawcroft at PyCon in 2018. After CircuitPython’s greatest strength CircuitPython’s ease of use and ability
taking part in lessons with Kattni lies in its compatibility with a variety to be used in rapid prototyping makes it
Rembor, he was hooked. CircuitPython is of microcontroller and SBC boards, an excellent choice for those new to
an open source programming language offering a versatile platform for programming and electronics. Its
based on MicroPython. However, electronic projects. Initially developed beginner-friendly approach, combined
CircuitPython has been specifically for Adafruit’s own line of microcontroller with a thriving community and ample
designed for beginners and educators boards, such as the Feather and Circuit documentation, encourages creativity
to learn and experiment with electronics. Playground series, CircuitPython has and experimentation in the world of
It was created by Adafruit Industries in since expanded its support to a broader physical computing. CircuitPython has a
2017. CircuitPython simplifies the range of hardware. Popular boards such plethora of great tutorials, but Adafruit’s
process of programming as Arduino, Raspberry Pi and numerous own guides are hands down the best in
microcontrollers by employing a others now also run CircuitPython, the business. Head over to https://bit.ly/
straightforward syntax and library broadening its accessibility to a wide LXF313circuitpython to learn more.
OPENVPN
Credit: https://openvpn.net
BEYOND PRIVACY
VPNs have several additional benefits. encrypted data – that looks like static – Wi-Fi, but did you know that using
For example, ISPs throttle certain types and, as such, typically leaves it alone. a VPN can save you money when
of internet traffic, but this is less likely if And it doesn’t end there. Using a shopping or booking a holiday? It
the traffic is encrypted. A system called reputable VPN with up-to-date servers seems certain popular websites set
traffic shaping dictates how streaming minimises any speed loss, as well as prices based on your browser location.
and online gaming is deprioritised in proving beneficial in a number of Changing to an overseas VPN server
favour of business and banking data. scenarios. You probably know that a when shopping online can save a few
But traffic shaping cannot determine VPN is recommended for use on public quid and even pay for itself.
THE
PAW-FECT
DISTRO!
Nick Peers can hardly ‘container’ himself after taking the Puppy
Linux developer’s new distro for a good run off the lead.
hen Barry Kauler first launched Puppy serves as a test bed for concepts that could one day
that EasyOS is not Puppy Linux, and while there’s just three files: vmlinuz, initrd and easy.sfs), so when
similarities, there’s also a lot going on that’s unique to you write it to disk (including USB flash drive), EasyOS
EasyOS. The result is a lightweight, regularly updated is already in place. This enables you to test EasyOS in a
distro that runs beautifully on older hardware and real-world environment from the off without having to
SPECS
CPU: Any x86
64-bit CPU
Mem: 2GB
(more without
swap partition)
HDD: 16GB
or more
recommended
(USB flash
drives
supported)
EasyOS utilises
its own spin
on the JWM
desktop – a little
bit boxy, perhaps,
but lightweight
and so fast.
A ruff start
After writing to disk using dd or a similar application It doesn’t take much to get a virtualised machine running EasyOS up and running.
(such as Disks in Mint or Ubuntu), simply boot from the
Paw-kages
You’re spoiled for choice when it comes to adding
new software to EasyOS, thanks to its support for four
package managers, all accessed via the Pkg shortcut.
Which one you choose depends on what software it
drive and hit Enter to select EasyOS Kirkstone from the offers and how you want it installed – the Pkg shortcut
boot manager. You’re prompted to select a language makes this clear with detailed descriptions.
for the setup wizard, which resizes the main partition to It can be confusing jumping between the four, as
fill all available space on the disk, then prompts you to none offers very large collections of apps, even those
set your keyboard layout (21 for UK English). You’re offering easy install of Flatpak (Flapi) and AppImage
given the chance to encrypt the working partition with (Appi) packaged apps. This is because only apps tested
a password, then the first system snapshot is taken. and known to work with EasyOS are included.
From here you’re taken to the EasyOS desktop – a Of the other two package managers, PKGget is
redesigned but familiar desktop to many Puppy Linux the ‘traditional’ option, offering the highest level of
users, based on the JWM (https://joewing.net/ compatibility, but people used to large repos like those
projects/jwm) desktop. You’re faced with a Quick offered in Ubuntu and Debian may be disappointed by
Setup window that enables you to quickly set key the narrow choice offered by the three supported
preferences. At first glance it seems everything you repos: oe-kirkstone, pet-noarch and pet-kirkstone. All
need is configured from this initial screen, but it’s not apps installed through PKGget are configured to run as
quite that simple. After setting your country, display the root user, but you can configure individual apps to
resolution and network preferences, clicking OK closes run as non-root by opening the Menu, choosing System
the window, but other setup windows pop up in turn. > Login & Security Manager, and clicking Modify.
The key is to not rush – each window is relatively The final package manager is where things get
straightforward to navigate, and the Firewall Setup tool ‘interesting’. SFSget opens access to two SFS
offers an excellent example of EasyOS’s attempts to packages, described as “large apps or collections
make itself beginner-friendly (or beginner-friendlier) of apps” that can be installed as regular apps or into
with plain-English text, straightforward options and lots containers depending on the app (or indeed distro,
of context-sensitive help behind numerous ? buttons. as this is where you can load alternative distros).
Once you’ve worked your way through these pop-
ups, a summary dialog appears, but you’re not quite A friendly breed
done with the hand-holding. A HelpSurfer app pops up After selecting your chosen repository, click the
to provide a grounding in EasyOS’s basic concepts. Browse button, where you’ll see a list of paths, inside
This is basically a locally hosted webpage, and you’ll which is a disparate collection of apps, distros and
see further links leading to both offline and online drivers. Each path corresponds to the underlying distro
pages at the project’s website (https://easyos.org). ecosystem powering the app in question – you’ll notice
In the top-left of the desktop, you’ll find a series of only apps listed under easyos/oe/kirkstone can be
icons providing handy shortcuts to key parts of your installed both natively or as a container, all others
system. The Files shortcut is link to a personal Files require installing into a container to ensure they have
It’s a good idea to folder, inside which are the usual suspects: Documents, the required libraries and other dependencies.
encrypt your drive Media and so on. Click WWW to browse the web with Select an item and you’ll see a detailed description
partition – it’ll be
the only password
Chromium, while Apps opens the EasyApps launcher, of how it’s installed – click Download to open a
you supply at providing access to key apps (both pre-installed and separate terminal window that details the file(s) being
any point. available via one of EasyOS’s package managers). Here downloaded. Once done, it’s replaced by another
window (SFSget package installer) asking how to install
the package. You have a choice of up to three options
depending on the package: install natively, as a new
container or into an existing container.
You’re then told the app is installed and a desktop
icon appears with the tell-tale pink padlock if it’s
installed as a container, but that’s not the whole story.
EasyOS is premature in announcing the installation –
you often need to reboot EasyOS before the shortcut
works; otherwise, you get an error about not being able
to access a file like /usr/bin/ec-chroot-krita.
Once installed, the containerised app works like any
other – there’s no discernible difference between them
Parallel compression
Parallel processing, the computing equivalent of juggling, as Shashank
Sharma calls it, can be used to perform everyday tasks to save time.
VIRTUALBOX
Credit: www.virtualbox.org
the restrictions and then click Agree followed by your CONTROL YOUR VM
user password.
delivers faster boot times when the virtual hard disk is section. Here you choose what controller (USB 1.1, 2.0
stored on an NVMe drive. or 3.0) you want, then you can add Device Filters, either
The Audio section is self-explanatory, giving you empty ones you can use to capture devices ad hoc To monitor the
a choice of three audio controllers, while Network while your VM is running (see the annotation, page 53), performance
requires tinkering if you want your VM to be visible on or you can specify specific attached devices using the of both your
your home network. In these circumstances, switch + button, which basically sees the guest capture that host PC and
from NAT to Bridged Adaptor. You can also change device (and make it inaccessible to the host) as soon as any running
VMs, select
the virtual network adaptor by expanding Advanced. you power it up.
File > Tools >
What you can’t (yet) do from here is configure a Beneath this section is Shared Folders. This
VM Activity
virtual Wi-Fi adaptor – you can, however, capture a USB provides you with an alternative way to share data Overview. You’ll
Wi-Fi adaptor plugged into your host PC and use that between guest and host through a shared machine see pie charts
via the USB section. Speaking of which… folder, namely a folder on your main PC. You can make revealing host
this read-only for security reasons, plus have it CPU, RAM and
USB emulation automatically mount on startup if you wish. drive usage, plus
Support for USB has come a long way in VirtualBox The final section – User Interface – enables you customisable
over the past few years. USB 2.0 and 3.0 are now to streamline the virtual machine’s user interface if columns for
natively supported without requiring the Extension required, removing unwanted menu items, hardware monitoring
individual VMs.
Pack, and it’s easy to capture USB devices via the USB icons and more.
EXT4
Credit: https://ext4.wiki.kernel.org
What’s in a filesystem?
Mats Tage Axelsson explains how your filesystem keeps everything
running smoothly and when it might help for you to do something about it.
Real-world time
Switching to a potentially experimental filesystem isn’t
something you should consider for your day-to-day Using the GUI to create a partition is easier but limits you to the most common filesystems.
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!
f you’ve been following this series, you now a player leaves it – this can be helpful if the area
A matter of scale
If you like to keep your room all on one screen as we
do, you may prefer to add some perspective for your
character to make them fit their surroundings better. that transports them elsewhere, the character could Custom properties
The sample background for Room 2 is a vast be unable to leave the room. let you define new
values for items
cyberpunk-style hangar, so it would make sense for like hotspots, such
our character to appear a little smaller. Conditional exits as whether a door
To achieve this, return to the project tree and Using regions is an excellent way to transition between is unlocked.
choose Edit Room under Room 2. In the properties rooms automatically. But many games don’t allow you
grid, change the value for ScalingLevel, to a different to progress to a certain area unless certain conditions
percentage, such as 50. are fulfilled first.
Save and run the game again. When your character In the previous tutorial, when interacting with
appears in Room 2 this time, they appear half the usual Robbie, it’s possible for the player to have their key
size to reflect its vastness. upgraded to a master key that fits any lock. What if the
Although it’s outside the scope of this tutorial, you player needed to use this special item to visit a new
can also dynamically scale your character within a area? To do this, return to Edit Room under Room 2
room by changing the property UseContinuousScaling and remove Region ID 1 using the Erase tool, because
from False to True. it’s served its purpose.
If you do this, you’ll see ScalingLevel is replaced by Next return to the room editor and choose Edit This
two properties: MinScalingLevel and MaxScalingLevel. Room’s > Room > Hotspots > hHotSpot1.
By default, these are both set to 100. You can, however, For the purposes of this example, we’ve used the
change these values – for example, to 100 and 200 rectangle tool to define roughly where the entrance to
respectively – to have your character change size as the shaft will be, but feel free to use your imagination.
they move between the bottom and top of the room. In the properties grid, be sure to set a memorable
Room regions
When creating rooms so far, we’ve inserted edges, ADDING SOUNDS
walkable areas and interactive hotspots. You can also
add regions to rooms. These are areas of a room that Music and sound effects are adventures. To get started,
can trigger an event when the player walks to them, handled in the Audio section of use your own soundtrack or
such as transitioning to a new room. the AGS project tree. download a public domain one
In our sample background for Room 2, there’s a For now, let’s introduce a from https://bit.ly/lxf313mp3.
large grey lift shaft on the left-hand side of the screen, simple sound to play when the Next, right-click Music under
so we can define the base of this as a region to return character successfully picks up Audio in the project tree and
the player to Room 1 when they walk to it. an object. For testing purposes, choose Add Audio File(s) once
To get started, return to Edit Room under Room 2 you can download a public again. From here you can import
in the project tree. In the room editor section, choose domain WAV file from https:// your soundtrack. Right-click
Edit This Room’s > Regions > Region ID 1. Use the bit.ly/lxf313wav. again to give it a meaningful
rectangle or freeform and fill tools to define the Next, right-click Sounds in the name, such as aRoom1Music.
region you want, making sure that it falls within the project tree and choose Add Double-click on Edit Room
character’s walkable areas. Audio File(s). From here you under Room1 in the project tree.
Once the region is created, click the Events button can navigate to the sound you If you click the Events button,
in the properties grid. You’ll see there are three downloaded. Once imported, you can insert a command to
different types of event that a character can trigger: right-click and choose Rename play the sound by clicking the …
when they walk on to a region, when they walk away to call it something easily next to Enters Room After Fade-
or when they’re standing on one. recognisable, such as aPickup. In – for example:
For now, click the … next to Walks On To Region. Playing the sound within the aRoom1Music.Play();
This brings up the Room 2 code, where you can game is very simple, using the Click the … next to the
transport the player back to Room 1, for example: Play function – for example: Leaves Room event to end the
cNate.ChangeRoom(1, 265, 151); aPickup.Play(); soundtrack when the character
Pay close attention to the coordinates you use for Music usually works on a per leaves the room – for instance:
ChangeRoom, as if you have the player appear in an room basis for point-and-click aRoom1Music.Stop();
area past the edges you’ve defined, or within a region
name, such as hElevator. Write something meaningful play so fair, forcing players to actually work out that
under Description, too, such as Elevator Door. You they need to use specific items in order to progress.
should also specify a WalkToPoint so the character In this case, let’s imagine we want to make the game
If you create
a custom goes to it each time you try to interact with it. slightly harder by requiring the player to actually use
property for Next, click on the Events button and choose the … the Master Key inventory item on the Elevator Door.
a particular next to Looks At hotspot. This is where we’ll give the In AGS, return to Edit Room under Room 2 and click
item like a player a clue that the master key is required in the the Events button once again. Select the … next to Use
hotspot, such Room2 script, for example: Inventory On Hotspot. From here you can have the
as ‘unlocked’, Display(“The elevator door is now locked. If only I had game transport the player to another room, provided
all other items a master key...”); they’re using the iMasterKey item – for instance:
of the same Next return to the properties grid. Click the Events function hElevator_UseInv()
type share
button again, then on the … next to Interact Hotspot. {
this schema.
Now, we just need to construct a simple if/then if (player.ActiveInventory == iMasterKey) {
However, when
creating the statement to transport the player out of the room if Display(“You use your master key to open the
property, you they have the key or tell them they’re stuck if they elevator door.”);
can choose for don’t – for example: cNate.ChangeRoom(1, 265, 151);
it not to apply function hElevator_Interact() }
to other item {
types, such if (player.HasInventory(iMasterKey)) }
as characters {
and objects. Display(“You use your master key to open the Setting states
elevator door.”); As tricky as some point-and-click adventures can be,
cNate.ChangeRoom(1, 265, 151); they try to avoid you having to repeat the same actions
} over and over.
else In the case of doors, for instance, it makes sense
Display(“The elevator door is firmly locked.”); that once one has been unlocked, it remains that way.
} You also may want to set a default property for certain
Take a moment to save and run your game by items – for example, all windows should remain closed
pressing F5. First move into Room 2 without the until the player opens them.
master key. You’ll see the elevator door is locked and You can achieve this by setting custom properties.
you can’t progress (in reality, a game designer would When using AGS, you’ll have noticed that each time
never build an inescapable room in this way, but this is you interact with a character, object, hotspot and so
just for testing purposes). on within the editor, the properties grid displays a
Exit and run the game once again, this time going Properties option.
through the steps to obtain the master key by talking By way of example, let’s make it so that once the
to Robbie the Robot. Move to Room 2. Now when you player has used their master key on the elevator door,
click on the elevator door, your character transitions to it remains unlocked.
another room. To get started, click Edit Room under Room 2 in the
property tree. Then click the … next to the Properties
Itemised exits field. In the Edit Custom Properties window, click Edit
Checking for inventory items makes gameplay a little Schema. Now right-click anywhere in the new Edit
more tricky but LucasArts-style games don’t usually Property Schema window and select Add New
OPENSCAD
Credit: http://openscad.org
next issue,
subscribe on
page 16!
WHAT IS OPENSCAD?
Few conflicts are as old as that between or AutoCAD, OpenSCAD deserves an the product does a great job, especially
the creative and engineering-minded. honourable mention. It is a (lobotomised) when high accuracy is required. Unlike a
Sadly, events such as purchasing real programming language for creating GUI-based tool, the function and text-
estate in need of renovation can lead 3D-printable objects. based way of designing objects with
to a situation where the engineering- A developer using OpenSCAD writes OpenSCAD means that measured
minded must get creative. Trust us a piece of code, which is compiled (or results can easily be entered into
when we say that the availability of a run) to create the 3D model, which can the program. Furthermore, the
3D printer is one of the few factors that then be fed to a slicer of choice. computational capabilities of the
greatly simplify real-estate renovations. While OpenSCAD is not well suited to product permit easy modification of
Given that programmers often applications where exquisite and well- the object should dimensions ever
struggle with software such as FreeCAD designed objects need to be created, change (hint: they will).
Real life
Underground real estate is fascinating; floor loads are
almost unlimited. Sadly, most non-dedicated builds
have issues with kitchens – 18th and 19th-century
architects did not think that potato storage areas
would ever be used for housing. Thus, effective space
use (and kitchen construction techniques from
aerospace) are recommended. The union operator The intersection
LED strips for illumination are very versatile; they is not always operator in action
save 2 inches [5cm in metric – ed] of work space when necessary. on our poor cube.
placed above a working surface. Sadly, their glue tends
to delaminate quickly, especially when in contact with
steam. As a workaround, a bracket object such as the
one shown (over the page) has been devised.
Creating this object requires a slight rethink of our
OpenSCAD process. So far, invoking methods such
as sphere set voxels in the output area. Fortunately,
OpenSCAD also provides an inverse: a method that can
unset voxels in rendering space.
Our next task is creating the rectangular main
body, which makes up the bulk of the component.
Rectangles can be created by using the cube method –
its syntax is shown in the OpenSCAD documentation,
found at the URL https://bit.ly/lxf313cube, and
Our cut-out is
partially reprinted here: ready to deploy.
cube(size = [x,y,z], center = true/false);
cube(size = x , center = true/false);
Parameters
size single value, cube with all sides this length
3 value array [x,y,z], cube with dimensions
x, y and z.
center false (default), 1st (positive) octant,
one corner at (0,0,0) true, cube is
centred at (0,0,0)
default values: cube(); yields: cube(size = [1, 1, 1],
center = false);
structure with the {} obviously to the problem at hand. For that, we need to move
creates a block containing the the cut-out.
two cubes. This block is then For this, it is recommended to use the translate
attached to the difference operator. In computer graphics speech, translation is
operator, which performs a motion across one or more axes – the translate
the subtraction. operator takes in a vector describing how far the
Combinatorial operators are objects are to be moved.
among the most important in the The object must be moved along the X axis in our
world of OpenSCAD – geometry particular case. The exact space can be determined
can be subtracted, added and by thinking or by playing around – as shown in the
intersected. The simplest way to following snippet, OpenSCAD coordinates can also
describe this is in the table from be made up of a computation:
Tam’s scientific book on the difference()
topic (see Quick Tip, opposite {
page) – it visually illustrates the cube([25,5,8]);
various operations. translate([(25-11)/2,0,0])cube([11,30,3]);
The final printed }
LED holder in place union() At this point in time, the program is ready to run.
holding up Tam’s
critical lighting { The cube and The screenshot (previous page, bottom image) shows
infrastructure. cube(12, center=true); sphere volumes that the cut-out is in position.
sphere(8); are combined. Drill holes for the screws are next. The first step
} usually involves determining the width of the threads.
Being based in continental Europe, Tam has easier
difference()
{ The sphere volume access to metric screws. In particular, a screw of the
cube(12, center=true); is removed from type M2.5x16 was selected – its threading diameter
sphere(8); the cube. was 2.4mm.
} Selecting the correct amount of reduction to
achieve a tight fit between the 3D printed part and the
All those who difference()
screw is both art and science; not only is it dependent
use OpenSCAD { The cube volume
sphere(8); is removed from on the screw and the model, but also on the slicer, the
are well advised
cube(12, center=true); the sphere. accuracy and the material used.
to purchase
} Due to that, the value of 2mm is but a guideline –
callipers.
Having some should you want to realise this object for use in your
intersection()
dramatically The sphere volume own kitchen, be sure to print one object and test
{
simplifies the is clipped to the it by screwing it into a piece of scrap wood before
sphere(8);
creation of the outside planes of committing to production.
cube(12, center=true);
measurement the cube volume. With this information in hand, the OpenSCAD
}
values needed documentation can be consulted once again to find
to build the Furthermore, bear in mind that the union operator is out the name of the function required for the raising
various objects. implicit. The following snippet of code invokes both the of a round solid. In particular, this is the function
cube and the sphere method – the results are added cylinder, which has the definition shown here: https://
together (see previous page, middle image): bit.ly/lxf313cyl.
cube(12, center=true); In the next stage, it is recommended to add one of
sphere(8); the functions as shown in the following step:
difference()
Moving objects {
While this excursus into the world of combinatorial cube([25,5,8]);
operators introduced a few (potent) new elements of translate([(25-11)/2,0,0])cube([11,30,3]);
the OpenSCAD syntax, it has yet to bring us any closer cylinder(h=20, d=2);
}
Careful readers of the table mentioned above
The strip holder will query why the two objects are dropped into
is now ready for the difference operator. The answer is simple: when
physical realisation.
difference receives a parameter list, the second and
the following objects are ganged up and subtracted
from the first object.
In the next step, it is time to move the two objects
to their position. This is best accomplished by
duplicating the cylinder invocation and then using the
translate operator to move them to the individually
correct positions:
$fn=32;
difference()
{
cube([25,5,8]);
translate([(25-11)/2,0,0])cube([11,30,3]);
translate([22,2.5,-2])cylinder(h=20, d=2); The geometry
element touched by
translate([3,2.5,-2])cylinder(h=20, d=2);
# is highlighted in red,
} even if it is invisible in
When done, the object is ready to print (see the rendering.
screenshot, opposite page, bottom). We increased the
$fn value to get smoother circles here.
Colourising geometry
When working on a real-life OpenSCAD object,
debugging can be significantly simplified if the part
of the geometry created by a specific OpenSCAD
command is coloured. This is achieved by using the
# operator – the screenshot (right) shows that its
application to the cube object reveals its position:
$fn=32;
difference() not update the geometry cache and cannot be used for
{ the production renderings.
cube([25,5,8]); Be that as it may, pressing the STL button opens a If you want
#translate([(25-11)/2,0,0])cube([11,30,3]); dialog window. Use it to select the filename and the to learn
translate([22,2.5,-2])cylinder(h=20, d=2); path where the STL file is to be stored – OpenSCAD more, consult
translate([3,2.5,-2])cylinder(h=20, d=2); exports a standard STL file, which can be imported into Technical
} your slicer of choice. Modeling with
In principle, deploying this operator could not be At this point, a question remains: numbers such as OpenSCAD.
Published by
simpler. In practice, however, be aware that it is only 25 were, so far, considered to be dimensioned in
Elektor, it can
used in preview renderings; performing a rendering OpenSCAD size units. Loading elements in the slicer be purchased
for effect makes the parser discard colour changes reveals the use of millimetres as basic units. on Amazon or
caused by the operator. At this point, all that needs to be done is the actual at your local
realisation. The photo (opposite page, top) shows the bookshop.
3D printing OpenSCAD results achieved on Tam’s 3D printer.
The last task involves transforming our object into a
ready-to-print version. For this, we need to revisit the What’s next?
first screenshot once again – next to the rendering After these experiments, you should be aware of some
button, we find the STL symbol. It dumps the contents of the basic commands. Next month, we’ll introduce
of the last production rendering into an STL file – be more elements of OpenSCAD syntax. In the meantime,
careful to run a production rendering before pushing stay tuned and feel free to consult the documentation
the STL button to prevent exporting outdated – having grasped the concepts presented, learning
elements. Also, be aware that preview renderings do from the documentation is easier than it sounds.
In most cases, one
OpenSCAD size
unit translates
to 1mm.
MAESTRO
Credit: https://github.com/llenotre
ust is in the kernel. Since the 2020 Linux weaknesses in C and C++. Rust can avoid these
for LXF and even endured LXF: You must be familiar with LXF: What role does Rust
Nate’s terrible French. You Redox, an operating system play in overcoming the
can read more about Maestro entirely written in Rust, obstacles you faced during
and Luc on his blog (https:// maintained by around 80 the initial development of
blog.lenot.re). developers. You’re more akin Maestro in C, and how has it
to a lone genius like Mozart, influenced the evolution of
LXF: Why did you choose Rust composing code solo. As a the project?
to create Maestro, given that solo developer, what LL: Rust ensures that many
writing a Linux kernel challenges have you bugs related to memory
yourself in C would have been encountered, and how have management or concurrency
more than sufficient for a you overcome them during are avoided. There is no need
Software engineer Luc school project? the development of Maestro? to think about these details
Lenôtre has been coding Luc Lenôtre: I had heard a lot of LL: I have indeed heard about because the compiler takes
since he was just 10 years good things about the Rust Redox. The project is much care of them for you as the
old. At the age of 18, he language at the time, and I more advanced than mine, programmer. However, it
started studying at the Paris thought it was probably worth obviously. The main challenge doesn’t solve every problem.
branch of School 42, which trying. My kernel [originally in developing Maestro on my The language’s typing rules
emphasises peer learning and written in C] needed a major own is that the workload is are designed for user-space
project-based work. This is refactor, so I thought it was colossal. You have to be able programs and do not cover
where he devised his plan the right time. [A time-lapse to handle every aspect of the handling of CPU
to create his very own OS. video of Maestro’s transition the kernel, whereas in a interruptions, for instance.
Nevertheless, Luc kindly from C to Rust is available multi-person project, each
took time out of his busy at https://blog.lenot.re/ person can specialise in a LXF: Currently, Maestro has
schedule to be interviewed a/introduction.] particular domain. no graphical interface. Do
you plan to implement this x86-64, and if so, what LL: The main difficulty in incorporate other filesystems
as well? Are you considering challenges do you anticipate? introducing full network but could do so if needed.
adapting an existing desktop, LL: I would like to add support support will be the
such as Cosmic or the Way for x86_64, as the 32-bit implementation of various LXF: On your project page, it is
Cooler window manager? So architecture is rather obsolete. drivers. As the project mentioned that you have your
far, it just seems that you The restriction is down to progresses, this will become own version of Neofetch, but
prefer to do everything the original limits set by my even more crucial. You need when we tried to run the
from scratch? school project, and that’s how to have numerous drivers in command in Maestro, it
LL: I started writing an Xorg Maestro started. Beyond that, I order for an operating system displayed ‘Command not
server [Visto] in Rust, which would like to support the ARM to be adopted on a large scale, found’. We appreciate that
is available on my GitHub architecture to support mobile which requires a significant the current number of
[https://github.com/llenotre/ platforms, such as Raspberry amount of work. packages is limited, but did
visto]. But I will most likely Pi or smartphones. we miss something?
rewrite it to move to Wayland. LXF: Maestro currently LL: I didn’t include Neofetch
Xorg was designed at a time LXF: When we tried to install supports the ext2 filesystem. in the ISO because I wanted
when user interfaces were packages via Blimp, we Are there any plans to to provide only the minimum
much simpler. I think it’s time discovered that network incorporate support for number of packages
to move on. support has yet to be fully more modern filesystems, necessary. To get extra
implemented in Maestro. and if so, which ones are packages like Neofetch,
LXF: Maestro currently What are the obstacles, you considering? you need to install them
supports the x86 and what strategies do LL: Ext2 is obsolete today but manually by copying to the
architecture. Are there plans you envision to overcome simpler to implement. For now, main disk or recompile the
to extend compatibility to challenges like this in I plan to introduce support for Maestro-installer and add
other architectures, such as future versions of the OS? ext3 and ext4. I’ve no plans to extra packages to install.
LXF: Maestro started as a approach to the development majority of the time I spend LXF: From your blog, it’s clear
school project. You shared of Maestro? on this project. you’re a polyglot, given that
your roadmap on the blog LL: SkiftOS (https://skiftos. beyond French, you speak
and it really seems to have org), in particular, inspires me LXF: Can the community English, Spanish and
gathered pace since then. a lot given it has the kind of become actively involved Chinese. Did your talent for
How has the project evolved graphical interface I’d like in the development of spoken languages influence
beyond your initial to have in Maestro. I’m also Maestro, or do you intend to your desire to learn a new
expectations, and which impressed by Aero [another continue the project as a solo coding language in Rust?
milestones are you Unix-like OS written in Rust] endeavour? Presumably, as LL: Not at all – it’s an entirely
particularly proud of? (https://github.com/Andy- it grows in popularity, there separate passion! I would
LL: Each new feature was Python-Programmer/aero) will be more demands for also like to learn Ukrainian,
satisfying to implement and and [microkernel-based OS] new features? German and Italian.
see in action, but I would say Managarm (https://github. LL: I’m considering it; there
the one that truly changed my com/managarm/managarm). are people who have shown LXF: You have provided links
perspective is the support for interest in participating. But on your blog for developers
Bash. When I saw the Bash LXF: Looking back at the first, I need to change the interested in developing their
prompt displaying and entire development process, project’s licence, most own OS. What advice do you
functioning correctly, that’s are there any other moments probably to GPL. have for those who wish to
when I realised what I’d done that were particularly undertake a similar journey,
was absolutely awesome. challenging or rewarding, and LXF: As you know, there especially for developing
how have they shaped your have been many recent their own OS in Rust?
LXF: As a lone developer, perspective on operating developments in the Linux LL: I would offer a few pieces
how do you manage the system development? kernel to support modules of advice:
balance between adding LL: I wouldn’t say that there written in Rust. Can you 1. Carefully read the
new features to Maestro were any particularly difficult imagine a day when major documentation and pay
and maintaining its individual moments, but Linux distributions will be attention to details. Precision
existing functionality? rather that everything is a entirely written in Rust, just is extremely important.
LL: Refactoring, over and constant challenge. Nothing as Maestro is? 2. Dedicate a significant
over again. I spend more is simple in the world of OS LL: Completely rewriting a amount of time to it.
time refactoring than adding development. The main Linux distribution in Rust Projects like these are
new features. lesson this project has would take a tremendous very time-consuming.
taught me is that it is very amount of time and effort. I 3. Be very persistent. It is
LXF: Are there specific OS important to refactor one’s think if it were to happen, it not uncommon to spend
developers or projects that code regularly to keep the would be more of a transition several days, even weeks,
have inspired you? If so, project viable. I believe that over several decades rather tracing the point of origin
how did they influence your refactoring represents the than a direct rewrite. of a single bug.
you to set the Wi-Fi details and SSH service autostart). As to the server capabilities, we were quickly able to
These options are available after you have selected configure it to run six different Docker images and still
your device and it prompts: Would you like to apply have plenty of RAM left. The performance is good
OS customisation settings? Set this up and then apply enough that it can run substantial containers, such as
the config. Once the Pi is booted up, you should be able Invidious, Jellyfin, Sonarr and others, without any
to SSH straight into the server. issues. A word of caution, though: while it may make a
A little tip is that if you use the Raspberry Pi as great media server and has plenty of resources, it will
a desktop, using a mouse and keyboard set that is not go above 1080p without frame drop.
preconfigured to use a shared USB receiver (such as With 20W available, powering small external disks
The much- seemed to be less of an issue. There were no stability
anticipated NVMe
adaptor will add issues or dropped connectivity under significant load.
solid, high-speed Even when using encrypted volumes on external USB 3
storage to the disks, the performance was good.
Pi’s armoury. If the need is for a low-power but reasonably
performant ‘box in the corner’ to run lightweight tasks
or as a media server or Docker host, it works very
well. That said, for the same price as the board, power
supply and adaptor, I was able to get a second user SFF
M900 desktop that was equally performant but more
of a whole package; it depends what you want to do.
It is undeniable that the Pi changed the ARM
landscape and is without doubt the leader, but it is now
straddling a complex cavern – on one side tinkerers, on
the other people who want to do more serious things
and push the ARM envelope. I think some of the new
add-ons may be game-changers, including the much
awaited hardware add-on to allow NVMe disks.
Yodeck
Jonas P DeMuro dusts off his Raspberry Pi so he can
take a quick overview of this digital signage service.
an Francisco-based Yodeck is powerful digital
IN BRIEF
Yodeck is
S signage software that enables you to create,
manage and display content on screens,
digital signage making it an excellent solution for various industries.
software with The company’s mission is to help people build better
four pricing relationships with their customers, students,
plans: Free, employees and community members. It started in
Standard, 2015 with three people, and has grown to over 6,000
Pro and an employees, serving the needs of over 5,000 clients
Enterprise plan worldwide, with their tens of thousands of screens.
for businesses Yodeck serves many businesses and organisations,
with specific including Icelandair, Domino’s, McDonald’s and Ford.
security At the bottom is the Free plan, which makes Yodeck
requirements. completely free to use for a single screen. You can
Yodeck offers enjoy all the features, such as the included apps and
a variety of templates, without any cost for your first screen. Also
features, keep in mind that this free tier serves as the trial, too,
including as we did not see any mention of a free trial on the
content higher tiers, but this is not time limited and can be used
management, long term for a single screen. You can see the Raspberry Pi nestling inside the Argon40 case.
scheduling and The Standard plan, which is targeted at multi-screen
analytics. The installations, is $7.99 per screen per month. It provides includes more user-manual-style content. Users are
help centre has essential features for managing digital signage across also encouraged to add input on new feature ideas.
articles and multiple screens, such as overlays, an interactive kiosk, A shortcoming is that we did not find a user forum,
user manuals, free stock images and videos and live streams. or any ebooks or webinars on the official website.
making this However, investigating further, there is a YouTube
an attractive Go Pro channel with over 130 videos, and there are some
choice overall The Pro plan is recommended for managing large random links to this content, but in this day and age,
in the digital volumes of content, at a price of $9.99 per screen an embedded video player would probably be an
signage space. per month. It includes everything in the Standard plan expectation for most people.
with additional features and capabilities beyond that, Yodeck offers a wide range of end deployment
including sub-playlists, volume schedules, media tag options, from Chrome browsers to Fire TV sticks and
filtering by screen, and advanced media scheduling. Android apps. The main platform offered by Yodeck
Finally, the Enterprise plan features “pro-grade is Raspberry Pi-based and the business was built up
security” and is available for $12.99 per screen per around a Python-based solution running originally on
month. It includes all the functions of the lower the Pi 2, with the current recommended install being
plans and then offers advanced features and robust a 4GB Pi 4, although support back to the Pi 2 and
security measures that include login IP and password Compute 3 is still available. You can find out more at
restrictions, custom user roles, security session https://bit.ly/lxf313yo.
policies and audit logs.
Additionally, the company provides free hardware
with all annual plans, making it an affordable choice for
VERDICT
implementing digital signage projects. Also bear in DEVELOPER: Yodeck
mind that for 60 screens and over, you can call for a WEB: www.yodeck.com
custom quote at that higher volume. PRICE: From free ($7.99pm per screen)
Yodeck has but a single option to get in touch for
assistance: a contact portal. There is no direct phone FEATURES 7/10 EASE OF USE 8/10
number or option for chat. You should also keep in PERFORMANCE 9/10 VALUE 7/10
mind that support is included for no additional cost
with each of the plans. Yodeck is a good option for digital signage software. It offers
On the self-help side of the support equation, we a variety of features at a reasonable price. The free tier is a
CREDIT: Yodeck
are pleased to report more options. There is a mature great way to try it out before committing to a paid plan.
help centre, with articles written on a variety of topics,
including General Questions, Pricing and Features. Rating 7/10
There is also a separate documentation area that
Hostinger
James Capell is just the guy to try out a web host that’s
easy enough for your granny to use.
ostinger is web hosting provider
IN BRIEF
Hostinger offers
H that caters to everyone from home
users with little to no web hosting
affordable experience all the way to seasoned web
shared hosting devs. For this review, we used the most basic
for small to plan to see what Hostinger has to provide
medium low- for a range of users . We built a test site,
traffic sites. explored its custom control panel, tested
VPS hosting support, monitored speeds and uptime, and
and cloud compared our results with the competition.
hosting give Hostinger has put a lot of effort into
your website making its shared hosting experience as
more resources seamless and beginner-friendly as possible.
for extra speed, From the minute you sign up, it walks you
making them through every step with very clear and easy- Our speed test shows exemplary performance on top of that attractive pricing.
suitable to-follow instructions that can help complete
for more novices get their website up and running. With the entering the address and a password. Advanced
demanding, inclusion of additional features such as page speed features, such as importing existing emails and
business- monitoring, malware scanning and analytics, it makes setting up SPF and DKIM records (to authenticate
critical sites. sure you can manage every aspect of your website emails and protect against phishing), are just a click
directly from Hostinger’s hPanel. For beginners, it goes or two away, too.
above and beyond the industry standard control panel Unusually for a top hosting provider, Hostinger
cPanel and does a good job of hiding away confusing doesn’t have telephone support. There’s 24/7 live
techy stuff, presenting everything in a logical manner. chat, though, and email or ticket support if you prefer.
When it comes to VPS offerings, you’re on your Hostinger says that telephone support just slows down
own. VPS tend to be aimed at people with experience getting things done and that it has been able to fix
setting up and managing servers, and in exchange for issues faster by removing this option.
far more performance for your money, you need to We opened a ticket asking how we could install
know how to run and manage the server yourself. WordPress on a subdomain. The reply arrived only
We measured Hostinger’s performance by setting 17 minutes later – just about as speedy as we could
up a test WordPress website, then using Uptime.com expect for ticket support. The text used more jargon
to monitor its speed and any downtime from multiple than we’d like, but was accurate and included all the
locations around the world. Although our site was detail we needed to figure out a solution. Live chat is
hosted on the most basic plan, it still managed an also available whenever you need it.
excellent 100% uptime record over 10 weeks. Prices are very competitive, starting at £2.49 per
We measure website load speeds with help from month for a four-year plan. Having said that, the pricing
GTmetrix. Hostinger scored here with a speedy LCP of can be a bit confusing and renewal prices can change
0.607 seconds, the second fastest result in our last 15 based on things such as whether you have auto-renew
tests, just behind HostGator. enabled. So, we do recommend that you take more
Hostinger has data centres in eight countries: the time to look at the long-term cost of your plans.
USA, UK, France, Netherlands, Lithuania, Singapore,
India and Brazil. That’s far more than most hosts, and
it’s especially good to see a service that doesn’t purely
VERDICT
focus on North America and Europe. There is one DEVELOPER: Hostinger
catch, though: some plans don’t support all the data WEB: www.hostinger.co.uk
centres. The Shared, Cloud and WordPress plans are PRICE: From £2.49 per month
available everywhere, but Hostinger’s Linux VPS plans
can’t be hosted in France, Netherlands or Singapore. FEATURES 8/10 EASE OF USE 9/10
Hostinger doesn’t offer cPanel to its shared hosting PERFORMANCE 8/10 VALUE 9/10
users, opting to provide its own custom hPanel
CREDIT: Hostinger
platform instead. Custom control panels make us wary, Attractive prices, ease of use, and fantastic features make
probably because most of them are underpowered in Hostinger a great choice for both novice and advanced users.
the extreme, but hPanel is a rare exception.
Most functions are accessible to even novice users. Rating 9/10
Creating an email address, for instance, is as easy as
Three years on, the DIY laptop concept has come of age. Contributions from: Alex Cox, Dave James, Paul Lilly, Desire Athow
oday’s laptops offer limited DIY upgrade options though, was the hyper-focus on user customisation, repairs
The new removable GPU units for the Framework 16. A number of processor and mobo upgrades have been released.
screwdriver, to drive home the point it designed these seem to ship within a week or two in the US, while
systems to facilitate tinkering. In the age of right-to- support has been expanded to the UK and Europe.
repair, this took the idea and launched it into orbit.
The original Framework DIY laptop was launched in Gimmick mimic
March 2022 and provided an entirely configurable That original Framework laptop really impressed and
system, from barebones where you supply your own offered genuine excitement. The ‘gimmick’ behind its
RAM and SSD to fully tricked out with slot-in expansion design is so fundamental that we can’t believe the
cards. While you can’t order a Framework laptop with market has come this far without it being the norm –
Linux installed, Framework is taking the time to certify or at least commonplace. It’s a machine with right-to-
that its hardware is officially compatible with Ubuntu repair and real design genius hard-baked into its core.
and Fedora, alongside providing support for those This has been tried before. The Alienware Area-
two distros. More recently, this has been expanded to 51m, for example, was meant to be upgradable, but it
include community supported options, with Linux was horrendously expensive, immensely chunky, and
Mint and Manjaro XFCE currently listed. For exact Dell seemed to get bored of the concept very quickly.
Linux support, see https://frame.work/gb/en/linux. Framework, on the other hand, has not simply given
Framework is doing its own thing, including lip service to the idea of a repairable platform; this
fulfilment, so is issuing its machines in batches. These laptop is literally built around it. Our DIY edition came
market can help cement NP: We’re making both the use cases. When starting to spot and be able to get their
Framework’s foundation. Framework Laptop 13 and work with businesses, we employee base up and running
LXF: Framework is launching the Framework Laptop 16 found that the product itself again. Especially for small
a B2B program called available to purchase for was already a great fit, and businesses, what we’ve found
Modularity even silly fat shape of the Area-51m. This is smart. It blends
extends to the in with the MacBooks and Dell XPS 13s of this world,
keyboard layout.
and manages to be internally friendly while doing so.
And then there’s the ports. Oh, the ports. Apart
from the combo audio jack midway along the left side,
they’re entirely modular, supplied as square slide-in
units with a male Type-C connector on one end and
whatever you need on the other. Want to put an SD
card slot on the right and HDMI on the left? Go for it.
Need extra storage? Drop in a terabyte. Want four
DisplayPort outputs? Uh, OK, you can technically do
that, but we can’t guarantee the integrated graphics
will be happy handling all those screens at once.
There are four slots in all, to be populated as
unpopulated; to get it going, we had to open it to insert you wish – though if you’re planning to charge the
RAM and storage. Messing with internals is a prospect Framework Laptop, you’ll want to plug in a Type-C port,
that, in a regular laptop, elicits a sigh and the possibility at least while the battery fills. Only four at a time may
of breaking or losing something. Not so here. feel restrictive if you don’t look at the port-starved
Five screws in the base is all it takes to release the designs of most modern portable PCs. You may well
keyboard and get into the guts. Every replaceable item lock ’em in and never change your configuration.
inside and out – and there’s a glut of them – is lovingly Jump forward three years and the good news is
labelled with details on where to get a new one. You not only is Framework still here – let’s not underplay a
can even switch out the mainboard in the future. pandemic and cost of living crisis – it’s expanding and
Everything’s so straightforward – adding RAM and thriving. It launched its promised marketplace, where
an M.2 SSD took seconds because Framework has vendors can sell Framework upgrades and expansions.
put them in a sensible place and designed it to be that It’s built up its networks to supply and support laptops
way. And for all those manufacturers who highlight the worldwide. It released a Chromebook version of its
slimness, sturdiness or curviness of their products as laptop, and in 2023 released a 13-inch model, and at
the reason they don’t want you taking them apart, the start of 2024 an all-new 16-inch model that we
Framework has built a fully accessible laptop platform review opposite. It feels like the ball is rolling and has
that still retains a sleek and vaguely sturdy shell. enough momentum that it’s not going to stop. With the
Generic it may be, but this looks nowhere near as Framework 16 offering an upgradable GPU, Framework
clumsy as the DIY chassis of the past, or (again) the is set to take over the gaming world, too.
Framework Laptop 16
Slapping parts together, Dave James takes this
modular laptop with upgradable GPU for a spin.
he Framework 16 is the laptop we’ve always
SPECS
Model:
T wanted. Well, if you put the Framework 16’s
GPU party piece into the Razer Blade 14, you’ve
Performance got the laptop we’ve always wanted, but this is a vital
Pro step down that path. And without Framework, there’s no
CPU: AMD chance of getting there; it’s also incredible this innovative
Ryzen 7 machine works so well even in this first generation.
7840HS Because this is a new breed of notebooks. One that
GPU: AMD ought to pave the way for genuinely upgradable laptops,
Radeon 780M, in almost the same way we have endlessly configurable
AMD Radeon desktop PCs. For all the promise of MXM modules, this
RX 7700S (8GB is the first laptop in which you can replace the graphics
GDDR6, 100W card in six twists of a Framework-supplied screwdriver.
TGP) module Its party piece is the ability to remove the graphics
Mem: 16GB card as easily as you can a desktop PC’s add-in board. It’s
DDR5-5600 all housed in a removable module that slots into the rear, The first Framework Laptop with upgradable GPU.
(2x 8GB) and can also be replaced with a blank housing if you just
SSD: 512GB want to run on the machine’s processor graphics. can have it on either side. If you prefer a left-side
M.2 2280 The promise here is that, much like with Framework’s numpad, this is the first laptop to ever give that option.
PCIe Gen 4 existing mainboard offerings, you’ll eventually be able to There’s also an optional RGB macro-pad to fill that
Display 16-inch, buy a next-gen module that adds a new, more powerful numpad space, too, which is a 24-key clear keycap pad
2,560x1,600, generation of graphics silicon to your machine. You will that you can configure how you like through Framework’s
165Hz, anti- no longer have to buy an entirely new laptop if you want configuration tools. The tools, for both the keyboard and
glare, FreeSync to use a new line of mobile graphics. the optional LED matrix spacers – yeah, you can properly
Comms: AMD glow up your machine – are largely online, which makes it
RZ616 Wi-Fi 6E, Do drop in all very accessible whether you’ve gone for the straight
Bluetooth 5.2 Framework has made it its mission to create a business Windows prebuild or the DIY option and Linux.
Ports: Six on the back of the idea of offering total upgradability This issue with all this modularity is in the final finish.
custom bays with its own laptops, and its Framework 13 machine Where we’ve become used to our laptop chassis hewn
Camera: 1080p, delivered on that for non-gaming notebooks. It’s so far from single pieces of aluminium, the use of spacers
privacy switch three generations into Intel mainboards and has started either side of the trackpad module to allow it to move
Power: Battery offering AMD mobos, too, all able to be dropped into the means there’s a necessary break in the finish. And it
85Whr same machine you might have bought three years ago. doesn’t look great, most especially if you’re offsetting
PSU: 180W But this is Framework’s first stab at a proper gaming the trackpad for a left-sided numpad, where you end
GaN USB laptop with a discrete graphics card, and a modular, user- up with two of the thin aluminium spacers side by side.
Type-C upgradable one at that. It offers the same modular inputs Again, it’s a somewhat inevitable consequence of
Size: on either side of the chassis, except with this larger the ultra-modular design, and while the finish isn’t totally
356x270mm frame, you get space for two more. These are identical to MacBook-perfect, it’s still a compromise we’re absolutely
Weight: 2.4 kg Framework’s other input modules, offering you almost OK with in exchange for all the ease and utility that
with graphics complete choice as to how to configure your machine. comes with Framework’s customisable approach.
module Want to fill all six slots with USB Type-C ports? Go for
it. Need a couple of HDMI and maybe a DisplayPort and
Ethernet connection to boot? No problem. Want to mix
VERDICT
and match depending on whether you’re at home or on DEVELOPER: Framework
the move? They’re as easy to switch as a USB stick. WEB: http://frame.work
It’s a refreshing approach, but the 16-inch goes PRICE: £1,749
further than the original 13-incher in every respect. One
of the things we love the most about the modularity of FEATURES 9/10 EASE OF USE 7/10
the Framework 16 is the configurability of the keyboard. PERFORMANCE 8/10 VALUE 6/10
We’re fine with a mono-colour LED backlight, so the The Framework Laptop 16 is the most customisable laptop
extra RGB options aren’t a huge sell, but the option to we’ve ever seen, with tons of input and port options, and the
have a numpad as and when you want it absolutely is. promise of upgradable graphics.
So, if you just want the standard keyboard on its own,
that’s fine, but shift it over to one side and there’s space Rating 8/10
for a good sized numpad to drop in. And better still, you
Mayank Sharma
is worryingly efficient at
Index QDirStat VokoscreenNG Atop Sleek finding ways to waste time
online, especially after he’s
SimpleX Chat RustDesk UnCiv Naikari rummaged through repos
FILE MANAGER
Index
Version: 3.0.2 Web: https://
mauikit.org/apps/index/
DISK STATISTICS
QDirStat
Version: 1.9 Web: https://github.com/
shundhammer/qdirstat
SCREEN RECORDER
VokoscreenNG
Version: 4.0.0 Web: https://linuxecke.volkoh.
de/vokoscreen/vokoscreen.html
SYSTEM MONITOR
Atop
Version: 2.10.0
Web: www.atoptool.nl
TO-DO
Sleek
Version: 2.0.8 Web: https://github.
com/ransome1/sleek
INSTANT MESSENGER
SimpleX Chat
Version: 5.4.4
Web: https://simplex.chat
If you aren’t
REMOTE DESKTOP using it through
RustDesk
your own server,
RustDesk parses
the connections
through one of
its two servers
based in Germany
Version: 1.2.3 and Kyiv.
Web: https://rustdesk.com
4X STRATEGY
UnCiv
Version: 4.10.4 Web: https://github.
com/yairm210/Unciv
SPACE SHOOTER
Naikari
Version: 0.11.0
Web: https://naikari.github.io
WEB BROWSER
Nyxt
Version: 3.11.1
Web: https://nyxt-browser.com
APP SHORTCUTS
Pin It!
Version: 2.0.3 Web: https://github.
com/ryonakano/pinit
LXF SHELL
Revealing the shell
behind the shell
Part four!
Don’t miss
next issue,
subscribe on
page 16!
In the last iteration of the shell, Ferenc Deák managed
to reveal the password for his home computer…
n the first three parts of our mini series, the such as lib<name>.so, point to the latest version, aiding
handle to the loaded dynamic library, while the latter is command line as an external application, and for this
a function pointer that will be used to call a function feature, we’ll use the cd command as a plugin.
from the library. To keep it simple, at this stage we just 2. Prompt display: the plugin(s) will be called when the
use a void function with no parameters, because C shell prints the prompt for notifying the user to enter a
function pointers can grow to humongous beasts after new command to execute. We will also use the plugin
reaching a certain level of maturity. handling the cd command as an example, by printing
The dlopen function is then used to load the shared the current working directory in the prompt.
library named plugin.so dynamically. The RTLD_LAZY However, we want to keep it simple. In order to
flag indicates that symbol resolution should occur as not to overly confuse, we will stick only to what is
needed during program execution. necessary for presenting the functionality related to
Following the library loading and successful error this tutorial, while keeping the architecture as flexible
testing, which was omitted from the code sequence, as possible to incorporate future features.
the dlsym function is employed to look up the symbol
named “pluginFunction” in the dynamically loaded The interface
library. The result is cast into the function pointer The following interface is in the file plugin.h, which
pluginFunction, enabling subsequent invocation of the we conjured up to introduce the plugin architecture to
specified function, and again we have totally ignored all our shell. The first construct is just a plain enum, for
errors, but to quickly exemplify the usage of the dlerror introducing all the plugin types accessible by the shell:
function, we allowed one line to creep in. It captures enum class PluginClass {
any errors that may have occurred during the dlsym PLUGIN_ALL = 0,
operation, allowing for appropriate error handling. PLUGIN_COMMAND = 1,
After symbol resolution, the pluginFunction is PLUGIN_PROMPT = 2,
invoked, assuming it has a void return type and no PLUGIN_UNKNOWN = 255
parameters. Finally, the dlclose function is called to };
unload the dynamic library, freeing up resources. As you might guess, these are the types that the
In the current iteration of our shell, we will stick to shell supports for the moment, presented a few lines
these basic functions; however, large apps that are above, so let’s not waste more space on this. However,
intended to run on multiple platforms under multiple the following topic will be a lot more intriguing…
OSes are known to have a platform independent
wrapper around these – that’s not the case for us. Decisions, decisions…
Now it’s time to explain a crucial design choice that
A proper introduction programmers must make when embodying a plugin
For a plugin architecture to work properly, the plugins architecture. Certain plugin architectures restrict a
need a proper introduction to the system, so we must particular functionality to a single library, while others
create an interface that is suitable for our plugin loader facilitate the inclusion of multiple functionalities in the
and that needs to be implemented for all the plugins same library. Opting for a more entertaining approach,
that will be loaded by the shell. Each plugin architecture we decided to adopt the latter, necessitating more
is unique – there is no one size fits all methodology. intricate structures while granting increased flexibility.
For the current stage, the following will be the The following structure is introduced to describe a
expansion lines for our shell, which will be incorporated single plugin, offering a specific functionality of the
into pluggable features implemented in the plugins: specific plugin class:
1. Internal command handling: the(se) plugin(s) will be struct PluginDescriptor {
executed before the shell tries to execute the given PluginClass type;
std::string functionName; we’ll enter that trapdoor when we are in front of it. Or
}; above it. It depends…
As the name suggests, this structure describes one The following lines of code might look like black
plugin offering a specific functionality, and to adhere to magic for those uninitiated in the mystical art of C++,
the design decision above, we need the name of the but no worries, we will shed light on them very soon.
function that implements this specific functionality. Behold, these foreboding lines present themselves:
The next section of the header is: struct PluginBase {
extern “C” virtual ~PluginBase() = default;
{ virtual PluginClass getClass() const = 0;
std::vector<PluginDescriptor> };
providePlugins(PluginClass pc); template<typename C> struct Plugin : public
void initialize(); PluginBase {
void destroy(); explicit Plugin(PluginDescriptor pdescriptor) :
} descriptor(pdescriptor) {}
•
Here we declare three functions: PluginDescriptor descriptor;
providePlugins, as the name suggests, provides using CFUNC_PTR = C;
•
the list of plugins that are provided by this library. std::function<CFUNC_PTR> handler;
initialize is the function responsible for initialisation };
•
of the shared library and corresponding plugins. struct CommandPlugin : public Plugin<PLUGIN_
destroy is the function that is called when the shell COMMAND_PTR> {
shuts down, and unloads all the plugins. It can be used CommandPlugin(PluginDescriptor d) : Plugin(d) {}
to properly free the allocated resources for the plugins. PluginClass getClass() const {return
Soon we will see in the implementation of the PluginClass::PLUGIN_COMMAND;}
dirchange plugin offering functionality for the cd };
command how these methods can be properly used. The PluginBase struct defines an abstract
The use of extern “C” in C++ code is a way to base class with a pure virtual function for retrieving
indicate that the functions within that block should be the class type of a plugin. The templated Plugin
treated as having C language linkage rather than C++ struct extends this base, allowing the creation of
linkage. Linkage in this context refers to the rules plugins with specific function pointer types. It
governing how names (such as function names and contains a std::function member for storing the
variable names) are resolved and associated between plugin’s function pointer – in other words, the method
different parts of a program. C and C++ have different with this name will be called. The CommandPlugin
linkage specifications; for example, C++ compilers use structure is a concrete implementation of a plugin that
name mangling to encode additional information about handles the commands, specialising in command-
a function or variable into its name. This is done to related functionality. It inherits from the templated
support function overloading and to encode type Plugin and sets its function pointer type to PLUGIN_
information, while C does not perform name mangling. COMMAND_FPTR, implementing the required
The names of functions are preserved exactly as they getClass() function to denote its class as
appear in the source code, making it more convenient PluginClass::PLUGIN_COMMAND.
for us to use them with the techniques presented. To summarise all this, the purpose of this slightly
confusing class hierarchy is to have a common way
Distinct interface of dealing with the plugins (hence the PluginBase
The next interesting line in the header file is: class) – in other words, to store them and then call
typedef std::string PLUGIN_COMMAND_FPTR(const the corresponding function in the least painful way
std::string&); possible. This will be exemplified by the following
Here we have defined a new type, called PLUGIN_ code in our main.cpp file:
COMMAND_FPTR, which is an alias for a function for(const auto& pc : pluginContainers) {
pointer type that represents a function taking a const for(const auto& p : pc.plugins) {
std::string& parameter and returning a std::string. This if(p->getClass() == PluginClass::PLUGIN_
kind of type alias can be particularly useful when you COMMAND) {
want to define function pointer types concisely, making std::string commandPluginReturns =
the code more readable and maintaining a clear (dynamic_cast<CommandPlugin&&>(*p)).
understanding of the function signature. handler(command);
The command handler plugin will take in a string, if(!commandPluginReturns.empty()) {
representing the command that it is supposed to if(unquotedCharacter(command))
execute, then as per our convention, if it executes the runPipedCommands(splitStringWith
given string successfully as the command the plugin is Delimiter(command, “|”));
supposed to deal with, it will return an empty string, else
otherwise it will return the string itself. runAsSingleCommand(command);
Not all plugins need this interface; for example, a }}}}
plugin that reacts to different keypresses also needs Please note that in this guide we have presented
to receive the pressed key, and the plugin that prints only the internal command handling plugins, so we
something to the prompt needs to have no parameters encourage you to browse the code found at https://
at the current stage where the shell is. But for the github.com/fritzone/lxf-shell to see how the prompt
moment, let’s focus on what we have on the table, and handling plugin is implemented and used, and also to
Develop games
Credit: https://skilldrick.github.io/easy6502
ast month, we looked at the 6502 assembly the final straw was seeing a jmp to a label be out by
If you have
multiple
source files
and are calling
subroutines
from one file to
another, create
a jump table
at the start of
each separate
source file with
a JMP routine
for each routine,
so you don’t
have to worry
Using xa to
about changes
assemble first.64
to those with the -v option.
source files.
Games development
The Commodore 64 is best known for being a games
machine. As well as a three-channel sound chip, it
has eight hardware sprites that can be multiplexed
in software to allow more on screen. Also, there is a
GAME DEVELOPMENT graphics mode; in fact, programmers in the demo
scene have learnt to do remarkable colour graphics.
The author developed several about three months to write. For some examples take a look here: https://bit.ly/
games back in the 1980s. These Dark Empire was first developed lxf313demo.
include Dark Empire, a player as a ZX Spectrum game. A line- There isn’t enough room or time to create a game,
versus computer version of by-line conversion from Z80 to so instead here is an open source arcade game, a
classic Empire, in which you 6502 took one very gruelling simple Tetris by programmer Christian Jauvin – https://
conquer a computer-generated month, including seven all-night github.com/cjauvin. The rest of this article is about the
hidden world starting with one working sessions. There was a edits you need to do to get it to compile with the xa65
city and building armies and very tight deadline to meet! assembler. The original was assembled using a Java
warships. Johnny Reb II was an The games were about 5,000 assembler called KickAssembler, and lines 9-14, which
award-winning American Civil lines long, under 8,000 bytes, detailed that, were removed. All other comments,
War game where Confederates and developed on a Tatung including the original author, have been left in.
are trying to capture a bridge and Einstein; a CP/M computer. A
Union forces are trying to hold parallel cable connected it to CBM-64 try to assemble!
on to it. Bulge is a WWII game in the CBM-64 and a small loader There are a number of 6502 assemblers and they vary
which the computer-played program fetched the data, put it in things like the opcodes for assigning data, constants,
Germans are trying to break in RAM, then jumped to it. They load address, even whether labels have a terminating
through the Ardennes. can be played at C64Online.com. colon. Getting a game to assemble with a particular
With the exception of Dark Just search for Bulge, Dark assembler can be a tedious task if the code you are
Empire, the other two each took Empire or Johnny Reb II. trying to use was not written using that assembler.
Another issue is whether all the code is in one file or
Go for xa65
Here are the instructions to get it assembling under
xa65 without any errors. Comment or remove line 32
and change line 34 to * = $2000 .
Add a jmp main just before line 35, which has the
label frozen:. The label main is where the program
starts and jmp main lets you start it at $2000 and jump Disassembly
straight to the main code. of first.prg.
Merge the file math.asm into tetris.asm; anywhere
will do – in this case, just after the piece_j bytes around
line 105. Remove the .import statement.
The rest of the changes take 10-15 minutes. The 00 - BRK
main change is to edit labels that start with a ! and …
remove the !. These are local labels that xa65 doesn’t The disassembly interprets the 00 value as the BRK
support, so number them by adding a digit or character instruction. It should be possible to have PRG files
– so, when you see !loop, change it to loop1, the next autostart, so that all you need to do is drag a file in Files
!loop label is loop2, and so on. These labels often have on to the Vice window. However, it hasn’t worked so
a + or – depending on whether the branch is forward to far! It’s possible that the PRG format isn’t quite correct.
a local label or backwards. From this you can figure out The screenshot (below) shows the working game
if the branch is backwards or forwards. For instance, running in the Vice emulator. You can use the WASD
line 289 is a !loop and on line 311 there’s a bne !loop-. keys as described in lines 10-14 of tetris.asm to play.
Line 319 is another !loop and on line 325 there’s Have fun!
another bne !loop-. Line 407 has a jmp !continue+
which jumps to the !continue at line 410. Another
change is the .fill on line 35, which became .dsb. This
allocates an array of 1,000 bytes, each set to 0 initially. Once you have
It’s a useful exercise to take someone else’s code learnt 6502
and get it assembling, but if you get fed up, just fetch assembly
the working tetris.asm file on GitHub: https://github. language,
com/David-H-Bolton/Projects/. consider using
If you want to see all the differences between the the CC65
original and the xa65 version, rename the original C compiler
tetris.asm to, say, original.asm and copy it into the https://cc65.
github.io to
same folder as the xa65 tretris.asm. Then run the diff
write code. You
command to see all the differences:
can write 10
$ diff original.asm tetris.asm lines of C in the
This outputs a listing showing the old and new lines. same time as 10
lines of 6502,
Running Tetris on Vice so it’s way more
Open the Vice monitor then do: productive. The
bl “tetris” 0 2000 CC65 compiler
d 2000 outputs 6502
g 2000 assembly and
you can target
The disassembly shows the initial JMP followed by
the Commodore
a thousand BRK statements.
64 and other
4C 2C 2B – JMP $2B2C systems.
00 - BRK Tetris running in the Vice emulator.
Future Publishing Limited, Quay House, The Ambury, Bath, BA1 1UA
Email [email protected]
EDITORIAL
LXF31s4ale
Editor-in-chief Neil Mohr
Art editor Fraser McDermott
Production editor Katharine Davies
will be on
Group editor-in-chief Graham Barlow
Group art director Warren Brown
Tuesday 2nd
Editorial contributors
Desire Athow, Mats Tage Axelsson, Jonni Bidwell, David Bolton,
April 2024
Neil Bothwick, Stuart Burns, James Capell, Christian Cawley,
Alex Cox, Ferenc Deák, Jonas P DeMuro, Nate Drake, Tam Hanna,
Dave James, Paul Lilly, Jon Masters, Nick Peers, Les Pounder,
Michael Reed, Mayank Sharma, Shashank Sharma, Jarred Walton
Cover illustration Magictorch.com
Raspberry Pi is a trademark of the Raspberry Pi Foundation.
Tux credit: Larry Ewing ([email protected]).
Content production Adequate Media Limited
ADVERTISING
Commercial sales director Clare Dove
[email protected]
Advertising director Lara Jaggon
[email protected]
Account director Andrew Tilbury
[email protected]
INTERNATIONAL LICENSING
Head of print licensing Rachel Shaw
Linux Format is available for licensing and syndication.
To find our more contact us at [email protected]
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
MICROSOFT
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 to seven days before contacting us
about a late delivery to [email protected]
CIRCULATION
INVASION!
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
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,
What’s in Wine 9?
Pocketmags library may not have access to the full archive of digital back issues. You will only be able to access the digital
back issues as long as you are an active subscriber.
To purchase single back issues (print format only) visit: magazinesdirect.com (click on 'Single issues' tab) Or email: help@
magazinesdirect.com For further help call: +44(0)330 333 1113 Lines are open Mon- Fri 8.30am-7pm and Sat 10am-3pm
UK time. Magazinesdirect.com is owned and operated by Future Publishing Limited.'
Why work harder when you can work smarter? We test the
If you submit material to us, you warrant that you own the material and/or have the necessary rights/permissions to
supply the material and you automatically 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
Collision detected
We are committed to only using magazine paper derived from responsibly managed, certified forestry and chlorine-free
manufacture. The paper in this magazine was sourced and produced from sustainable managed forests, conforming to
strict environmental and socioeconomic standards.