Ubuntu 19.04 «Disco Dingo» Beta Released, New Artwork for Mageia 7, Zorin OS Beta 15 Now Available, vChain Launches CodeNotary, and OpenSource Summit and Embedded Linux Conference Deadline for Proposals Is April 2

News briefs for March 29, 2019.

The Ubuntu team announced the beta pre-release of the Ubuntu 19.04 "Disco Dingo" Desktop, Server and Cloud products. The beta release also includes images for Kubuntu, Lubuntu, Ubuntu Budgie, UbuntuKylin, Ubuntu MATE, Ubuntu Studio and Xubuntu. Note that "The beta images are known to be reasonably free of showstopper CD build or installer bugs, while representing a very recent snapshot of 19.04 that should be representative of the features intended to ship with the final release expected on April 18th, 2019." To upgrade to the beta from Ubuntu 18.10, follow the instructions here And to download the images, go here.

New artwork is coming for Mageia 7. The Mageia blog announced that the voting has concluded they are beginning to integrate the new artwork into Mageia 7 in preparation for its release. You can see the winning photographs here.

Zorin recently announced the release of the next major version of the OS: Zorin OS 15 beta. From the Zorin Blog: "Every aspect of the user experience has been re-considered and refined in this new release, from how apps are installed, to how you get work done, to how it interacts with the devices around you. The result is a desktop experience that combines the most powerful desktop technology with the most user-friendly design." Note that this is a pre-release and not recommended for use on production machines. You can download the beta here.

vChain recently released CodeNotary, a "global, de-centralized, blockchain secured" alternative to code-signing certificates. CTO and co-founder of vChain writes, "We at vChain, created CodeNotary to protect your hard work, increase user confidence and trust without spending a fortune. If you provide non-commercial software we provide a life-long free license of CodeNotary." See these two articles "vcn command line for vChain CodeNotary to sign code and more" and "With CodeNotary, you never have to pay for code signing certificates again" for more details. Non-commercial project owners and developers can get an "all-time" free license here

The deadline to submit a proposal for a talk at OpenSource Summit and Embedded Linux Conference is April 2, 2019. The two events will be held in San Diego, California, August 21–23, 2019. For OpenSource Summit proposals, go here, and for the Embedded Linux Conference, go here.

Creating Linux Command-Line Tools in Clojure

Clojure logo

Learn how the leiningen utility can help you manage your Clojure projects.

This article is a gentle introduction to the Clojure Functional Programming language that is based on LISP, uses the Java JVM and has a handy REPL. And, as Clojure is based on LISP, be prepared to see lots of parentheses!

Installing Clojure

You can install Clojure on a Debian Linux machine by executing the following command as root or using sudo:

# apt-get install clojure

Finding the version of Clojure you are using is as simple as executing one of the following commands inside the Clojure REPL, which you can enter by running clojure:

# clojure
Clojure 1.8.0
user=> *clojure-version*
{:major 1, :minor 8, :incremental 0, :qualifier nil}
user=> (clojure-version)
user=> (println *clojure-version*)
{:major 1, :minor 8, :incremental 0, :qualifier nil}

The first command gets you into the Clojure REPL, which displays the user=> prompt and waits for user input. The remaining three commands that should be executed within the Clojure REPL will generate the same output, which, in this example, shows that Clojure version 1.8.0 is being used. So, if you're following along, congratulations! You have just run your first Clojure code!

The leiningen Utility

The first thing you should do after getting Clojure is to install a very handy utility named leiningen, which is the easiest way to use and manage Clojure projects on your Linux machine. Follow the instructions at leiningen.org or use your favourite package manager to install leiningen on your Linux machine. Additionally, if you are using Clojure all the time and working with large Clojure projects, tools like Jenkins and Semaphore will automate your build and test phases and save you lots of time.

After installing leiningen, use the lein command (which is the name of the executable file for the leiningen package) to create a new project named hw:

$ lein new hw
Generating a project called hw based on the 'default' template.
The default template is intended for library projects,
not applications. To see other templates (app, plugin, etc),
try `lein help new`.

The preceding command will create a new directory named hw that will contain files and other directories. You'll need to make some changes to some of the project files in order to execute the project. First, you'll need to edit the project.clj that can be found inside the hw directory and make it as follows:

OpenDaylight Neon Released, Debian Welcomes Applications for Outreachy and GSoC, Odroid-N2 SBC Now on Sale, CloudFlare Launches BoringTun and RaspAnd Pie 9 Now Available

News briefs for March 28, 2019.

LF Networking yesterday announced the release of OpenDaylight Neon. From the press release, "The Linux Foundation's first networking project and now part of LFN, OpenDaylight was founded in 2013 as an open source framework to accelerate adoption, foster innovation, and create a more open and transparent approach to SDN. Today, ODL has become the most pervasive open source SDN controller that helps power over 1B global network subscribers. Its 10th release, OpenDaylight Neon, demonstrates industry commitment to fostering an open, scalable and interoperable networking solution and supporting ecosystem of developers, integrators, and users."

