week 52, 2020

A Vim Guide for Intermediate Users

Welcome to the second part of this series aimed to make you a better Vim user! If you have no idea about Vim, you should begin with the first part. In this article, I’ll explain many more concepts, some of them making Vim truly special compared to other editors. Who wasn’t blown away discovering Vim’s macros?

Specifically, we’ll see together:

  • Ways you can organize open files in Vim using buffers, windows, tabs, and the argument list.
  • Useful motions to jump quickly from one place to another in your entire codebase.
  • Mapping new keystrokes to old keystrokes or commands.
  • Powerful functionalities to repeat some of your keystrokes.
  • Ways of manipulating the command line history.
  • Plugins which offers different ways to manage some ideas we saw before.

Source: A Vim Guide for Intermediate Users.

Git from the inside out

The essay assumes you understand Git well enough to use it to version control your projects. It focuses on the graph structure that underpins Git and the way the properties of this graph dictate Git’s behavior. Looking at fundamentals, you build your mental model on the truth rather than on hypotheses constructed from evidence gathered while experimenting with the API. This truer model gives you a better understanding of what Git has done, what it is doing, and what it will do.

Source: Git from the inside out, an article by Mary Rose Cook.

50 Latin Phrases You Should Know

Latin expressions are often adopted into English, often with an extended or figurative meaning. Here are fifty of the most common phrases, followed by their literal translation in Latin and the meaning in English (omitted when the meaning follows the literal translation).

Source: 50 Latin Phrases You Should Know, an article by Mark Nichol.

Minecraft Java Edition

In the afternoon I bought the Minecraft Java Edition as a small Christmas present for our children. I was expecting to be able to install it in my account on the Mac mini and each child be able to run his/her own version. But alas, after I had installed it and we switched to Adam's account starting Minecraft resulted in a small window stating that the Minecraft Launcher was unable to start Minecraft...

Minecraft Launcher unable to start Minecraft
Minecraft Launcher unable to start Minecraft.

Installing Minecraft using my Microsoft account in Adam's session worked, though. So after about an hour of installing, updating, etc. he was finally able to play Minecraft.

I will look further into this issue later.

A perceptual color space for image processing

A perceptual color space is desirable when doing many kinds of image processing. It is useful for things like:

  • Turning an image grayscale, while keeping the perceived lightness the same
  • Increasing the saturation of colors, while maintaining perceived hue and lightness
  • Creating smooth and uniform looking transitions between colors

Unfortunately, as far as I am aware, while there are color spaces that aim to be perceptually uniform, none are without significant drawbacks when used for image processing.

For this reason I have designed a new perceptual color space, designed to be simple to use, while doing a good job at predicting perceived lightness, chroma and hue. It is called the Oklab color space, because it is an OK Lab color space.

Source: A perceptual color space for image processing, an article by Björn Ottosson.

How to Favicon in 2021: Six files that fit most needs

It is time to rethink how we cook a set of favicons for modern browsers and stop the icon generator madness. Currently, frontend developers have to deal with 20+ static PNG files just to display a tiny website logo in a browser tab or on a touchscreen. Read on to see how to take a smarter approach and adopt a minimal set of icons that fits most modern needs.

Source: How to Favicon in 2021: Six files that fit most needs, an article by Andrey Sitnik.

Build a Tiny Certificate Authority For Your Homelab

In this tutorial, we’re going to build a tiny, standalone, online Certificate Authority (CA) that will mint TLS certificates and is secured with a YubiKey. It will be an internal ACME server on our local network (ACME is the same protocol used by Let’s Encrypt). The YubiKey will securely store the CA private keys and sign certificates, acting as a cheap alternative to a Hardware Security Module (HSM). We’ll also use an open-source True Random Number Generator, called Infinite Noise TRNG, to spice up the Linux entropy pool.

Source: Build a Tiny Certificate Authority For Your Homelab, an article by Carl Tashian.

The Joy Of Typed Python

If I am to start working on a new project today, I would hesitate to attempt it in a language that does not have compile-time type checking. However, I do have to deal with Python at work (though we are slowly phasing it out). Also, I have been working off and on, in my spare time, on a Python project that has over the past 3+ years gotten fairly large as personal projects go. It started out as a one-off quick script. It eventually evolved into something larger that actually does something useful for me so I ended up adding to it and maintaining it.

Somewhere over a year and a half back, after being frustrated with my inability to refactor this code like I can with other type safe languages, I started exploring the possibility of adding type hints to the codebase. Now, after having spent the requisite time to understand the implications of type hinting, and whether it’s useful, and to be able to show this as a consolidation of my thoughts on the matter to friends and colleagues, I decided to write this post on what an absolute joy it has become to refactor and work with Python once you have type checking enforced.

Source: The Joy Of Typed Python, an article by Balajee Ramachandran.

Understanding Apple ProRAW

To understand what makes it so special, the first half of this post explains how a digital camera develops a photo. Then we go on to explain the strengths and weaknesses of traditional RAWs. Finally, we dive into what’s unique about ProRAW, how it changes the game, and its few remaining drawbacks.

Source: Understanding Apple ProRAW, an article by Ben Sandofsky.

Top 10 Python libraries of 2020

Welcome to the sixth yearly edition of our Top Python Libraries list!

The rules are simple. We are looking for libraries that satisfy the following conditions:

  1. They were launched or popularized in 2020.
  2. They are well maintained and have been since their launch data.
  3. They are outright cool, and you should check them out.

Source: Top 10 Python libraries of 2020 you should know about, an article by Alan Descoins.

Haskell Documentation with Haddock: Wishes'n'Tips

Haskell has a stigma of having poor or no documentation at all. Though more and more maintainers are doing a hell of a job to improve the quality of their libraries and applications, it is still not enough. We need to strengthen our vision of documentation collectively and as a consequence, master the existing tools for doing that.

There are different types of documentation. Today we want to talk about API and libraries documentation inside your library, and accordingly about Haskell gear for that – Haddock.

The blog post is going to give Haddock overview, suggest documentation best practices, reveal the specialities of the Haddock tool, and show-and-tell lots of different examples of how to squeeze more out of your documentation. It should be interesting to library maintainers, developers who want to improve their documenting skills and everyone interested in documentation techniques in Haskell.

Source: Haskell Documentation with Haddock: Wishes'n'Tips, an article by Veronika Romashkina and Dmitrii Kovanikov.