a tumblelog
week 35, 2020

Python ate my log message

When testing a modification to a Python program, I noticed a strange thing: some of the messages that the program should have been sending to the syslog were missing.

Source: Python ate my log message, an article by Chris Brannon.

Kubernetes 101

At the moment Kubernetes is one of the most exciting technologies in the world of DevOps. Recently a lot of hype has formed around it for one simple reason, and this reason is the mighty containers.

Source: Kubernetes 101.

Thunderbird: OpenPGP Migration From Enigmail

This document is intended specifically for existing users of Enigmail, who want to start using Thunderbird 78 and its integrated OpenPGP functionality.

If you have never used the Enigmail Add-on, then you can skip this document.

Due to required technology changes, you'll experience a lot of changes. We have tried to make the new OpenPGP functionality easier to understand and use, but on the other hand, some features will work differently than before, or might be missing.

Before you update to Thunderbird 78, you should read this whole document, to understand the changes that you will see.

Source: Thunderbird:OpenPGP:Migration-From-Enigmail.

Don't trust default timeouts

Modern applications don’t crash; they hang. One of the main reasons for it is the assumption that the network is reliable. It isn’t.

When you make a network call without setting a timeout, you are telling your code that you are 100% confident that the call is going to succeed. Would you really take that bet?

Source: Don't trust default timeouts, an article by Roberto Vitillo.

Design Tip: Never Use Black

One of the most important color tricks I’ve ever learned was to avoid using the color black in my work. Mrs. Zamula, my childhood art teacher, first warned me about black when I was in middle school. And I heard the same again multiple times at RISD. It sounds weird at first, but it’s good advice.

Problem is, we see dark things and assume they are black things. When, in reality, it’s very hard to find something that is pure black. Roads aren’t black. Your office chair isn’t black. The sidebar in Sparrow isn’t black. Words on web pages aren’t black.

Source: Design Tip: Never Use Black, an article by Ian Storm Taylor.

What is JAMStack

The term JAMStack is meant to define a technology stack that relies heavily on JavaScript, APIs, and Markup. It also is meant to mean a whole lot more than that. In this article, we will explore how this concept is being expressed on the web.

Source: What is JAMStack, an article by David Broadlick.

Testing Database Transactions in Go

You can find a lot of articles about how to prevent deadlocks in Go, but most of them focus on concurrency patterns and synchronization tools like mutexes. While it is important to know some techniques to prevent them, a trap you can stumble across more easily without noticing, are database transaction deadlocks.

Source: Testing Database Transactions in Go, an article by Marvin Blum.

Constant Time LFU

A common strategy to make any system super-performant is Caching. Almost all software products, operating at scale, have multiple layers of caches in their architectures. Caching, when done right, does wonder to the response time and is one of the main reasons why products work so well at a massive scale. Cache engines are limited by the amount of memory available and hence once it gets full the engine has to decide which item should be evicted and that is where an eviction algorithm, like LFU and LRU. kicks in.

Source: Constant Time LFU, an article by Arpit Bhayani.

Introducing Modular Underscore

Underscore has been JavaScript’s unofficial standard functional programming library for a decade (together with its major fork, Lodash). Its most recent significant development is the move to ECMAScript 6 modules (ESM). Underscore 1.11 is the first version to be fully modular.

With the new modularity, you can now create a custom build of Underscore with an even smaller footprint. At the same time, we still provide the standard UMD build, which is perfect if you want to get started quickly. The UMD bundle is easy to work with and it has great cache retention if you load it from a CDN.

Source: Introducing Modular Underscore, an article by Julian Gonggrijp.

Scrollbar Blindness

In 2011, Apple released Mac OS X Lion which introduced an enhanced scrollbar behavior that made scrollbars hidden by default. The scrollbar appears when the user starts scrolling a document and disappears after the scrolling stops.

