RSSAmplifier

Blog

Failing Productively

Recent content on Failing Productively

michaelhoward.kiwiRSS feed ↗19 posts

Latest posts

Get Rich or Die TTYing – Part 3: The Console Class

This is the third post in a series where I explore everything you can (and
perhaps sometimes shouldn’t) do with Rich – a Python library for styling
terminal output. Oh, and everyone’s favourite mid-2000s rapper is along for
the ride. My last two posts covered blinging up the REPL and
 console markup . 
 Today’s post is all about the Console class — the…

Get Rich or Die TTYing – Part 2: Console markup

This is the second instalment in a series exploring everything you can (and
perhaps sometimes shouldn’t) do with Rich – a Python library for styling
terminal output. Oh, and everyone’s favourite mid-2000s rapper is along
for the ride. My last post covered the blinging up the REPL . 
 Today’s topic is Rich’s console markup . 
 So, taking inspiration from…

Get Rich or Die TTYing – Part 1: The REPL

This is the first post in a series where I explore everything you can (and
perhaps sometimes shouldn’t) do with Rich – a Python library for styling
terminal output. Oh, and everyone’s favourite mid-2000s rapper is along
for the ride. 
 Today’s post focuses on the REPL. 
 
 “Go ahead, switch the style up.” 
 — 50 Cent, In da Club 
 
…

Miryoku layout on the Glove80


 I’ve been using the Glove80 as a daily driver in my home office for the past 8 months. It’s a fantastic board and very, very comfortable. When I received it, I toyed with the idea of learning a new layout and making use of all the extra keys, but thought better of it, since I still regularly use 36-key boards when going into the office/travelling. 
 Instead, I went with the tried and…

Preventing GitHub from disabling my scheduled certificate renewal workflow

Intro 
 In January, I set up a GitHub Actions workflow to renew the certificate on assets.michaelhoward.kiwi , the subdomain I use for object storage. Each month, the workflow uses David Coles’ acme-linode-objectstorage tool to request a new TLS certificate and handle the resulting ACME challenge. 
 The problem 
 It was all working suspiciously smoothly 1 until I received an…

Cycling through command arguments with PowerShell

With the holiday season behind us, I’m sure we’re all sick of navigating arguments. However, I couldn’t resist sharing this neat PowerShell trick I learnt at the end of last year. 
 PowerShell uses PSReadLine to handle keyboard input. One excellent feature of PSReadLine is the SelectCommandArgument key handler. This selects the next argument on the command line and by default…

Extracting and de-minifying JavaScript from the Boox Mira AppImage

Boox have written an Electron app for controlling their Boox Mira and Boox Mira Pro displays. As mentioned in a previous post , I’m not a huge fan and have been working on reproducing its behaviour in a simple Python script - miractl . 
 Both miractl and its inspiration mira-js are made possible because the JavaScript from the manufacturer’s app can be extracted and inspected. What…

Stopping Terry Pratchett sneaking into my HTTP headers

The other day I was testing whether curl was installed on my work machine, so I made a simple request to my site. &#xA; $ curl https://michaelhoward.kiwi&#xA; To my surprise, the late and prolific author of the Discworld series popped up in the response. &#xA; <!DOCTYPE html> &#xA; < html lang = 'en-NZ' > &#xA; < head > &#xA; < meta name = 'generator' content = 'Hugo 0.106.0' > &#xA; < meta…

Saturn60 keyboard build log

I&rsquo;ve been building mechanical keyboards since 2020. And even though the number of weird and wonderful boards I&rsquo;ve made is now in the double digits, I haven&rsquo;t documented the process very well. &#xA; So, for my latest build – the 70s-inspired Saturn60 – the I decided to take some nice pictures and timelapses along the way. &#xA; &#xA; Intro &#xA; I joined the group buy for the…

Logitech MX Master tweaks for an e-ink setup

While I prefer to use the keyboard where possible, I often find myself falling back on a mouse when browsing the web and reading articles/documentation. My mouse is an MX Master 3 which I love . However, one of it big drawcards – its buttery smooth scrollwheel – isn&rsquo;t as useful with e-ink displays. Sure, you can scroll quickly, and your display will do its best to keep up, but it…

YubiKey CLI setup with ykman

I spent yesterday afternoon setting up a pair of YubiKeys – a primary key and a spare. Although I had to link them with a couple of dozen accounts, the process was surprisingly painless. Mostly thanks to their great CLI tool yubikey-manager . &#xA; Below are some notes on the process, mainly for my own reference. Even though setup is relatively simple, I find the acronym salad of two-factor…

Refreshing multiple e-ink displays on Linux using Python

At my desk at home, I have a pair of e-ink displays – a Dasung Paperlike 253 and a Boox Mira 13.3". &#xA; &#xA; In a previous post I covered a how I refresh these on the Windows machine I use for work. While a bit of a hack, it works in a pinch. &#xA; When using my own laptop, on the other hand, I have much greater freedom. A pair of Python scripts allow me to control either or both of the…

Initial impressions – AirPods Max feat. a very stupid engraving

I recently made the somewhat frivolous decision to buy a pair of AirPods Max headphones. Frivolous, in that my decision was partly motivated by the fact you can customise them with an engraving. &#xA; The minimalist in me wanted something understated, like my initials. The anarchic hacker in me wanted a clever, nerdy joke. In the end, I compromised. &#xA; &#xA; As you can see, instead of engraving…

Refreshing e-ink displays on Windows

One of the pain points with e-ink/e-paper displays is having to manually refresh the screen to clear ghosting. While e-ink monitors like the Boox Mira and Dasung Paperlike 253 all have a dedicated hardware refresh button, it&rsquo;s inconvenient to have to reach for your monitor(s) all day. Although this problem is a relatively simple software fix, either by using a manufacturer&rsquo;s (janky)…

Dipping my toes into Nushell

Nushell came to my attention a couple of weeks back, following its 0.6 release and immediately piqued my interest. &lsquo;What&rsquo;s so nu about this shell?&rsquo; I thought. &#xA; Simply, Nushell is a Unix-style shell that works with structured data instead of raw text. In this way, it bears a lot of similarity with PowerShell, which I use heavily at my current job. Since I&rsquo;m already used…

How this blog works

Intro &#xA; As is customary for websites like this, the following post details how I run my blog. &#xA; There are three main components: &#xA; &#xA; Hugo , a static site generator &#xA; Sourcehut Pages , a tool for hosting static sites &#xA; Linode Object Storage , S3-compatible object storage (used here for hosting images) &#xA; &#xA; Hugo &#xA; Hugo is my go-to static site generator. It&rsquo;s…

First Post

This blog&rsquo;s first post (of many). I hope you stick around 😉 &#xA;

(untitled)

&#xA; &#xA; &#xA; &#xA; &#xA; &#xA; &#xA; [15:06:18] Retrieving song info for 50 Cent export_songs.py : 24 &#xA; $10 worth of tracks &#xA;┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓&#xA;┃ Title ┃ Primary artist ┃ Featured artist(s) ┃ Year…

About

About &#xA; I&rsquo;m Michael, a technical product lead living in Te Awa Kairangi, Aotearoa NZ.&#xA;I&rsquo;m also a lover of weird computers and anything to do with free and open&#xA;source software. &#xA; My current obsessions are: &#xA; &#xA; Mechanical keyboards (small, ergonomic boards, in particular) &#xA; E-ink displays and devices &#xA; Coffee &#xA; TUIs and CLIs &#xA; &#xA; When not…