Linux Journal

Weekend Reading: Do-It-Yourself Projects

19 hours 58 minutes ago
by Carlie Fairchild

Join us this weekend as we bring the DIY movement back. Not only is it a chance to start working on those ideas you've been putting off for months, but it's also a great way to learn while playing.

Why You Should Do It Yourself

by Kyle Rankin

Bring back the DIY movement and start with your own Linux servers.

It wasn't very long ago that we lived in a society where it was a given that average people would do things themselves. There was a built-in assumption that you would perform basic repairs on household items, do general maintenance and repairs on your car, mow your lawn, cook your food and patch your clothes. The items around you reflected this assumption with visible and easy-to-access screws, spare buttons sewn on the bottom of shirts and user-replaceable parts. Through the years though, culture has changed toward one more focused on convenience.

Building a Voice-Controlled Front End to IoT Devices

by Michael J. Hammel

Apple, Google and Amazon are taking voice control to the next level. But can voice control be a DIY project? Turns out, it can. And, it isn't as hard as you might think.

This article covers the Jarvis project, a Java application for capturing audio, translating to text, extracting and executing commands and vocally responding to the user. It also explores the programming issues related to integrating these components for programmed results. That means there is no machine learning or neural networks involved. The end goal is to have a selection of key words cause a specific method to be called to perform an action.

Two Portable DIY Retro Gaming Consoles

by Kyle Rankin

A look at Adafruit's PiGRRL Zero vs. Hardkernel's ODROID-GO.

If you enjoy retro gaming, there are so many options, it can be tough to know what to get. The choices range from officially sanctioned systems from Nintendo all the way to homemade RetroPie projects like I've covered in Linux Journal in the past. Of course, those systems are designed to be permanently attached to a TV. But, what if you want to play retro games on the road?

Build a Custom Minimal Linux Distribution from Source

by Petros Koutoupis

Follow along with this step-by-step guide to build your own distribution from source and learn how it installs, loads and runs.

Go to Full Article
Carlie Fairchild

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

1 day 17 hours ago

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.

News Codeweavers CrossOver Linux Raspberry Pi Kodi RaspEX FSF ThinkPenguin GNU Parallel Facebook Privacy
Jill Franklin

Wizard Kit: How I Protect Myself from Surveillance

1 day 18 hours ago
by Augustine Fou

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.

 

Go to Full Article
Augustine Fou

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

2 days 16 hours ago

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."

News LibreOffice PocketBeagle Adafruit SBCs Google Android Mobile Audio/Video multimedia OpenShot The Linux Foundation Big Data
Jill Franklin

Bare-Bones Monitoring with Monit and RRDtool

2 days 17 hours ago
by Andy Carlson

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:

Go to Full Article
Andy Carlson

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

3 days 15 hours ago

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".

News PuTTY Google gaming Stadia EU Copyright NVIDIA Embedded
Jill Franklin

Handling Complex Memory Situations

3 days 17 hours ago
by Zack Brown

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.

Go to Full Article
Zack Brown

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

4 days 15 hours ago

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.

News Mozilla Firefox Kodi The Linux Foundation Nextcloud EU Copyright Tetrate Embedded
Jill Franklin

Lessons in Vendor Lock-in: 3D Printers

4 days 18 hours ago
by Kyle Rankin

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.

Go to Full Article
Kyle Rankin

Khronos Releases OpenXR 0.90, Solus 4 Fortitude Now Available, Geary 3.32 Released, Linux Kernel 5.1-rc1 Is Out, Opera Announces Opera 60 Beta

5 days 16 hours ago

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.

News VR Solus Distributions Geary GNOME kernel Opera
Jill Franklin

Text Processing in Rust

5 days 16 hours ago
by Mihalis Tsoukalos

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 and Text

Rust supports two data types for working with strings: String and str. The String type is for working with mutable strings that belong to you, and it has length and a capacity property. On the other hand, the 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 also accept 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:

Go to Full Article
Mihalis Tsoukalos