Hi everyone!
I hope you all had a nice holiday got to spend it whichever way you prefer (behind a computer, obviously)!
It’s once again a pretty big issue, as I’ve had a few weeks of stockpiled bookmarked & news to share. Don’t let the scrollbar scare you. đ
Wishing you all the best in 2020, successes wherever you need them and enough free time to keep learning & reading.
Enjoy!
News & general
Linus: “don’t use ZFS”
Strong words from Linus Torvalds regarding Oracle’s licensing policy on ZFS: “Don’t use ZFS. It’s that simple. It was always more of a buzzword than anything else, I feel, and the licensing issues just make it a non-starter for me.”
Gandi loses data, customers told to use their own backups
I don’t like pointing to status pages or downtime as it feels very “finger pointing” to me, but I wanted to share this incident regardless. Gandi lost a storage device and couldn’t recover data for their customers, asking them to “use their own backups”. This is a good reminder that you don’t want to put all your eggs in one basket!
Benchmarking shell pipelines and the Unix âtoolsâ philosophy
Is it faster to do the grep
before the count
, or after? This post looks into the nitty gritty performance details of shell pipelines!
Understanding filesystem takeover vulnerabilities in npm JavaScript package manager
Early in December, a security vulnerability in npm & yarn (the javascript package manager) was publicly disclosed. This post looks at how this vulnerability works. As a Linux sysadmin, you’ll be happy to read that it’s all about $PATH
and symlinks!
SHA-1 is a Shambles
SHA-1 is broken. If you still use SHA-1 anywhere and you think it’s keeping your stuff private, guess again.
Removing the Linux /dev/random blocking pool
By default, reads from /dev/random
are blocking (meaning: your program will hang until there is sufficient entropy (“random data”) to give back) and calls to /dev/urandom
would never block (more on that here). Work is now being done to make /dev/random
non-blocking as well, while still keeping it a secure cryptographic random-number generator (CRNG).
Now using Zstandard instead of xz for package compression
Arch is switching their package compression scheme from from xz (.pkg.tar.xz) to zstd (.pkg.tar.zst). The biggest motivation was not better compression (that’s about the same), but a whopping 1300% speed up in decompressing.
Python 2.7 is now end-of-life. Sort of.
Python 2.7 will not be maintained past 2020. If you use Red Hat (and I presume CentOS as well), it seems to be supported until June 2024 though. So much for EOL …
Kali Default Non-Root User
For years now, Kali has inherited the default root user policy from BackTrack. As of January 2020 they will change this and move Kali to a âtraditional default non-root userâ model.
What exactly is being sent to Ubuntu in the MOTD?
There was a bit of commotion around Ubuntu’s default MOTD behaviour, where it sends more data than you’d expect back to Canonical-owned servers every time you log in. In this blogpost, I look at the details of what is being sent and why you should care.
Debian votes for Proposal B, âSystemd but we support exploring alternativesâ
Well there you have it, systemd remains (I’m not complaining though, it might be Stockholm Syndrome but I’ve come to like systemd).
My Business Card Runs Linux
An embedded systems engineer created a business card that runs a version of Linux with a kernel sized at 1.6MB, the entire root filesystem at 2.4MB and a boot-loader that fits in 256KB.
Tools & Projects
Oh Dear! Uptime & Broken Links monitoring sponsored
We built the Oh Dear monitoring service because there’s a gap in current uptime monitors: they all look at a single page (usually your homepage) and report on that. What about the other 100+ pages of your site? Ours routinely crawls your entire site (like Google) and reports broken links & pages and mixed content alerts. Give it a try, there’s a 10-day free trial!
scalene: a high-performance CPU and memory profiler for Python
Scalene is a high-performance CPU and memory profiler for Python that does a few things that other Python profilers do not and cannot do. It runs orders of magnitude faster than other profilers while delivering far more detailed information.
Lucidity: an interactive program-state visualizer
Lucidity is a new way of understanding what programs are doing as they execute. It looks really powerful and gives you visual insights into the state changes of your application. The video is worth a watch!
Snowpack
With Snowpack you can build modern web apps (using React, Vue, etc.) without a bundler (like Webpack, Parcel, Rollup). No more waiting for your bundler to rebuild your site every time you hit save. Instead, every change is reflected in the browser instantly.
Parcel
Parcel uses worker processes to enable multicore compilation, and has a filesystem cache for fast rebuilds even after a restart. Parcel has out of the box support for JS, CSS, HTML, file assets, and more - no plugins needed.
Broot: a new way to see and navigate directory trees
Get an overview of a directory at the CLI (even really big ones) in a way that you can still navigate them. It cleverly collapses large directories.
jql
This is an alternative to the popular jq tool to query json data at the command line. jql
has a more lispy syntax to it.
jellyfin
Jellyfin is a free program that lets you collect, control, and stream all your favorite media. It holds your entire movie collection, and displays a beautiful collection of posters. Could be an alternative to the popular Plex, but it seems to be lacking mobile clients at the moment.
bandwhich
This is a CLI utility for displaying current network utilization by process, connection and remote IP/hostname. bandwhich
sniffs a given network interface and records IP packet size, cross referencing it with the /proc
filesystem on linux or lsof
on macOS.
S3 Email
A serverless email server on AWS using S3 and SES. Pretty crazy actually, when you look at all the parts involved.
Apache Pulsar
Apache Pulsar is an open-source distributed pub-sub messaging system originally created at Yahoo and now part of the Apache Software Foundation. Built from the ground up as a multi-tenant system. Supports Isolation, Authentication, Authorization and Quotas.
dlinject.py
Inject a shared library (i.e. arbitrary code) into a live linux process, without ptrace.
Bash-my-AWS
Bash-my-AWS is a simple but extremely powerful set of CLI commands for managing resources on Amazon Web Services. They harness the power of Amazon’s AWSCLI, while abstracting away verbosity.
Rhasspy
Rhasspy is an open source, fully offline voice assistant toolkit for many languages that works well with Home Assistant, Hass.io, and Node-RED.
JohnSundell/Publish
Publish is a static site generator built specifically for Swift developers. It enables entire websites to be built using Swift, and supports themes, plugins and tons of other powerful customization options.
Checkov
Checkov is a static code analysis tool for infrastructure-as-code. It scans cloud infrastructure provisioned using Terraform and detects security and compliance misconfigurations.
KafkaHQ
A Kafka GUI for topics, topics data, consumers group, schema registry, connect, … It will start a Kafka node, a Zookeeper node, a Schema Registry, a Connect, fill with some sample data, start a consumer group and a kafka stream & start KafkaHQ.
ffsend
A fully featured Firefox Send client, entirely from the CLI.
FiloSottile/age
A simple, modern and secure encryption tool with small explicit keys, no config options, and UNIX-style composability.
outline
An open, extensible, wiki for your team built using React and Node.js.
cleaver
A blazing-fast static site generator using Laravel’s Blade templating engine.
hippy
Hippy is a cross-platform development framework, aiming to help developers write once, run on three platforms(iOS, Android and Web). Hippy is quite friendly to web developers, especially who are familar with React or Vue.
glow
Glow can render markdown on the CLI, super convenient!
wtfpython
Exploring Python through counter-intuitive snippets. If you think you know Python, think once more!
Guides & Tutorials
How to exit vim
Below are some simple methods for exiting vim. (It’s mostly funny though :-))
10 Ansible resources to accelerate your automation skills
A collection of useful links & resources to help get you started with Ansible.
Front-End Performance Checklist 2020
I’ve always loved performance, be it on the server, the code in the backend or the frontend. I think it’s good to be aware of all areas so I wanted to share this huge list of performance tips for front-end devs.
Prometheus For Beginners
This is a complete beginner guide to what Prometheus is, what it does and how to use it.
Mini HTTP guide for developers
This is a good summary of the HTTP protocol, even if you’ve been configuring web servers for a few years. Most of HTTP is abstracted away in frameworks or layers, but the nitty gritty details are still interesting.
Get to Know vi, a Text Editor for the Ages
A good back-to-the-basics on using the vi
text editor. Even though I only use 0.1% of its features, it’s still my favorite editor at the CLI.
Scripting tmux
This is a good collection of tmux
tips to configure it just the way you want, with the panes & windows you choose.
Automate the Boring Stuff with Python
This book can be read entirely online and gives a really good introduction to the Python programming language.
How To Set Up an Object Storage Server Using Minio on Ubuntu 18.04
If you want to try out object storage (“S3”) on your own, you can give Minio a try. This post gives you all the install instructions on Ubuntu 18.04.
Jenkins Home Lab: Part 1 - Setting up the Master
This is a 6-part guide on how to set up your own Jenkins instance to run your own CI/CD pipelines.
How To Configure a Galera Cluster with MySQL on Ubuntu 18.04 Servers
Another good step-by-step guide on running your own Galera cluster.
What You Probably Didnât Know About Sudo
Everybody knows sudo
, right? This tool is installed by default on most Linux systems and is available for most BSD and commercial Unix variants. Still, after talking to hundreds of sudo
users, the most common answer I received was that sudo
is a tool to complicate life.