Debian is welcoming applicants for Outreachy and GSoC. The application period for the May 2019 to August 2019 round of Outreachy has been extended until April 2, and Debian offers the following projects: "Continuous Integration for biological applications inside Debian", "Debian Continuous Integration: user experience improvements" and "Reproducible Builds". See Debian's Outreachy Wiki page for more information on how to apply. The application period for Google Summer of Code is open until April 9th. Students should see Debian's GSoC Wiki for more information on how to submit their applications.

The Odroid-N2 SBC has gone on sale for $63 (2GB RAM) or $79 (4GB) and will begin shipping on April 3. LinuxGizmos reports that this open-spec SBC from Harkernel "features a powerful new system-on-chip that has yet to appear on an open-spec hacker board: the Amlogic S922X." In addition, the Odroid-N2 "is available with 64-bit Ubuntu 18.04 LTS with Linux 4.9.162 LTS and Android 9 Pie 'with full source code BSP and pre-built image together.'" See Hardkernel's $63 (2GB RAM) and $79 (4GB) pages and the Odroid-N2 Wiki for more details.

CloudFlare launches "BoringTun", a Rust-written WireGuard userspace implementation. Phoronix reports that "CloudFlare took to creating BoringTun as they wanted a user-space solution as not to have to deal with kernel modules or satisfying certain kernel versions. They also wanted cross platform support and for their chosen implementation to be very fast, these choices which led them to writing a Rust-based solution." See also the CloudFlare blog for more details.

RaspAnd Pie 9 was released recently. Softpedia News reports that this version of the RaspAnd OS supports Android 9.0, "allowing you to run the mobile OS from Google on your tiny Raspberry Pi 3 Model B and Raspberry Pi 3 Model B+ computers". The RaspAnd Build 190315 includes "the Linux 4.14.61 kernel and excellent Wi-Fi support for both Raspberry Pi 3 models". You can purchase RaspAnd Pie 9 from here for $9.

Build a Custom Minimal Linux Distribution from Source, Part II

Follow along with this step-by-step guide to creating your own distribution.

In an article in the June 2018 issue of LJ, I introduced a basic recipe for building your own minimal Linux-based distribution from source code packages. The guide started with the compilation of a cross-compiler toolchain that ran on your host system. Using that cross-compiler, I explained how to build a generic x86-64 target image, and the Linux Journal Operating System (LJOS) was born.

This guide builds on what you learned from Part I, so if you haven't already, be sure to go through those original steps up to the point where you are about to package the target image for distribution.


Here's a quick review the terminology from the first part of this series:

  • Host: the host signifies the very machine on which you'll be doing the vast majority of work, including cross-compiling and installing the target image.
  • Target: the target is the final cross-compiled operating system that you'll be building from source packages. You'll build it using the cross-compiler on the host machine.
  • Cross-Compiler: you'll be building and using a cross-compiler to create the target image on the host machine. A cross-compiler is built to run on a host machine, but it's used to compile for an architecture or microprocessor that isn't compatible with the target machine.

Gathering the Packages

To follow along, you'll need the following:

  • busybox-1.28.3.tar.bz2 (the same package used in Part I).
  • clfs-embedded-bootscripts-1.0-pre5.tar.bz2 (the same package used in Part I).
  • Dropbear-2018.76.tar.bz2.
  • Iana-etc-2.30.tar.bz2.
  • netplug-
  • sysstat-12.1.1.tar.gz.

Note: I ended up rebuilding this distribution with the 4.19.1 Linux kernel. If you want to do the same, be sure to install the development package of the OpenSSL libraries on your host machine or else the build will fail. On distributions like Debian or Ubuntu, this package is named libssl-dev.

Fixing Some Boot-Time Errors

After following along with Part I, you will have noticed that during boot time, a couple errors are generated (Figure 1).

Figure 1. Errors generated during the init process of a system boot.

Vivaldi 2.4 Released, Chrome OS Stable Channel Updated to Version 73.0.3683.88, EU Parliament Approves the Directive on Copyright, Red Hat Announces Red Hat Satellite 6.5 Beta and Qtum Published an Arch User Repository Package for Arch Linux Systems

News briefs for March 27, 2019.

Vivaldi 2.4 has been released. According to the ghacks.net post, this new version includes "new toolbar customization options, bookmark management improvements, and support for multiple user profiles among other features." You can download Vivaldi from here.

The Chrome OS stable channel was updated to version 73.0.3683.88 this week. According to the Google Blog, this version includes several bug and security fixes, and several new features, such as better Chrome OS out-of-memory management, reports additional telemetry data for Chrome OS devices, developers can share files/folders with Linux apps and much more.

EU Parliament yesterday approved the Directive on Copyright in the Digital Single Market (the vote was 348–274). Creative Commons reports that "It retains Article 13, the harmful provision that will require nearly all for-profit web platforms to get a license for every user upload or otherwise install content filters and censor content, lest they be held liable for infringement. Article 11 also passed, which would force news aggregators to pay publishers for linking to their stories."

