RSS.Social

Kevin Boone's website

follow: @[email protected]

Posts

Some thoughts on Pimoroni's "Pico GFX Pack" LCD module

Fun with capital letters

Social media: it's not me, it's you

No good deed goes unpunished: can we now be sued over software we give away?

ARM assembly-language programming for the Raspberry Pi

Watch out: the Chinese domain registration scam is getting slicker

Technical writing: what do we lose, when we write more readably?

A USB power supply with a real on-off switch

How to write a technical or scientific report

They don't make them like that any more: Sony PRS-500 e-reader

They don't make 'em like that any more: things you can switch off

They don't make them like that any more: the Yamaha DX7 keyboard

They don't make them like that any more: Epson MX-80 dot matrix printer

Using Windows is like smoking (?)

Ten steps to becoming a Linux snob

Wayland from the ground up

Why systemd is a problem for embedded Linux

Using Apache Camel to implement an IRC bot

Adventures with Artix

C development for Linux without a standard library

The nuts and bolts of anonymous inner classes in Java

Command-line hacking: countdown timer

How Linux home directory encryption works

Rudiments of Java concurrency control, part 1

They don't make 'em like that any more: Borland Turbo Pascal 7

Some thoughts on using a small cellphone as a media player

Yet another desktop Raspberry Pi media player

Making tab-and-slot boxes for electronic prototypes. Or: how I stopped worrying and learned to love the laser

Getting started with Kafka Streams, part 2

Getting started with Kafka Streams

They don't make them like that any more: Garmin Nuvi 300

Predicting eclipses with clockwork

RSS feed

Command-line hacking: calculating the phase of the Moon

They don't make 'em like that any more: Blackberry Bold 9700

Kafka Connect from the ground up, part II

Kafka Connect from the ground up

Powering a Raspberry Pi from an attached Waveshare USB HAT

Converting push-button events to keyboard events in the Raspberry Pi

Rolling your own minimal embedded Linux for the Raspberry Pi -- part one: booting to a root shell

Why the grammer snobs have it all wrong about the apostrophe

They don't make 'em like that any more: Archos 605 media player/recorder

What exactly is 'saturation'?

Yet another Darktable/Lightroom comparison

Using media keys in a Linux console application

Using the Linux framebuffer in C/C++ -- just the essentials (part 2)

Using the Linux framebuffer in C/C++ -- just the essentials

pico-photo-clock: an easy-to-construct Pi Pico desktop photo clock

Using the Maxim DS3231 I2C real-time clock in C on the Raspberry Pi Pico

Using ImageMagick to generate anti-aliased bitmap fonts for a microcontroller's LCD display

The Pi Pico, two years on

Some thoughts on the Waveshare 3.5-inch LCD/SD module for the Raspberry Pi Pico

Why 'int x = 0' is uninitialized data to the GNU C compiler

Raspberry Pi Pico: loading code into RAM and running it -- part 2

Some thoughts on using a USB keyboard with the Raspberry Pi Pico

Using the rdkafka library to integrate a C program with Kafka messaging

Why synchronous write speed is likely to be the limiting factor in message broker throughput

Why I won't be dumping DuckDuckGo over Ukraine

cwordle -- A Wordle-like word-guessing game for CP/M

The peculiar Benford distribution

UTF-8 and the problem of over-long characters

Juice-jacking -- it's a problem, but not because it's a problem

How Unicode reading direction characters defeat source code inspection, and what it means for the open-source movement

Multi-source Z80 assembly programming for CP/M

Writing new interactive fiction games for CP/M using PunyInform and Linux

Converting a floating-point number to a fraction (approximately) using continued fraction expansion

Raspberry Pi as a networked storage (NAS) device

Making a Raspberry Pi bootable SD card from a root filesystem

Does it matter if amateur radio dies out?

Why the Linux console is so awesome

Making an 8x32 LED auxiliary display with a USB interface, from an LED matrix and a Raspberry Pi pico

A very brief overview of Kotlin for Java developers

An overview of finite fields

Homeopathy: flushing science down the lavatory

Samsung DeX -- the good, the bad, and the ugly

On master/slave

Can Project Gemini rewind the Web thirty years?

More like Windows every day

The planet Vulcan: a cautionary tale that deserves to be better known

Building a custom mechanical keyboard from scratch

Reviving old keyboards for Arduino

Why the fascination with retrocomputing?

Peli "Protector" case as a rugged enclosure for a Raspberry Pi-based field terminal

Building and programming a USB keypad from the ground up

Using Linux command-line tools for programming the SparkFun Pro Micro microcontroller (and similar)

A Raspberry Pi and touchscreen case that anybody can make

Rolling your own minimal embedded Linux for the Raspberry Pi -- part four: audio

Rolling your own minimal embedded Linux for the Raspberry Pi -- part three: services and remote access

Rolling your own minimal embedded Linux for the Raspberry Pi -- part two: early initialization

Rolling your own minimal embedded Linux for the Raspberry Pi -- part five: X

Switching a couple of amps with a Raspberry Pi and a relay

Using an I2C analog-to-digital converter chip with the Raspberry Pi, from the ground up

