Refreshing my NAS configuration

I setup my Network Attached Storage (NAS) back in 2014 after getting a nice discount on a HP MicroServer of the previous generation. I added some more ECC RAM, fitted four hard drives, installed FreeNAS, and then happily used it to offload my poor computers of all the media and…

Atreus build part 4: Wiring the USB-C breakout board

This post belongs to the Atreus build series, which was introduced by Onward with the Atreus keyboard. The breakout board will give a USB-C socket to the Atreus, much nicer to use than an old —though still omnipresent— micro-B socket. The breakout board I am using (from Adafruit) takes care…

Atreus build part 3: Wiring up the switches

This post belongs to the Atreus build series, which was introduced by Onward with the Atreus keyboard. Last night I started soldering the rows and columns. The rows are connected by diodes (to avoid a bounce back effect from residual current on key up) while the columns are simply wired…

Atreus build part 2: Glueing the switches

This post belongs to the Atreus build series, which was introduced by Onward with the Atreus keyboard. Today I glued the switches on the base plate (the layer that holds them, commonly made of metal to avoid cave-in when typing energetically). It turned out to be more cumbersome than anticipated.…

Atreus build part 1: Dry fitting the keyboard parts

This post begins the Atreus build series, which was introduced by Onward with the Atreus keyboard. I received the laser-cut sheet of plywood yesterday. This time I will let pictures speak for themselves. Laser-cut plywood sheet of the individual Atreus casing elements.Individual casing elements, lightly sanded and coated with…

Onward with the Atreus keyboard

In the last few months, on a quest to find a better keyboard, I've become totally engrossed with the Atreus keyboard, a 42-key mechanical keyboard you can build yourself. Two weeks ago, I placed an order for the Keyboard.io Atreus, which features two more keys and will be manufactured…

A reentrant context manager in Python

A Python context manager caters for the boilerplate wrapping a resource to offer safety and convenient (re-)use. Upgrading a context manager to be reentrant is a simple and efficient way to allow a scope to be shared, without changing the context semantics.…