Red Hat today announced that Red Hat Satellite 6.5 beta is now available to current Satellite customers. From the announcement, "Red Hat Satellite is a scalable platform to manage patching, provisioning, and subscription management of your Red Hat infrastructure, regardless of where it is running. The Satellite 6.5 beta is focused on adding Red Hat Enterprise Linux 8 as a supported version, so that when RHEL 8 is generally available our customers can immediately begin using it." Note that Satellite Beta 6.5 must be installed on RHEL 7. Support for RHEL 8 is coming later. Features the company is asking customers to review during beta testing include RHEL 8 support (application streams, system purpose and provisioning), content management, usability and security. Customers with Red Hat Satellite subscriptions can sign up here for the beta.

Qtum, the open-source public blockchain platform, yesterday published an Arch User Repository (AUR) package for Arch Linux-based systems. From the press release, "Developers now have access to complete and working installation of Qtum using the Arch Linux tools that they are accustomed to. Qtum gives developers the ability to use to open-source software by ensuring that the Qtum core technology runs across Arch or Arch Linux-based distributions. Focused on simplicity, Qtum's AUR package compiles Qtum on an Arch Linux system and generates a menu entry available on all desktops." See this Qtum blog post for more information on the AUR package.

Downsides to Raspberry Pi Alternatives

Learn about some of the risks when choosing an alternative to a Raspberry Pi for your project.

I have a lot of low-cost single-board computers (SBCs) at my house. And, I've written a number of articles for Linux Journal that discuss how I put those computers to use—whether it's controlling my beer fridge, replacing a rackmount file server, acting as a media PC connected to my TV or as an off-site backup server in my RV (plus many more). Even more recently, I wrote a "Pi-ventory" article where I tried to count up just how many of these machines I had in my home.

Although the majority of the SBCs I use are some form of Raspberry Pi, I also sometimes use Pi alternatives—SBCs that mimic the Raspberry Pi while also offering expanded features—whether that's gigabit Ethernet, faster CPUs, SATA ports, USB3 support or any number of other improvements. These boards often even mimic the Raspberry Pi by having "Pi" in their names, so you have Orange Pi and Banana Pi among others. Although Pi alternatives allow you to solve some problems better than a Raspberry Pi, and in many cases they provide hardware with better specifications for the same price, they aren't without their drawbacks. So in this article, I take a look at the downsides of going with a Pi alternative based on my personal experience.

Third-Party Support

The initial Raspberry Pi was a runaway success, and all of the subsequent models have sold incredibly well. There are only a few variants on the Raspberry Pi platform, and later hardware upgrades have done a good job at maintaining backward-compatibility where possible (in particular with overall board dimensions and placement of ports). There also have been only a few "official" Raspberry Pi peripherals through the years (the camera being the best example). When you have this many of a particular hardware device out in the world, and the primary vendor is mostly focused on the hardware itself, you have a strong market for add-ons and peripherals from third parties.

The secondary Raspberry Pi market is full of cases, peripherals and add-on hardware like USB WiFi dongles that promise to be compatible out of the box with earlier models that didn't include WiFi. Adafruit is a good example of an electronics vendor who has jumped into the Raspberry Pi secondary market with a lot of different hobbyist kits that feature the Raspberry Pi as the core computing and electronics platform. That company and others also have created custom add-on shields intended to stack on top of the Raspberry Pi and add additional features including a number of different screen options, sensors and even cellular support. There's even a company that offers a case to turn a Raspberry Pi into a small laptop.

Canonical Announces Full Enterprise Support for Kubernetes 1.14, Critical Security Update for Mozilla Thunderbird, Feral Interactive Releasing DiRT 4 for Linux March 28, Telegram Messaging Announces New Privacy Feature and Scalyr Launches PowerQueries

News briefs for March 26, 2019.

Canonical yesterday announced "full enterprise support for Kubernetes 1.14 using kubeadm deployments, its Charmed Kubernetes, and MicroK8s, its popular single-node deployment of Kubernetes". The Ubuntu Blog post quotes Carmine Rimi, Kubernetes product manager at Canonical: "'With this release, Canonical makes sure all container orchestration deployments and developers on Ubuntu benefit from the latest features of Kubernetes, as soon as they become available upstream.'" New features in Kubernetes 1.14 include Windows Node support, improved kubctl plugin system, durable local storage management and more.

Mozilla just released a critical security update for Thunderbird. Softpedia News reports that version 60.6.1 of Mozilla Thunderbird addresses two different security flaws, and that "both security vulnerabilities are marked with a critical severity rating, which means that users should deploy the patches as soon as possible." See the advisory for details.

Feral Interactive announces that DiRT 4 will be released for Linux and macOS on March 28th. DiRT was originally developed and published by Codemasters for PC and consoles. From the press release, "DiRT 4 delivers the intense thrill of all-terrain motorsport in an electrifying mix of disciplines. Players will hurtle through point-to-point Rally races, compete in events from the official FIA World Rallycross Championship, push trucks and buggies to the limit in exhilarating Landrush battles, and put their precision steering skills to the test in Joyride challenges." You can view the trailer here and preorder from the Feral Store for $59.99.

