week 20, 2021

Concurrency vs. Parallelism

The terms concurrency and parallelism are often used in relation to multithreaded programs. At first it may seem as if concurrency and parallelism may be referring to the same concepts. However, concurrency and parallelism actually have different meanings. In this concurrency vs. parallelism tutorial I will explain what these concepts mean.

Just to be clear, in this text I look at concurrency and parallelism within a single application - a single process. Not among multiple applications, processes or computers.

Source: Concurrency vs. Parallelism, an article by Jakob Jenkov.

Teardown of a PC power supply

Have you ever wondered what's inside your computer's power supply? The task of a PC power supply is to convert the power from the wall (120 or 240 volts AC) into stable power at the DC voltages that the computer requires. The power supply must be compact and low-cost while transforming the power efficiently and safely. To achieve these goals, power supplies use a variety of techniques and are more complex inside than you might expect. In this blog post, I tear down a PC power supply and explain how it works.

Source: Teardown of a PC power supply, an article by Ken Shirriff.

Learn CSS

This course breaks down the fundamentals of CSS into digestible, easy to understand pieces. Over the next few modules, you'll learn how the core aspects of CSS work and how to use them effectively in your projects.

Source: Learn CSS.

A Modern CSS Reset

In this modern era of web development, we don’t really need a heavy-handed reset, or even a reset at all, because CSS browser compatibility issues are much less likely than they were in the old IE 6 days. That era was when resets such as normalize.css came about and saved us all heaps of hell. Those days are gone now and we can trust our browsers to behave more, so I think resets like that are probably mostly redundant.

Source: A Modern CSS Reset.

The Easiest Way to Debug Kubernetes Workloads

Sometimes you need to grab a bigger hammer or just use more appropriate tool for the task at hand. In case of debugging workloads on Kubernetes, that appropriate tool would be kubectl debug, which is a new command added not too long ago (v1.18) that allows you to debug running pods. It injects special type of container called EphemeralContainer into problematic Pod allowing you to poke around and troubleshoot.

Source: The Easiest Way to Debug Kubernetes Workloads, an article by Martin Heinz.

Write Rust lints without forking Clippy

This blog post introduces Dylint, a tool for loading Rust linting rules (or “lints”) from dynamic libraries. Dylint makes it easy for developers to maintain their own personal lint collections.

Previously, the simplest way to write a new Rust lint was to fork Clippy, Rust’s de facto linting tool. But this approach has drawbacks in how one runs and maintains new lints. Dylint minimizes these distractions so that developers can focus on actually writing lints.

Source: Write Rust lints without forking Clippy, an article by Samuel Moelius.

Primer on Python Decorators

In this tutorial on decorators, we’ll look at what they are and how to create and use them. Decorators provide a simple syntax for calling higher-order functions.

By definition, a decorator is a function that takes another function and extends the behavior of the latter function without explicitly modifying it.

Source: Primer on Python Decorators, an article by Geir Arne Hjelle.

Phaedra: Alastor 824

Wake the living Galleons at your peril...

The Elder Race once ruled the entire Alastor cluster. Fierce predators, they tore suns from the sky, leaving the worlds of their enemies to freeze in the dark. Now only the Galleons are left: living ships that sail the world river which girds Phaedra: Alastor 824. After the death of his father, Gunnar arrives on that ancient world, trying to find a new home. Having two girlfriends sounds like a good start, but Lavoine is the deeply tricky daughter of the last Voodoo queen, and Semele a fierce huntress who has sworn never to kiss a boy until she Walks with the Galleons. And now Lavoine is trying to wake up the Galleons and bring back the Elders...

In the evening I started in Phaedra: Alastor 824, a homage to Jack Vance by Tais Teng. As I am a huge fan of the former and have read a stories collection I liked a lot by the latter I look forward to read this book.

Moving out of MacOS: Making Linux habitable