Using the FreeType library to render text nicely onto a Linux framebuffer

Examining simple build and deployment operations on OpenShift 3/4

Why pitch is not the same as frequency

A failed experiment in laptop cooling

Using thinkfan for fan control on Lenovo (Linux) laptops

Using the Pi Pico with an L298N module to control a 12V motor

FastMail -- still good value in 2025?

No, eBay: it isn't "free to sell"

antiX vs. MX Linux on old-ish laptops

Why using crude PWM for sampled audio output on the Raspberry Pi Pico doesn't sound that great

Law and small woodlands

They don't make 'em like that any more: Sony DTC-700 audio DAT player/recorder

Some thoughts on LoRa-based mesh radio technologies

Raspberry Pi Pico: loading code into RAM and running it -- part 1

AppImage from scratch

They don't make them like that any more: the BMW C1

Why do we use 'complex impedance' in electrical engineering?

They don't make 'em like that any more: 3D movies

They don't make them like that any more: the Raleigh Chopper

Why are the variable names all wrong in my decompiled Java class?

Log4J -- ask yourself: do I really need that library?

Gentoo vs. MX Linux on old-ish laptops

How de-Googled is Lineage OS?

Fitting an NVMe disk in a computer with no NVMe support

Getting back into C programming for CP/M

Comparing Dropbox, pCloud, and rsync.net for off-site storage for Linux users

They don't make 'em like that any more: the 3.5mm headphone jack socket

Some notes on installing Lineage OS on modern-ish Samsung Android devices

A few interesting features of Vim, part 1

They don't make them like that any more: the Quad 306 amplifier

They don't make them like that any more: the Xircom REX 6000 PDA

One month with Gentoo

Going back to ALSA in 2024

Can you use ALSA to get 'bit-perfect' audio playback on Linux?

Using Private Internet Access VPN with Gentoo Linux

Gentoo Linux -- is this the solution to the Winux problem?

Differential equations: how does separation of variables really work?

Do you need to wipe that hard drive? And can you?

Exploring Java 17's container-awareness features

Using Keycloak for authentication with Apache Artemis: part 1

When science and engineering are in conflict: the weird Whipple truss bridge

They don't make 'em like that any more: how the Vectrex almost revolutionized video gaming

ActiveMQ/Artemis or Kafka for Java messaging?

They don't make them like that any more: the slide rule

Is your fitness watch lying to you?

Some thoughts on always-on OLED displays on smart watches

Command-line hacking: displaying system temperature

Does the use of custom Android ROMs improve or worsen security?

They don't make 'em like that any more: NVIDIA Shield K1 tablet

Snake oil: 4K displays on smartphones

What you give up, when you opt out of the surveillance economy

Adventures with RC2014, Z80, and CP/M

Designing a dual 5V-to-RS232 serial level converter for the RC2014

They don't make 'em like that any more: The Philips Pronto remote control

They don't make 'em like that any more: a paean to the Cowon D2 DAB

CP/M resources

Getting to grips with JMS shared subscriptions

Adding a floppy disk controller to my RC2014 Z80 system

Using flash memory as non-volatile storage on the Pi Pico microcontroller

Constructing and programming a YM2149 sound board my RC2014 Z80 system

Updating, building, and flashing RomWBW on an SC130 CP/M system

Exchanging files between an SC130 CP/M board and a Linux system

Some thoughts on a DS1302 real-time clock board for RC2014/Z80 and CP/M

Using a CP/M machine to log into a Linux server using an RS232 connection

Serial device mapping in CP/M

The vexed problem of generating delays in a CP/M program

Is Collapse OS really a practical proposition?

Getting back into C programming for CP/M -- part 2

Using Keycloak for authentication with Apache Artemis: part 2

A self-contained CP/M computer based on the Z80 Playground

Why does my Raspberry Pi project keep displaying the 'lightning bolt' undervoltage indicator?

Using an Oracle database as storage for the Apache Artemis message broker -- part 2

Using an Oracle database as storage for the Apache Artemis message broker -- part 1

Using the Qpid Proton C++ library to understand AMQP

Why your cheap mains inverter could kill you

Using Quarkus to provide a REST interface to a message broker

Comparing a natively-compiled Java webservice with C

Is dithering necessary when reducing the number of bits per sample in an audio waveform?

The costs and benefits of software pulse-width modulation on the Raspberry Pi

Using an HD44780 LCD display module with the Raspberry Pi, from the ground up

Monitoring an INA219 chip in a Raspberry Pi battery-backed power supply

Getting reasonably robust proximity measurements from an ultrasonic sensor on the Raspberry Pi

Using a shift register to control eight digital outputs with three GPIO lines on the Raspberry Pi

How flat-earthers use misrepresentations of scale to promote their ideas

Why "RMS watts" is a useless measure of power

Calculus of variations: a lunchbreak guide

Sorting files and directories on a FAT-formatted USB memory stick

A review of the Leak Stereo 130 and CDT

Why is there a vinyl revival?

Does it matter how we rip audio CDs?

Is "high resolution" audio really worth the effort?

Why you can't improve your hi-fi system by upgrading the mains cable