Telegram Messaging recently announced a new privacy feature that allows you to delete sent messages completely. According to LinuxInsider, the Telegram instant messaging service now lets you do two things: "First, it removes the previous 48-hour time limit for removing anything a user wrote from the devices of participants. Second, it lets users delete entire chats from the devices of all participating parties."

Scalyr yesterday announced PowerQueries, the company's first project launch of 2019. According to the press release, PowerQueries is "a new set of advanced log search functionality that leverages its existing real-time data processing engine so you can transform your data on the fly. PowerQueries lets users seamlessly pivot from facet-based search to complex log search operations for complicated data sets, such as grouping, transformations, filtering and sorting, table lookups and joins, enabling them to create sophisticated data processing pipelines."

Why We Need Our Nonprofits

sfc and lf logos

A confession: before I heard Bradley Kuhn's talk at Freenode.live last November, I didn't know that HDMI was a proprietary interface. I just assumed that HDMI was like VGA, USB and dozens of other standardized ways to connect the jacks on two devices through a cable with plugs at both ends. I did assume a cabal of companies was behind HDMI, but I didn't know that only "adopters" could make HDMI stuff, and that being an adopter required paying serious money to something called HDMI Licensing LLC.

I also didn't know there was a FLOSS story behind VGA. "We spent probably two decades getting VGA just to work everywhere", Bradley explained. And now, even though most projectors still respect VGA, "the presumed setup" for a presenter, he said, "is a proprietary HDMI connector". He didn't like that and now I don't either.

Could we have prevented HDMI from becoming what it is? Can we prevent the all-proprietary future of hardware and interfaces from coming to pass? This is a huge question, since the whole tech world seems to be moving in an embedded direction, with Linux and FLOSS goods (and values) buried deep inside proprietary and closed devices.

Bradley works with the Software Freedom Conservancy, a non-profit home and organizational infrastructure for FLOSS projects. It's an essential service. Git is there. So are Boost, Busybox, Samba, Squeak, Sugar, Wine and many others.

Episode 17: Be Afraid. Be Very Afraid.

Episode 17: Be Afraid. Be Very Afraid. cover image

Katherine Druckman and Doc Searls talk to Bob Erdman, Security Product Manager for Helpsystems about Linux security threats.

Links mentioned:

Subscribers: Auto-Download Linux Journal From the Command Line (v2.0)

automatically download Linux Journal

There's an old saying, "anything worth doing, is worth automating"—or something like that. Downloading and reading Linux Journal always has been worth doing, and now you can automate it with our autolj script, which you can get here (updated to version 2.0, see the end of this article for a list of feature enhancements).

Follow the below few simple steps and you can download the entire magazine as a PDF, .epub or .mobi file with the greatest of ease each month. New to version 2.0 of this script, we've added the ability for you to pull down an individual Linux Journal article from the most recent issue within a terminal window (sometimes just reading one article at a time makes our wonderfully lengthy issues easier to get through!)

1) First download the script and save it somewhere; ~/bin is a good choice. You can name it whatever you like; it doesn't need to be called autolj.sh.

2) Open a terminal/shell and execute the following commands:

$ chmod +x ~/bin/autolj.sh
$ ~/bin/autolj.sh --init
Enter the email and zip/postal code associated
with your Linux Journal subscription
EMail: you@example.com    # Enter your email address
Zip  : 88888              # Enter your zip/postal code
Creating initial config file.
Change your preferences in '/home/YOU/.config/autolj.cfg'.
Sample crontab configuration is in '/home/YOU/.config/autolj.crontab'.

If you want to run the script from cron automatically each month, you can do this:

$ cp /home/YOU/.config/autolj.crontab mycrontab
$ crontab -l >>mycrontab
$ crontab 

When you first run the script, use the --init command-line option to initialize the configuration file for the script. It will prompt for the email and zip/postal code associated with your Linux Journal subscription.

It saves that information in a file named ~/.config/autolj.cfg (if you saved the script with a different name, the base name of the config file will match the name that you saved the script under).