The Linux ecosystem is a lot better than it was when I left five years ago, but it still has a ways to go. I’ve had to do quite a bit to get my system to a point where I can reliably and comfortably work on my computer, without spending too much time working on my computer. Don’t get me wrong, I do quite enjoy recompiling kernels and tweaking my workflow - and Linux gives you the most control there - but I still do want a machine I can feel at home in, and not a permanent work-in-progress. Here’s a guide on what I ended up doing to port over the functionality I missed from the Mac and additional improvements made. It was a day or two of work but in the end, I’m happy to say that I haven’t felt the urge to open up my Mac since I finished, despite it being my happy home for the last half-decade or more.

Source: Moving out of MacOS: Making Linux habitable, an article by Hrishi Olickel.

JSON Serializer in Python

Due to JSON’s ubiquity, we end up reaching for JSON libraries regularly when we have a project that needs to exchange data with other systems. Whenever something becomes widespread and becomes an “infrastructure”, it turns into a black-box in people’s minds.

One reason JSON got so popular is the fact that it’s simple. It’s not the simplest solution to the problem, not by a long shot, but it’s flexible enough to solve a lot of problems without becoming too large. In this post we’ll be making a JSON serializer in Python that can serialize arbitrary nested data structures in a few lines of code. And more importantly, every part should be understandable and self-contained.

Source: JSON Serializer in Python, an article by Gökberk Yaltıraklı.

A Desolation Called Peace: Good

In the evening I finished A Desolation Called Peace by Arkady Martine. I had finished the main story the evening before, and started in the glossary, but was to tired to finish the entire book. While a slow read, in my opinion, I did like the book a lot. I look forward to another sequel or a book set in the same universe.

An Introduction to Knowledge Graphs

Knowledge Graphs (KGs) have emerged as a compelling abstraction for organizing the world’s structured knowledge, and as a way to integrate information extracted from multiple data sources. Knowledge graphs have started to play a central role in representing the information extracted using natural language processing and computer vision. Domain knowledge expressed in KGs is being input into machine learning models to produce better predictions. Our goals in this blog post are to (a) explain the basic terminology, concepts, and usage of KGs, (b) highlight recent applications of KGs that have led to a surge in their popularity, and (c) situate KGs in the overall landscape of AI. This blog post is a good starting point before reading a more extensive survey or following research seminars on this topic.

Source: An Introduction to Knowledge Graphs, an article by Vinay K. Chaudhri, Naren Chittar, and Michael Genesereth.

Coverage-guided Test Data Selection

Getting your hands on real-world data to test your software is the real deal. Nothing comes closer to reality than feeding an application with actual data from the wild. But what if the amount of data is more than you can handle? There are limitations on how much time you can spend on test runs. Whether you are running tests on a developer machine or as part of a Continuous Integration system, you probably won't be able to crunch large amounts of data each time you make a code change. Sooner or later, you will be forced to shrink your test corpus to a more manageable size. This article presents an approach that uses code coverage metrics to determine a representative test data subset.

Source: Coverage-guided Test Data Selection, an article by Michael Seifert.

What Is a Convolutional Neural Network?

There are a lot of different kinds of neural networks that you can use in machine learning projects. There are recurrent neural networks, feed-forward neural networks, modular neural networks, and more.

Convolutional neural networks are another type of commonly used neural network. Before we get to the details around convolutional neural networks, let's start by talking about a regular neural network.

Source: What Is a Convolutional Neural Network? A Beginner's Tutorial for Machine Learning and Deep Learning, an article by Milecia McGregor.

No, Utility Classes Aren't the Same As Inline Styles

Half a decade after the first commit of the pioneering ACSS, utility-first CSS is more popular than ever. With success comes many adepts but also a fair share of criticism. It’s a good thing: polarized opinions mean topics matter enough for people to care. Healthy debate contributes to identifying weaknesses and fueling growth, while indifference would let it stagnate and die.

Source: No, Utility Classes Aren't the Same As Inline Styles, an article by Sarah Dayan.