It appears, however, that this enhancement did not only change the user interface, but has also shaped how developers (don't) think about that specific UI element when creating cross-platform solutions. I call it scrollbar blindness.

Lately, for some reason, I've started to notice more of it. I have been to numerous websites that have elements with overflow-y or overflow-x set to scroll while the element is not meant to be scrollable. For no apparent reason, some even set both x and y axes scrollable or create multiple levels of stacked scrollbars.

Source: Scrollbar Blindness, an article by Sven Kadak.

The Thing With Leading in CSS

The spacing between individual elements of a website and, in particular, the vertical spacing, has been a regular matter of debate between web designers and developers. Designers insist that what they see in the browser doesn’t look at all like the layout they originally designed. Developers respond that all the margins in the style sheets exactly match the margins in the layout. So who is right? The tricky thing is: In a way, they are both right.

Source: The Thing With Leading in CSS, an article by Matthias Ott.

Make your first CSS art

Many people know how to use CSS to style websites, but when it comes to CSS artwork, they get confused on how they are made.

So i thought it might be helpful if i share my humble experience with you, I am going to discuss some important CSS knowledge you will need to have, in order to make your own CSS art and enjoy it as i do, let’s start🚀

Source: Make your first CSS art, an article by Nadia Laasri.

Understanding DNS—anatomy of a BIND zone file

If you want to be a sysadmin or network administrator of any kind, there's a fundamental technology you really need to understand—DNS, the Domain Name System. There was a time when a sysadmin with no aspirations to managing Internet-accessible services might have gotten by without understanding DNS, but that time is long, long gone.

You can't learn everything there is to know about DNS in a single article. But that's not what we're looking to do today; instead, we want to give you a clear, concise guide to the structure and meaning of the most important part of the Domain Name System: a zone file, as seen in BIND, the Berkeley Internet Name Daemon.

Source: Understanding DNS—anatomy of a BIND zone file, an article by Jim Salter.

Metasploit — A Walkthrough Of The Powerful Exploitation Framework

Metasploit is a penetration testing framework that helps you to find and exploit vulnerabilities in systems. It gives you everything you need from scanners to third-party integrations that you will need throughout an entire penetration testing lifecycle.

This includes reconnaissance, scanning, exploitation, privilege escalation, and maintaining access.

Source: Metasploit — A Walkthrough Of The Powerful Exploitation Framework, an article by Manish Shivanandhan.

How to write in plain English

This guide begins with an introduction called, ‘So what's plain English?’

The guide then looks at the main ways to make writing clearer.

  • Keep your sentences short
  • Prefer active verbs
  • Use 'you' and 'we'
  • Use words that are appropriate for the reader
  • Don't be afraid to give instructions
  • Avoid nominalisations
  • Use lists where appropriate

The guide then looks at the difficult subject of apologising, and deals with some of the myths that can get in the way of clear communication.

The guide finishes with a summary and a list of words to avoid.

Source: How to write in plain English.

Kindle Collects a Surprisingly Large Amount of Data

Kindle services leverage reading data to offer some nice features that traditional books can't offer: maintaining bookmarks and notes between devices, keeping all devices synced with the last read page, and more. It also shows ads and recommendations for next books to read on the kindle.

I was curious to know if the Kindle was only sending the data required for these services, or if other data about me was being sent.

Source: Kindle Collects a Surprisingly Large Amount of Data, an article by Charlie Belmer.

3 Secrets behind single div CSS art

When i started making CSS drawings, i didn’t know about ‘Single div CSS art’, i was very amazed by what people can draw with only one div then i felt curious to know how these drawings are made.

I went to Codepen and started to learn more about them, i found that they all use three components: ‘ Pseudo elements ’, ‘ Shadow ’ and ‘ Gradients ’.

I will give more details on how these three elements can help you make single div CSS art.

Source: 3 Secrets behind single div CSS art, an article by Nadia Laasri.

Bcrypt Step by Step

Bcrypt is a key derivation function, which can be thought of as a slow hash function. Its purpose is to slowly convert a piece of input data to a fixed-size, deterministic, and unpredictable output. A common use-case is to convert a password into an n-bit cryptographic key, which can then be used for safe authentication.

Source: Bcrypt Step by Step, an article by Lane Wagner.

Null-safety Part 1: The Fundamental Problem with Null

There are many different types of errors that programmers encounter frequently, which they must guard their programs against. Of those errors, few seem more pervasive than the infamous NullPointerException (NPE), or it’s equivalents. The cause of innumerable bugs and crashes, what programmer has not felt uneasy about the ever-present threat of this bug in their code?

Source: Null-safety Part 1: The Fundamental Problem with Null, an article by Ryan Stull.

Python mmap: Improved File I/O With Memory Mapping

Python’s mmap provides memory-mapped file input and output (I/O). It allows you to take advantage of lower-level operating system functionality to read files as if they were one large string or array. This can provide significant performance improvements in code that requires a lot of file I/O.

Source: Python mmap: Improved File I/O With Memory Mapping, an article by Luke Lee.