You can edit the configuration file with any text editor that you have on hand, or you can rerun the script with the --init option to re-create the config file (any existing changes that you've made will be lost).

The config file is a bash script that is sourced by the autolj script, so maintain valid bash syntax in the file. The config file contains a few other options that you may also want to change (the default value for each is shown):

EU Copyright Directive Vote, GNU nano 4.0 Released, Redox OS 0.5.0 Announced, Sailfish OS 3.0.2 «Oulanka» Now Available and Linux Kernel 5.1-rc2 Released

News briefs for March 25, 2019.

Members of the European Parliament vote tomorrow on the Directive on Copyright. Those in the EU can go to SaveYourInternet to ask their representatives to vote against Article 17 (previously Article 13). See this Creative Commons blog post for more information. From the post: "The dramatic negative effects of upload filters would be disastrous to the vision Creative Commons cares about as an organisation and global community."

GNU nano 4.0 "Thy Rope of Sands" was released yesterday. Changes in this new version of the GNU nano text editor include overlong lines are no longer hard-wrapped automatically, smooth scrolling is now the default, newline characters are no longer added at the end of buffer and much more. You can download version 4.0 from here.

Redox OS 0.5.0 was released yesterday. From the announcement: "It has been one year and four days since the last release of Redox OS! In this time, we have been hard at work improving the Redox ecosystem. Much of this work was related to relibc, a new C library written in Rust and maintained by the Redox OS project, and adding new packages to the cookbook. We are proud to report that we have now far exceeded the capabilities of newlib, which we were using as our system C library before."

Sailfish OS 3.0.2 "Oulanka" is now available. Named after the Oulanka national park in Lapland and the Northern Ostrobothnia regions of Finland, this new version fixes more than 44 bugs. In addition, "With this new update you will find that the Top Menu has a new switch for silencing ringtones and there's a new battery saving mode to make the most out of low battery in those moments you need to stretch productivity. Email app supports now sending read receipts to inform that you have read the senders' email. Connectivity was improved in terms of firewall and global proxy. As for the user interface, home screen had memory optimizations for handling wallpapers, freeing memory for running other apps."

Linux 5.1-rc2 was released yesterday. Linus Torvalds writes: "Nothing particularly stands out. Yes, we had some fixes for the new io_ring code for issues that were discussed when merging it. Other than that, worth noting is that the bulk of the patches are for tooling, not the core kernel. In fact, about two thirds of the patch is just for the tools/ subdirectory, most of it due to some late perf tool updates. The people involved promise they're done."

Fun with Mail Merge and Cool Bash Arrays

Creating a sed-based file substitution tool.

A few weeks ago, I was digging through my spam folder and found an email message that started out like this:

Dear #name#
Congratulations on winning the $15.7 million lottery payout!
To learn how to claim your winnings, please...

Obviously, it was a scam (does anyone actually fall for these?), but what captured my attention was the #name# sequence. Clearly that was a fail on the part of the sender who presumably didn't know how to use AnnoyingSpamTool 1.3 or whatever the heck he or she was using.

The more general notation for bulk email and file transformations is pretty interesting, however. There are plenty of legitimate reasons to use this sort of substitution, ranging from email newsletters (like the one I send every week from AskDaveTaylor.com—check it out!) to stockholder announcements and much more.

With that as the inspiration, let's build a tool that offers just this capability.

The simple version will be a 1:1 substitution, so #name# becomes, say, "Rick Deckard", while #first# might be "Rick" and #last# might be "Deckard". Let's build on that, but let's start small.

Simple Word Substitution in Linux

There are plenty of ways to tackle the word substitution from the command line, ranging from Perl to awk, but here I'm using the original UNIX command sed (stream editor) designed for exactly this purpose. General notation for a substitution is s/old/new/, and if you tack on a g at the end, it matches every occurrence on a line, not only the first, so the full command is s/old/new/g.

Before going further, here's a simple document that has necessary substitutions embedded:

$ cat convertme.txt

Dear #name#, I wanted to start by again thanking you for your
generous donation of #amount# in #month#. We couldn't do our
work without support from humans like you, #first#.

This year we're looking at some unexpected expenses,
particularly in Sector 5, which encompasses #state#, as you
know. I'm hoping you can start the year with an additional
contribution? Even #suggested# would be tremendously helpful.

Thanks for your ongoing support. With regards,

Rick Deckard
Society for the Prevention of Cruelty to Replicants

Scan through it, and you'll see there's a lot of substitutions to do: #date#, #name#, #amount#, #month#, #first#, #state# and #suggested#. It turns out that #date# will be replaced with the current date, and #suggested# is one that'll be calculated as the letter is processed, but that's for a bit later, so stay tuned for that.

CodeWeavers Announces CrossOver 18.5.0, RaspEX Kodi Build 190321 Released, Seven Devices from ThinkPenguin Receive the FSF’s Respects Your Freedom Certification, GNU Parallel 20190322 Is Out and Facebook Stored Millions of Passwords in Plain Text

News briefs for March 22, 2019.

CodeWeavers announces CrossOver 18.5.0 for Linux and macOS, updating Wine to version 4.0. In addition, CrossOver 18.5 includes "the FAudio library to provide superior audio support for games", "resolves several Office 2010 bugs related to activation and licensing", "supports the very latest release of Office 365" and "includes preliminary support for OneNote 2016 on Linux". Linux users can download it from here.

RaspEX Kodi Build 190321 was released yesterday. extonlinux writes, "In RaspEX Kodi I've added the LXDE Desktop with many useful applications such as VLC Media Player and NetworkManager. Makes it easy to configure your wireless network. I've also upgraded Kodi to version 18.1 Leia, which makes it possible to include useful addons such as Netflix, Plex and Amazon Video. Which I've done." You can download RaspEX Kodi for free from SourceForge.

The FSF awarded seven devices from ThinkPenguin with its Respects Your Freedom (RYF) certification. The devices include "The Penguin Wireless G USB Adapter (TPE-G54USB2), the Penguin USB Desktop Microphone for GNU/Linux (TPE-USBMIC), the Penguin Wireless N Dual-Band PCIe Card (TPE-N300PCIED2), the PCIe Gigabit Ethernet Card Dual Port (TPE-1000MPCIE), the PCI Gigabit Ethernet Card (TPE-1000MPCI), the Penguin 10/100 USB Ethernet Network Adapter v1 (TPE-100NET1), and the Penguin 10/100 USB Ethernet Network Adapter v2 (TPE-100NET2)". This certification means that "products meet the FSF's standards in regard to users' freedom, control over the product, and privacy."

GNU Parallel 20190322 ("FridayforFuture") has been released. You can download it from here. New in this release: "SIGTERM is changed to SIGHUP", "SIGTERM SIGTERM is changed to SIGTERM", it now includes a cheat sheet (parallel_cheat.pdf) and more, plus bug fixes and man page updates.

And if you haven't already heard, Facebook stored hundreds of millions of user passwords in plain text for years. KrebsonSecurity reports that "Hundreds of millions of Facebook users had their account passwords stored in plain text and searchable by thousands of Facebook employees—in some cases going back to 2012. Facebook says an ongoing investigation has so far found no indication that employees have abused access to this data." Facebook has posted a statement about this here.

Wizard Kit: How I Protect Myself from Surveillance


Ever since the Electronic Frontier Foundation’s Panopticlick initiative in 2010, I’ve been sensitized to the risks and potential harms that come from adtech’s tracking of consumers. Indeed, in the years since, it has gotten far far worse. People are only now discovering the bad stuff that has been going on. For example, iPhone apps have been secretly recording users' keystrokes (see ZDNet, Feb 8, 2019), and Android apps with more than 2 billion downloads were committing ad fraud on real humans’ devices behind their backs (see BuzzFeed News, Nov 2018). For many more examples of spying on consumers, documented over the years, see Know Who’s Spying on You at All Times.


The popular apps that many humans use continue to track then even if they are logged out, and they also track users who never created an account in the first place (see Facebook tracks both non-users and logged out users). And Google tracks users’ locations even if they turned off location and denied permissions to apps (see Google Tracks Location Even When Users Turn Service Off). Even good apps that never intended to track users may actually be doing so because the SDKs (software development kits) with which they were built may be tracking users and sending data off to others’ servers without their knowledge. Remember the story about the low cost bathroom scale that didn’t work if location was turned off on the smartphone and there was no internet connection? It turns out that the scale was sending data to bare IP addresses that could be traced back to China.


LibreOffice 6.2.2 Released, New PocketBeagle SBC, Google Enforcing Permissions Rules on Apps, OpenShot 2.4.4 Now Available and DataPractices.org Has Joined The Linux Foundation

News briefs for March 21, 2019.

The Document Foundation announces the release of LibreOffice 6.2.2. This version "provides over 50 bug and regression fixes over the previous version". You can view the changelog for details, and go here to download. Note that "LibreOffice 6.2.2 represents the bleeding edge in term of features for open source office suites, and as such is not optimized for enterprise class deployments, where features are less important than robustness. Users wanting a more mature version can download LibreOffice 6.1.5, which includes some months of back-ported fixes."

The new PocketBeagle Linux computer is now available for $29.95 from Adafruit. According to Geeky Gadgets, the PocketBeagle "offers a powerful 1GHz AM3358 powered Linux single board computer with a tiny form factor and open source architecture". The article quotes Adafruit on the new SBC: "what differentiates the BeagleBone is that it has multiple I2C, SPI and UART peripherals (many boards only have one of each), built in hardware PWMs, analog inputs, and two separate 200MHz microcontroller system called the PRU that can handle real-time tasks like displaying to RGB matrix displays or NeoPixels. It's not too much larger than our Feathers, but comes with 72 expansion pin headers, high-speed USB, 8 analog pins, 44 digital I/Os, and plenty of digital interface peripherals. You can also add a USB host connection by wiring a USB A socket to the broken out USB host connections labeled VI, D+, D-, ID and GND. Then plug in any USB Ethernet, Bluetooth, and Wi-Fi device with available Linux drivers."

Google has started enforcing new permissions rules on applications' ability to access a phone's call and text logs. The Register reports that "Developers have been forced to remove features or in some cases change the fundamental nature of the application. One example is BlackBerry's Hub, an email client which also aggregated notifications from a variety of apps and presented them chronologically in a timeline. This application has lost its ability to includes calls and texts in that timeline." In addition, "Exceptions created by Google don't seem to be honoured, developers complained. One said that an enterprise archiving app—a category specifically exempt from the clampdown—has been broken."

OpenShot 2.4.4 was released yesterday. From the OpenShot Blog: "This release brings huge performance and stability improvements, along with some major bug fixes, lots of polish, and many new features." Improvements to the video editor include keyframe scaling, timeline and preview performance, SVG rendering, docking and tracks and much more. You can download OpenShot 2.4.4 from here.

Datapractices.org has joined The Linux Foundation and is publishing a "free open courseware platform for data teamwork. From the press release: "The goal of the Data Practices movement was to start movement similar to 'Agile for Data' that could help offer direction and improved data literacy across the ecosystem. The Data Practices Manifesto has had more signatories in its first year than the Agile manifesto."

Bare-Bones Monitoring with Monit and RRDtool

How to provide robust monitoring to low-end systems.

When running a critical system, it's necessary to know what resources the system is consuming, to be alerted when resource utilization reaches a specific level and to trend long-term performance. Zabbix and Nagios are two large-scale solutions that monitor, alert and trend system performance, and they each provide a rich user interface. Due to the requirements of those solutions, however, dedicated hardware/VM resources typically are required to host the monitoring solution. For smaller server implementations, options exist for providing basic monitoring, alerting and trending functionality. This article shows how to accomplish basic and custom monitoring and alerting using Monit. It also covers how to monitor long-term trending of system performance with RRDtool.

Initial Monit Configuration

On many popular Linux distros, you can install Monit from the associated software repository. Once installed, you can handle all the configuration with the monitrc configuration file. That file generally is located within the /etc directory structure, but the exact location varies based on your distribution.

The config file has two sections: Global and Services. The Global section allows for custom configuration of the Monit application. The Monit service contains a web-based front end that is fully configurable through the config file. Although the section is commented out by default, you can uncomment items selectively for granular customization. The web configuration block looks like this:

set httpd port 2812 and
    use address localhost
    allow localhost
    allow admin:monit

The first line sets the port number where you can access Monit via web browser. The second line sets the hostname (the HTTP Host header) that's used to access Monit. The third line sets the host from which the Monit application can be accessed. Note that you also can do this using a local firewall access restriction if a firewall is currently in place. The fourth line allows the configuration of a user name/password pair for use when accessing Monit. There's also a section that allows SSL options for encrypted connections to Monit. Although enabling SSL is recommended when passing authentication data, you also could reverse-proxy Monit through an existing web server, such as nginx or Apache, provided SSL is already configured on the web server. For more information on reverse-proxying Monit through Apache, see the Resources section at the end of this article.

The next items you need to enable deal with configuring email alerts. To set up the email server through which email will be relayed to the recipient, add or enable the following line:

New Version of PuTTY Fixes Several Vulnerabilities, Google Announces the Stadia Cloud Gaming Service, Save the Internet Day March 23, Google Fined $1.49 Billion and NVIDIA Launches the Jetson Nano

News briefs for March 20, 2019.

A new version of the PuTTY SSH client received several security patches over the weekend, including one that "fixed a 'game over' level vulnerability", according to The Register. Version 0.71 includes "new features plugging a plethora of vulns in the Telnet and SSH client, most of which were uncovered as part of an EU-sponsored HackerOne bug bounty".

Google announces Stadia, its new cloud gaming service. The Verge reports that "Stadia will stream games from the cloud to the Chrome browser, Chromecast, and Pixel devices, and it will launch at some point in 2019 in the US, Canada, UK, and Europe." Google also is launching the Stadia Controller, which "looks like a cross between an Xbox and PS4 controller, and it will work with the Stadia service by connecting directly through Wi-Fi to link it to a game session in the cloud."

Save the Internet Day is planned for March 23 in response to the planned EU copyright reform: "The planned EU copyright reform constitutes a massive threat to the free exchange of opinions and culture online. Together, on 23 March 2019 we call for a Europe-wide day of protests against the dangers of the reform." Visit here for an overview of the planned protests.

Google is fined $1.49 billion by the European commission for search ad brokering antitrust violations. TechCrunch quotes EU competition commissioner Margrethe Vestager: "Today's decision is about how Google abused its dominance to stop websites using brokers other than the AdSense platform".

NVIDIA launched the Jetson Nano module and Jetson Nano Dev Kit. Linux Gizmos reports that the Jetson Nano Developer kit is available for pre-order for $99 and that it will ship sometime in April. The post quotes NVIDIA, who says the Jetson Nano "delivers 472 GFLOPS of compute performance for running modern AI workloads and is highly power-efficient, consuming as little as 5 watts".

Handling Complex Memory Situations

Jérôme Glisse felt that the time had come for the Linux kernel to address seriously the issue of having many different types of memory installed on a single running system. There was main system memory and device-specific memory, and associated hierarchies regarding which memory to use at which time and under which circumstances. This complicated new situation, Jérôme said, was actually now the norm, and it should be treated as such.

The physical connections between the various CPUs and devices and RAM chips—that is, the bus topology—also was relevant, because it could influence the various speeds of each of those components.

Jérôme wanted to be clear that his proposal went beyond existing efforts to handle heterogeneous RAM. He wanted to take account of the wide range of hardware and its topological relationships to eek out the absolute highest performance from a given system. He said:

One of the reasons for radical change is the advance of accelerator like GPU or FPGA means that CPU is no longer the only piece where computation happens. It is becoming more and more common for an application to use a mix and match of different accelerator to perform its computation. So we can no longer satisfy our self with a CPU centric and flat view of a system like NUMA and NUMA distance.

He posted some patches to accomplish several different things. First, he wanted to expose the bus topology and memory variety to userspace as a clear API, so that both the kernel and user applications could make the best possible use of the particular hardware configuration on a given system. A part of this, he said, would have to take account of the fact that not all memory on the system always would be equally available to all devices, CPUs or users.

To accomplish all this, his patches first identified four basic elements that could be used to construct an arbitrarily complex graph of CPU, memory and bus topology on a given system.

These included "targets", which were any sort of memory; "initiators", which were CPUs or any other device that might access memory; "links", which were any sort of bus-type connection between a target and an initiator; and "bridges", which could connect groups of initiators to remote targets.

Aspects like bandwidth and latency would be associated with their relevant links and bridges. And, the whole graph of the system would be exposed to userspace via files in the SysFS hierarchy.

Firefox 66 Now Available, the Kodi Foundation Joins the Linux Foundation, Nextcloud Founder Writes Open Letter against the EU Copyright Directive, Tetrate Hosting First Server Mesh Industry Conference and SiFive Announces HiFive 1 Revision B Dev Board

News briefs for March 19, 2019.

Mozilla announces the release of Firefox 66 this morning. With this new version, Firefox now prevents websites from playing sound automatically, has an improved search experience, smoother scrolling and much more. You can download Firefox from here.

The Kodi Foundation has joined the Linux Foundation. From the press release: "We strongly believe that open-source is the best way to achieve awesome things. That was and still is what moves Kodi forward. Ever since XBMP, where this project started, a small group of like-minded individuals from different backgrounds have worked together to achieve a goal, taking advantage of each other's merits and talents."

Nextcloud Founder and CEO Frank Karlitschek addressed an open letter sent to EU Parliament members against the Copyright Directive Articles 11 and 13. The letter was signed by more than 130 companies and business alliances from 16 European countries. Karlitschek says, "As founder and CEO of Nextcloud I fear that Articles 11 and 13 of this directive create a serious disadvantage for European startups. The fact that more than 100 companies from different European countries signed our text within a few days shows that I am far from being the only one. I urge every politician to protect European businesses and vote against Article 11 and Article 13." You can view the open letter here.

Tetrate will be hosting the first-ever Service Mesh Industry Conference in San Francisco on March 28th and 29th. From the press release: "Service Mesh day 2019 is hosted by Tetrate and supported by Google, Juniper Networks, Capital One, and open source foundations including Cloud Native Computing Foundation, Cloud Foundry, OpenStack and ONF. The conference will bring together open source experts, cloud providers, customers and industry influencers to explore the use of service mesh technology in enterprise environments. The conference will explore issues such as managing microservices for any app, at any scale, decentralized security controls and the future evolution of service mesh technologies. Attendees will have a chance to network with users and creators in this space who are pioneering service mesh deployments first-hand and participate in conversations that will shape the direction of the industry." The full schedule is here, and you can purchase tickets here.

SiFive announces an upgraded Freedom Everywhere SoC and the HiFive1 Revision B developer board. According to Phoronix, "The HiFive1 is a mini development board without video output and can be connected to Arduino-compatible accessories and designed for real-time embedded use-cases. But this small embedded development board is available for $49 USD." See SiFive.com for more information.

Lessons in Vendor Lock-in: 3D Printers

3D printing

The open nature of the consumer 3D printing industry has made for a much more consumer-friendly world.

This article continues a series that aims to illustrate some of the various problems associated with vendor lock-in. In past articles, I've given examples showing how proprietary systems from disposable razors to messaging apps have replaced more open systems leading to vendor lock-in. This article highlights an ecosystem that, so far, has largely avoided vendor lock-in and describes the benefits that openness has provided members of the community, myself included: 3D printing.

I've been involved in 3D printing for several years. I've owned a number of printers, and I've seen incredible growth in the area from an incredibly geeky fringe to the much more accessible hobby that it is today. I've also written quite a few articles in Linux Journal about 3D printing, including a multi-part series on the current state of 3D printing hardware and software (see the Resources section for links to Kyle's previous Linux Journal articles on 3D printing). I even gave a keynote at SCALE 11x on the free software and open hardware history of 3D printing and how it mirrors the history of the growth of Linux distributions.

The Birth of 3D Printing in the Hobbyist Market

One interesting thing about the hobbyist 3D printing market is that it was founded on free software and open hardware ideals starting with the RepRap project. The idea behind that project was to design a 3D printer from off-the-shelf parts that could print as many of its own parts as possible (especially more complex, custom parts like gears). Because of this, the first generation of 3D printers were all homemade using Arduinos, stepper motors, 3D-printed gears and hardware you could find in the local hardware store.

As the movement grew, a few individuals started small businesses selling 3D printer kits that collected all the hardware plus the 3D printed parts and electronics for you to assemble at home. Later, these kits turned into fully assembled and supported printers, and after the successful Printrbot kickstarter campaign, the race was on to create cheaper and more user-friendly printers with each iteration. Sites like Thingiverse and YouMagine allowed people to create and share their designs, so even if you didn't have any design skills yourself, you could download and print everyone else's. These sites even provided the hardware diagrams for some of the more popular 3D printers. The Free Software ethos was everywhere you looked.