Articles in Linux Journal cover the range from desktop how-tos to kernel hacking, always balanced to give both newcomers and long-term Linux users maximum enjoyment. See our Web site for an author's guide and list of upcoming topics and deadlines: http://linuxjournal.com/author/index.
News briefs for March 18, 2019.
Khronos today released the OpenXR 0.90 provision specification. From the press release: "OpenXR is a unifying, royalty-free, open standard that provides high-performance access to augmented reality (AR) and virtual reality (VR)—collectively known as XR—platforms and devices. The new specification can be found on the Khronos website and is released in provisional form to enable developers and implementers to provide feedback at the OpenXR forum." And following the release of the OpenXR 0.09 provision specification, Collabora announced Monado: "at the center of Monado is a fully open source OpenXR runtime for Linux. It is the component in the XR software stack that implements the hardware support, it knows how to process non standard input from HMD devices and controllers, it knows how to render to those devices and it provides this functionality via the standard OpenXR API."
Solus 4 Fortitude is now available. This new major release "delivers a brand new Budgie experience, updated sets of default applications and theming, and hardware enablement". Visit the download page to install.
Geary 3.32 was released yesterday. This is a feature release of the GNOME email application and aims to "align Geary's interface better with GNOME 3.32". It has "a new icon, the application menu has been moved to a burger menu in the main window, sender images in conversations are now taken from the the desktop address-book, and those without a custom photo are given a personalised image with initials and background colour based on their name", along with the usual bug fixes and other improvements. To install, visit here.
Linux kernel 5.1-rc1 is out. Linus Torvalds writes, "The merge window felt fairly normal to me. And looking at the stats, nothing really odd stands out either. It's a regular sized release (which obviously means "big" - , but it's not bigger than usual) and the bulk of it (just over 60%) is drivers. All kinds of drivers, the one that stands out for being different is the habanalabs AI accelerator chip driver, but I suspect we'll be starting to see more of that kind of stuff. But there are all the usual suspects too - gpu, networking, block devices etc etc."
Opera recently announced that Opera 60 has entered the beta stream. "Opera 60 beta brings a refreshed interface with light and dark themes inspired by high- and low-key lighting photography, respectively. It will also include a Crypto Wallet in the sidebar." This version is actually merging with Opera 59, and the two versions are being called Reborn 3, which will be in the stable channel soon. See the Opera 60 changelog for more details on the changes.
Create handy command-line utilities in Rust.
This article is about text processing in Rust, but it also contains a quick introduction to pattern matching, which can be very handy when working with text.
Strings are a huge subject in Rust, which can be easily realized by the fact that Rust has two data types for representing strings as well as support for macros for formatting strings. However, all of this also proves how powerful Rust is in string and text processing.
Apart from covering some theoretical topics, this article shows how to develop some handy yet easy-to-implement command-line utilities that let you work with plain-text files. If you have the time, it'd be great to experiment with the Rust code presented here, and maybe develop your own utilities.
Rust supports two data types for working with strings:
String type is for working with mutable strings that
belong to you, and it has length and a capacity property. On the other
str type is for working with immutable strings that you want
to pass around. You most likely will see an
str variable be used as
&str. Put simply, an
str variable is accessed as a reference to some
UTF-8 data. An
str variable is usually called a "string slice" or, even
simpler, a "slice". Due to its nature, you can't add and remove any
data from an existing
str variable. Moreover, if you try to call the
capacity() function on an
&str variable, you'll get an error message
similar to the following:
error[E0599]: no method named `capacity` found for type ↪`&str` in the current scope
Generally speaking, you'll want to use an
str when you want to pass a string
as a function parameter or when you want to have a read-only version
of a string, and then use a
String variable when you want to have a mutable
string that you want to own.
The good thing is that a function that accepts
&str parameters can
String parameters. (You'll see such an example in the
basicOps.rs program presented later in this article.)
Additionally, Rust supports the
char type, which is for representing
single Unicode characters, as well as string literals, which are
strings that begin and end with double quotes.
Finally, Rust supports what is called a
byte string. You can define a new
byte string as follows:
Tails is a live media Linux distro designed to boot into a highly secure desktop environment. Tor is a browser that prevents somebody watching your internet connection from learning what sites you visit, and it prevents the sites you visit from learning your physical location.
Learn why anonymity matters and how you can protect yourself with this Linux Journal Weekend Reading.
Why should clients get all the privacy? Give your servers some privacy too!
How to get and validate the Tails distribution and install it. We will follow up with what Tails can and can't do to protect your privacy, and how to use Tails in a way that minimizes your risk. Then we will finish with some more advanced features of Tails, including the use of a persistent volume (with this feature, depending on your needs, you could conceivably use Tails as your main Linux distribution).
Now that you have Tails installed, let's start using it. Read on to find out how to get started.
In the first two parts on this series, we gave an overview of Tails, including how to get the distribution securely, and once you have it, how to use some of the basic tools. Here, we cover some of the more advanced features of Tails, such as some of its log-in options, its suite of encryption tools and the persistent disk.
The Tor Project presents an effective countermeasure against hostile and disingenuous carriers and ISPs that, on a properly rooted and capable Android device or Linux system, can force all network traffic through Tor encrypted entry points (guard nodes) with custom rules for iptables. This action renders all device network activity opaque to the upstream carrier—barring exceptional intervention, all efforts to track a user are afterwards futile.
The best way to set up Tor on your personal machine.
News briefs for March 15, 2019.
GNOME 3.32 Taipei was released this week. This version represents 6 months of work by the GNOME Community and includes many improvements and new features. The visual style has been refreshed with an brand-new set of app icons. It also "introduces an experimental feature for Wayland desktop sessions that enables fractional scaling". And, data structure improvements in the GNOME desktop have caused a " faster, snappier feel to the animations, icons and top 'shell' panel". See the release notes for more details on all the changes and enhancements.
Canonical yesterday released a new Linux kernel update for Ubuntu 14.04 LTS (Trusty Tahr) to fix a recently discovered vulnerability. According to Softpedia News, the security issue affects Linux kernel 3.13 and is "race condition (CVE-2019-6133) discovered by Jann Horn of Google Project Zero in Linux kernel's fork() system call, which could allow a local attacker to gain access to services storing cache authorizations and run programs with administrative privileges." Users should update immediately.
The Debian GNU/Linux project has extended the date for nomations for the leader post. One nomination has come in so far, Joerg Jaspert, part of the Debian Account Managers team. ITWire reports that nominations were initially slated to close March 16.
Kernel development is truly impossible to keep track of. The main mailing list alone is vast beyond belief. Then there are all the side lists and IRC channels, not to mention all the corporate mailing lists dedicated to kernel development that never see the light of day. In some ways, kernel development has become fundamentally mysterious.
Once in a while, some lunatic decides to try to reach back into the past and study as much of the corpus of kernel discussion as he or she can find. One such person is Joey Pabalinas, who recently wanted to gather everything together in Maildir format, so he could do searches, calculate statistics, generate pseudo-hacker AI bots and whatnot.
He couldn't find any existing giant corpus, so he tried to create his own by piecing together mail archived on various sites. It turned out to be more than a million separate files, which was too much to host on either GitHub or GitLab. He asked the linux kernel mailing list for suggestions on better hosting opportunities. Although he acknowledged, "It's possible I'm the only weirdo who finds this kind of thing useful, but I figured I should share it just in case I'm not."
Joe Perches suggested plumbing the archives at kernel.org/lore.html, which go back decades. But Joey said he'd tried that, and he found it all but impossible to convert those archives to the Mailbox format he wanted. Instead, he'd spent the previous several weeks scraping the lkml.org archive and scripting his own conversion routines.
Konstantin Ryabitsev remarked:
The maildir format is kind of terrible for LKML, because having millions of messages in a single directory is very hard on the underlying FS. If you break it up into multiple folders, then it becomes difficult to search. This is the main reason why we have chosen to go with the public-inbox format, which solves both of these problems and allows for a very efficient archive updating and replication using git.
Meanwhile, Jasper Spaans raised his eyebrows at Joey's statement that he'd gotten more than a million separate files by scraping lkml.org. Jasper said:
First of all, there are more than 3M messages stored in the lkml.org database, so I guess you've missed some messages or something is really broken. Besides, unless you figured out how to get to the raw data, you've just scraped a rendering which discards stuff like pgp signatures etc and has very incomplete headers. Unless you don't care for those of course.
News briefs for March 14, 2019.
Tetrate, a new enterprise-grade service mesh from the creators of gRPC and Istio, launched yesterday. Varun Talwar, CEO of Tetrate and formerly co-creator of Istio at Google, says "Tetrate's mission is to create a secure and flexible application networking layer to help enterprises transition from their decades-old rigid networking stack. Our tools and technologies will help customers with availability and manageability of their applications as they undergo this transformation." In addition, "Tetrate is launching with $12.5 million in funding from Dell Technologies Capital, as well as from participating investors 8VC, Intel Capital, Rain Capital, and Samsung NEXT." It also plans to use the funding to "extend its open-source leadership and further contribute to the open-source community". See this ITOps Times article for more information.
Godot 3.1 was released yesterday. This new version of the open-source game engine includes the OpenGL ES 2.0 renderer, optional typing in GDScript, a revamped inspector, revamped 2D editor and much more. You can download it from here and view the release trailer here.
Android Q Beta was released yesterday. From the Android Developers Blog: "Building on top of efforts like Google Play Protect and runtime permissions, Android Q brings a number of additional privacy and security features for users, as well as enhancements for foldables, new APIs for connectivity, new media codecs and camera capabilities, NNAPI extensions, Vulkan 1.1 support, faster app startup, and more." Enroll here to get Android Q Beta updates over the air on any Pixel device.
In honor of Pi Day, the folks at RaspberryPi.org are holding a Raspberry Pi 3B+ live stream event on YouTube featuring "hours upon hours of our favourite Pi in all its glorious wonderment". And there's more: at some point today, they’re "going to add a unique hashtag to this live stream, and anyone who uses said hashtag on Instagram and/or Twitter* before midnight tonight (GMT) will be entered into a draw to win a Raspberry Pi Model 3B+ and an official case signed by Eben Upton himself."
For this article, I want to introduce a piece of software I've actually used recently in my own work. My new day job involves studying the ionosphere using an instrument called an ionosonde. This device is basically a giant radio transmitter that bounces radio waves off the ionosphere to see its structure and composition. Obviously, an important part of this is knowing the radiation pattern of the various transmitters and receivers.
Several methods exist for modeling the electromagnetic fields around conductors, but here I'm covering one called NEC2 (Numerical Electromagnetics Code). It originally was developed in FORTRAN at the Lawrence Livermore National Laboratory in the 1970s. Since then, it's been re-implemented several times in various languages. Specifically, let's look at xnec2c. This package implements NEC2 in C, and it also provides a GTK front end for interacting with the core engine.
xnec2c should be available in most Linux distributions. In Debian-based distributions, you can install it with the command:
sudo apt-get install xnec2c
Once it's installed, you can start it with
default display doesn't show anything until you actually start using it.
Figure 1. Launching xnec2c gives you a pretty boring starting point.
xnec2c's history still affects how it behaves to the present day. This is most clear when you look at the input file's format. The basic structure is based on the idea of a punch card, where each "command" to xnec2c is given by a command card—a definite holdover from its FORTRAN roots. Luckily, the GTK front end to xnec2c provides a reasonably functional way of building up these input files.
Several example files should be available with your installation of xnec2c. In my Ubuntu distribution, they're located in /usr/share/doc/xnec2c/examples. These input files have a filename ending of ".nec". Select one as a starting off point to play with xnec2c, and then go ahead and make the required alterations necessary for your own project.
Figure 2. Loading an input file, you begin with a geometric view of the relevant antenna wires, other conductors and any ground planes.
The central window pane provides a geometric view of the actual antenna structure in three dimensions. You can click and drag the diagram to rotate the view and see it from all angles. There are two larger buttons at the top of the window, named Currents and Charges. Selecting them alternately will show either the distribution of currents or the distribution of charges caused by the driving current.
News briefs for March 13, 2019.
Streamlio announces Streamlio Cloud, "its new cloud-native service for fast data". Streamlio Cloud is powered by Apache Pulsar and runs within Amazon Web Services. The press release quotes Streamlio Co-Founder Karthik Ramasamy: "Streamlio's new service makes the unique cloud-native architecture, performance, and flexibility of Apache Pulsar accessible to any organization in just a few clicks and without operational burdens, helping organizations move away from the plodding batch-oriented world to the world of data-driven applications that operate at the speed of data." See the Streamlio Cloud page for more information.
Firefox yesterday announced its new Firefox Send feature. According to the Mozilla Blog post, "Send is a free encrypted file transfer service that allows users to safely and simply share files from any browser. Additionally, Send will also be available as an Android app in beta later this week." You also can decide when the link expires, select the number of downloads and optionally add a password for more security.
The GraphQL Foundation announces collaboration with the Joint Development Foundation (which recently joined the Linux Foundation) to drive open source and open standards. From the press release: "GraphQL Foundation encourages contributions, stewardship, and a shared investment from a broad group in vendor-neutral events, documentation, tools, and support for the data query language. The following companies Apollo, AWS, Butterfly Network, Dgraph Labs, Facebook, Gatsby, GraphZen, Hasura, IBM, Intuit, Neo4j, Novvum, PayPal, Pipefy, Salsify, Solo.io and Thicit are joining as members to advance GraphQL as an industry specification for designing more effective APIs....GraphQL is the first Linux Foundation project to benefit from the JDF and Linux Foundation collaboration, which provides open source projects with a swift path to standardization for open specifications. Developers will have an open GraphQL specification and open source software implementations available for designing conformant APIs."
The Fedora Project is now sponsoring Libravatar, the "free and open source service that anyone can use to host and share an avatar (profile picture) to other websites". The Libravatar blog describes the project as "part of a movement working to give control back to people, away from centralized services and the organizations running them. It addresses a simple problem: putting a face on an email address." The Libravatar project had announced it was shutting down about a year ago, but the Fedora Project worked with the community to keep it alive.
The Linux Foundation yesterday announced CommunityBridge, "a new platform created to empower open source developers—and the individuals and organizations who support them—to advance sustainability, security, and diversity in open source technology". The initial launch is offering CommunityBridge Funding ("enabling developers to transparently raise and spend funding"), CommunityBridge Security ("providing transparency into potential vulnerabilities and fixes") and CommunityBridge People ("enabling easy connections of mentors and prospective mentees interested in getting involved in projects and advancing diversity"). Project maintainers and core developers can apply at communitybridge.org.
Daylight Linux is the only official distribution for the Raspberry Pi to work with the Fluxbox interface. With Fluxbox, Daylight Linux is one of the lightest and fastest distributions for all Raspberry Pi models.
Many programs, games and system tools were developed during a long year of work in Python 3 to create version 3.
Figure 1. The System at Boot
The system works with autologin, but you also can use these login/passwords: "root"/"toor" and "Daylight"/"toor".
Figure 2. The Daylight Linux Menu
Figure 3. The Daylight Linux Desktop with System Information
Figure 4. The Daylight Linux File Manager
A live version also is available for computers. This version aims to provide Debian-based Linux with the lightness of Daylight Linux.
Daylight Linux version 3 runs on all Raspberry Pi models, and it's based on Debian Buster. Visit the official website for more information and to download.
News briefs for March 12, 2019.
The Linux Foundation yesterday announced it is forming the CHIPS Alliance project to "host and curate high-quality open source code relevant to the design of silicon devices. CHIPS Alliance will foster a collaborative environment that will enable accelerated creation and deployment of more efficient and flexible chip designs for use in mobile, computing, consumer electronics, and Internet of Things (IoT) applications." According to the press release, Esperanto Technologies, Google, SiFive and Western Digital, are all early backers of the CHIPS Alliance, and all are "committed to both open source hardware and continued momentum behind the free and open RISC-V architecture."
The Dream Machine is a Raspberry Pi-driven vending machine recently launched by FOODBEAST and Nissin. RaspberryPi.org reports that the Dream Machine "retrofit vending machine" is part of a digital viral marketing campaign", and it "dispenses ramen noodles, video games, and swag in exchange for the use of an Instagram hashtag". So far, the Dream Machines have appeared in Torrance, California, and Las Vegas, Nevada.
Purism announces that along with three kill switches, Librem 5 smartphone also will have a new feature called "Lockdown Mode". As far as the kill switches, one is for cameras and microphone, one for WiFi and Bluetooth, and one for cellular baseband. Lockdown Mode goes further and "extends our normal kill switches to provide even more security and privacy". Purism's Chief Security Officer Kyle Rankin writes, "When in Lockdown Mode, in addition to powering off the cameras, microphone, WiFi, Bluetooth and cellular baseband we also cut power to GNSS, IMU, and ambient light and proximity sensors. Lockdown Mode leaves you with a perfectly usable portable computer, just with all tracking sensors and other hardware disabled. If you switch any of the hardware kill switches back on, the hardware that corresponds to that switch powers on along with GNSS, IMU, and ambient light and proximity sensors."
Avidemux 2.7.2 was released yesterday. This version of the video editor includes new demuxers and encoders, as well as the usual bugfixes. See also the UbuntuHandbook post for links to downloads and more install information.
sway 1.0 was released yesterday. This marks the first stable release of sway, and "represents a consistent, flexible, and powerful desktop environment for Linux and FreeBSD". Creator Drew DeVault writes, "Sway 1.0 adds a huge variety of features which were sorely missed on 0.x, improves performance in every respect, offers a more faithful implementation of Wayland, and exists as a positive political force in the Wayland ecosystem pushing for standardization and cooperation among Wayland projects." The GitHub page for sway 1.0 is here.