Health Tools

Setting up redshift

Published · updated · 3min

I revived my old Lenovo Miix 310 yesterday. It’s not a great machine by any stretch, but it at least fills a niche similar to the one netbooks used to play for me: it’s small, low-power, and can be thrown in a bag. The top row of the …

Coding Projects Python

A simple asyncio client

Published · 2min

In the last entry, I implemented a ‘chat’-style protocol. Using loop.create_connection(), I can reuse ChatProtocol, but with a different client implementation to allow some interactivity. I’m assuming the server is in the same directory as this file so ChatProtocol can be imported from it.

import asyncio

from …
Coding Projects Python

Exploring asyncio protocols

Published · 4min

In the last entry, I managed to get a very basic daemon running. Now I need to flesh out the initial Protocol implementation to first turn it into a proper echo server and then implement a simple parser for a ‘chat’-style protocol.

The first bit is at least easy …

Coding Projects Python

Starting with asyncio

Published · 3min

I have an old project called uwhoisd from a previous life. It’s been about eight years since I last did anything significant with it. It’s now largely obsolete owing to the ICANN policy changes partially forced by the GDPR, but I’d like to use it as a …

Life

Autumn cleanup

Published · 2min

I’ve started on a bit of a cleanup of various distractions in my life. I’m also looking to see what I can wind down that I currently run.

I’ve deleted and blocked YouTube for a start. It’s became nothing but a timesink and I’m not …

Coding

A TOTP implementation

Published · 3min

Here’s a TOTP (RFC 6238) implementation I submitted to a library. The PR was rejected because the maintainer considered it out of scope, but the implementation is fine.

I’ll be deleting the branch, but I figured I’d might as well store it here for posterity.

import base64 …
Python Hacks Tools DevOps

Building Python fat RPMs with nfpm and some magic

Published · updated · 4min

I’d an awkward problem to solve recently: how do you build a relatively cross-platform fat RPM for a Python application without having to build out a bunch of extra build infrastructure.

On the face of it, this is easy, and this is something I’ve partially solved before. I …

Retrocomputing Agon Light

Initial explorations of the Agon Light

Published · 3min

The Agon Light doesn’t have an equivalent of the “programmer’s reference guides” of old, so I’ve been doing some poking around in different places to see what information I can gather together.

There’s an agon-light tag on Github that lists a few interesting repositories. In particular …

Retrocomputing Agon Light

The Agon Light 2

Published · 1min

I ordered an Agon Light 2 recently from Olimex, which is a modification of Bernardo Kastrup’s original Agon Light.

A still-bagged Agon Light 2

It’s a small, inexpensive Z80-based board with a GPIO port, allowing it to be used as a microcontroller board, but it can also be used similarly to an …

Coding

Notes from Real World OCaml, chapter 7, part 2

Published · 4min

Covering the second part of chapter 7, which deal with exceptions and backtraces.

Coding

Notes from Real World OCaml, chapter 7, part 1

Published · 4min

Covers the first prat of chapter 7: error-aware datatypes and exceptions.

Coding

Notes from Real World OCaml, chapters 4 and 5

Published · 2min

Covers records and program structure (files, modules, and programs).

Coding

Notes from Real World OCaml, chapter 3

Published · 2min

Covers lists and patterns.

Coding

Notes from Real World OCaml, first edition

Published · updated · 17min

Because it’s been so long since I’ve done anything in OCaml, I’m going through Real World OCaml. I have the first edition, and though the second edition came out earlier this month, it’s the original that I’m going through. I’m hoping this is useful …

Life

Starting 2023

Published · 3min

It’s been a while since I did one of these. The world imploded a few months after the last one.

I think we can agree that the last three years have been a total shitfest for everyone. Things certainly haven’t been getting much better, and it doesn’t …

Meta

Hi! Long time, no see!

Published · 3min

I haven’t posted here for quite some time. However, I’ve been doing some work on restoring some old content such as my Aonsdát Éireann page, fixing up a bunch of missing redirects, and so on. There are a number of entries I want to restore from my old …

Electronics

A homebrew computer project

Published · 4min

I’ve always wanted to build electronics for myself, but I’ve never had the chance. That’s something I’d like to fix.

I’ve a few projects that have been banging around my head for a while, which are all related in some way or another.

The first …

Tools

Doing

Published · 1min

I haven’t posted anything here in a very long time. I figure I’d might as well share a small tool I knocked together.

Here it is:

#!/bin/sh

set -eu

usage () {
    echo "usage: ${0##*/} [-h] [MESSAGE]"
}

# Ensure data directory exists
: "${DOING_ROOT:=${XDG_DATA_HOME:-$HOME/.local/share}/doing}"
mkdir -p …
Planet Mercury Projects Go Slow Web

Introducing Planet Mercury

Published · 3min

Planet Mercury is a Planet-style feed aggregator I’ve been writing in Go over the past few days.

It’s now at the Minimal Viable Product stage, so I figure there’s no harm in announcing its existence to the world. If you want to poke around the currenty …

Projects Spectrum Next NetBSD Retrocomputing

A time server for the ZX Spectrum Next

Published · 3min

I recently received my Spectrum Next. I’d been waiting three years for it, and they started sending them out just as the lockdown started. Thankfully, even though I wasn’t able to update the address, they were able to receive it at the office, and drop it over, which …

continue   →