Do different CD transports sound different?

Snake oil: balanced headphones

Why your vintage turntable could kill you

A skeptic's guide to headphones

Are Flatpak, et al., saving or drowning the Linux desktop?

Command-line hacking: timezone conversions

Command-line hacking: displaying a weather summary

Command-line hacking: creating a tide table

Command-line hacking: extracting audio metadata (tags)

Command-line hacking: querying an Internet radio database

Command-line hacking: paced breathing

Command-line hacking: displaying news headlines in the manual viewer

Command-line hacking: Assigning folder icons to directories

How Microsoft Windows killed the palmtop computer

Using Podman to deploy an image directly to OpenShift 4

Understanding Java's functional interfaces

Using the new pluggable active/passive management framework in Apache Artemis

Embedding resources into executables built using GCC

You be the linker -- building "Hello, world" from scratch, in hexadecimal

Did aliens really talk to us in "binary code" at Rendelsham Forest?

They don't make 'em like that any more: the Lenovo W520

How problematic is resampling audio from 44.1 to 48 kHz?

Using the Qpid Proton C++ library to create a server for monitoring or telemetry data

Why we only see one side of the moon -- the odd phenomenon of tidal locking

Why the energy cost or benefit of switching to DAB digital radio is hard to assess

Creating an "animated score" for demonstrating musical compositions on YouTube, etc

Implementing a web-based music player for Android

Conway's Game of Life in 3D perspective

Using Apache Avro for passing Java objects through a message broker

How does Camel-K actually work?

Rolling your own minimal embedded Linux for the Raspberry Pi

Audible's returns policy -- who wins, who loses?

"Spy pixels" -- how worried should we be?

Implementing Apache ActiveMQ-style broker meshes with Apache Artemis

Deploying the Mosquitto MQTT message broker on OpenShift (part 1)

Back to BASICs with a Pro Micro microcontroller

Playing Zork 1 on a CP/M emulator on Linux

JGemini -- a Java-based browser for Project Gemini protocols and content

Using a Pi Zero and throw-away parts to provide a serial terminal for retrocomputing projects

Deploying the Mosquitto MQTT message broker on OpenShift (part 2)

Capturing database change records using Debezium and Camel

Using Apache Avro for passing Java objects through a message broker, with a schema registry

Developing KCalc-CPM -- a scientific calculator utility for CP/M

CP/M forty years on -- what it was, and why it still matters

Running CP/M on the Raspberry Pi Pico microcontroller

Why you can sometimes connect 3.3V and 5V I2C devices (and probably shouldn't)

Controlling a chain of MAX7219 LED matrices using C on a Raspberry Pi Pico

Building and programming a USB auxiliary display using a SparkFun Pro Micro, an HD44780 LCD module, and an PCF8547 IC-to-parallel IC

The tabular method for integration by parts

Integrating factors from the ground up

Using an I2C analog-to-digital for temperature measurement on the Raspberry Pi

Gâteaux differentials and Euler-Lagrange equations using Maple

Why you can't rely on system calls to obtain limits, when running an application in a container

Container from scratch: building a Linux container from the ground up

The importance of enabling compiler warnings in C and C++ programming

Why is covid-19 testing so unreliable? A pictorial view

Java as a scripting language: new auto-compilation features in Java 11

How to run a shell script from a Java application

Making simple stop-motion animations using Linux and a DSLR camera

Developing micro-microservices in C on Red Hat OpenShift

Understanding the Hamming 'sphere packing' bound in coding theory

Solving a quadratic equation in a prime (finite) field

An introduction to joint, marginal, and conditional probabilities

Using the Raspberry Pi official 7-inch touch-screen in embedded applications

Handling GPIO-connected switches robustly in C on the Raspberry Pi

Why switching high currents using a MOSFET and a Raspberry Pi is not as straightforward as it looks

Extracting software from the Raspbian repository, for assembling a custom Linux image for the Raspberry Pi

Bayesian statistics for dummies

Night of the living differential equations -- modeling the zombie apocalyse

Night of the living drag coefficients -- ballistics applied to zombie control

The titles game: can you buy nobility?

An introduction to steam locomotive technology

Prototyping a large Raspberry Pi case

Raspberry Pi 4 -- is it good news for experimenters and enthusiasts?

Building a Lua extension library for Linux in C/C++

Lua quick-start for Java programmers

A Linux storage management cheat-sheet

An introduction to Perl for Java programmers

Why use of the @Override annotation is essential in Java

A collection of Java curiosities and oddities

Generating simple MIDI files using Java, without using the Java Sound API

How to give a presentation

A brief history of English land law

Compiling a Java program to native code using GraalVM, from the ground up

How the Fabric8 Maven plug-in deploys Java applications to OpenShift

Making a Java JAR file self-executing (on Linux)

Ten simple rules for passing an examination

Why you can't play Bach on a piano

An overview of character encoding for developers

A ten-minute guide to electrical theory

Unicode combining and graphemes -- how two identical Java Strings can be different

Using an ammo box as portable 12V power supply

Extending the bash 'cd' command in Linux

The Argleton affair, and the Wikification of the World-Wide Web