35 / Why Facts Don’t Change Our Minds
Hi, how are you? I’m trying something new with the layout of this newsletter, let me know what you think✌🏻
Tweet of the Week
Keanu Reeves' reaction to this question about NFTs is priceless. [Video]— Carnage4Life on Twitter
Why Facts Don’t Change Our Minds
The way to change people’s minds is to become friends with them, to integrate them into your tribe, to bring them into your circle. Now, they can change their beliefs without the risk of being abandoned socially.
The UX of LEGO Interface Panels
These iconic, low-resolution designs are the perfect tool to learn the basics of physical interface design. Armed with 52 different bricks, let's see what they can teach us about the design, layout and organisation of complex interfaces.
The Poverty of Compromise
We shouldn’t be surprised when theory Z proves not to work, because neither person ever thought it was the best idea in the first place.
5 Signs It's Time to Quit Your Job
Regardless, your current job is just a moment in your overall career, and it’s worth thinking critically about whether it’s serving your longer term career goals. So, here are five reasons why you might want to think about quitting.
One Git usage pattern that I think is underused is the “branchless” workflow. The idea here is pretty intuitive if you’ve used trunk-based development: there’s just one “main” branch that everything gets merged into. No feature branches, no release branches, no hotfix branches.
Steinar H. Gunderson:
[...] something that I've been saying both internally and externally for the last five years (although never on a stage—which explains why I've been staying away from stages talking about MySQL): MySQL is a pretty poor database, and you should strongly consider using Postgres instead.1
Small Wins for Accessibility and Resilience
The change in HTML structure has not impacted the UI (what you see) in anyway, however from an accessibility and graceful degradation standpoint there is a difference. Primarily, the newer markup offers a better screen reader experience, and secondly the user-agent styles for when CSS is unavailable is somewhat improved.
Hacking Go compiler to add a new keyword
I wanted to make a tiny change to get familiar with the toolchain. First, I decided to add an alias loop for for. However, the compiler codebase already uses keyword loop as a label at many places, so I changed my alias. Also, instead of for, I decided to add an alias for var. The rest of this post summarises how I accomplished this and my learnings along the way.
The big idea around unikernels
The big idea around unikernels, at least when it comes to the cloud, is that if the datacenter is the computer, then the cloud is its operating system — so let’s start treating it like one and stop micro-managing thousands of individual ones.
log4j: between a rock and a hard place
I am often heard to say that I love backwards compatibility, and that it is underrated. But what exactly do I mean? I don't mean that whenever I upgrade a dependency, I expect zero side effects. If a library function gets two times faster in an upgrade, that is a change in behavior that might break my software! [...] So let me back up and describe what is important.
Portable and interoperable async Rust
To run async Rust code, you need an async runtime. Currently however, choosing a runtime locks you into a subset of the ecosystem. Library crates and tools are often restricted to a specific runtime; changing runtime is difficult. Mixing and matching libraries from different runtime ecosystems requires running multiple executors and using imperfect compatibility layers. For programmers getting started with async Rust, finding and choosing a runtime is a source of friction.
This is the patch series (v2) to add support for Rust as a second language to the Linux kernel.
Higher Kinded Types in Rust
Time to mess around with some feature that caught my eye: associated types. Is rust the best of haskell and c++ together? Let's see if we can make our beloved Functor, Applicative, Monad hierarchy is this new world.
How to encrypt a file in Rust (Using streaming AEAD encryption)
In the first part of this post, we are going to see how to encrypt small files that can fit in memory, and, in the second part, how to use our AEAD cipher in stream mode to encrypt larger files or data streams that can’t be encrypted in one operation.
Cutting Room Floor
My digital stack
Here is a collection of the digital tools I use on a near daily basis.
One decade later: Minecraft world generation is finally interesting again
I decided to look at 1.18 (the "Caves and Cliffs" update), and I am very impressed. It's now common to find interesting looking hills in most biomes now. And if you search (about 3-5 minutes of flying), you can come across significant mountain ranges, all looks good. I also noticed a few new biomes for these mountains as well, some of them quite lush.
Scan of the Month: AirPods Evolution
When we peel the skin back, we find that Apple completely redesigned AirPods with each major generation. Let’s explore with the help of some crispy CT scans.
Birds Aren’t Real, or Are They? Inside a Gen Z Conspiracy Theory.
“Birds Aren’t Real is not a shallow satire of conspiracies from the outside. It is from the deep inside,” he said. “A lot of people in our generation feel the lunacy in all this, and Birds Aren’t Real has been a way for people to process that.”
Re-thinking electronic mail
There are many problems with the existing Internet email system, such as spam, scam, surveillance, insecurity, centralization, and complexity. The problems are starting to outweigh the benefits of the system. Fixing the problems by evolving the current system seems overwhelmingly difficult. This essay examines some solutions to the problems on the assumption that a completely new, parallel email system can be built.
Get Arne's Weekly in your inbox every Sunday. No ads, no shenanigans.