Kevin Boone
Kevin Boone
Kevin Boone
Personal
Technology
Musing on computing, math, electronics, de-Googling and the small web, from an old warhorse of the IT industry.
April 2026
Stats
314 posts published
Average 4.6 posts/month
Favorite day to publish: Tuesday
Top words
- raspberry
- linux
- java
- pico
- command
- hacking
- apache
- audio
- programming
- broker
Latest posts
-
Announcing JGemini version 2.0 2026-03-29 10:56am
-
The "small web" is bigger than you might think 2026-03-16 08:06am
-
A plug for the Spartan protocol 2026-03-08 06:07am
-
Hosting a Gemini capsule on a virtual private server 2026-03-03 06:45am
-
Small web, IndieWeb, Gemini... A guide to the retro-web 2026-03-02 01:06am
-
Can Project Gemini rewind the Web thirty years? 2026-03-01 04:10am
-
This site is now webmention-aware 2026-03-01 03:29am
-
They don't make them like that any more: the Cyclemaster 2026-03-01 01:56am
-
Command-line hacking: a really simple console music player 2026-02-20 06:35am
-
Rant: 2026 will not be the 'Year of Linux on the Desktop' -- and I'm glad 2026-02-12 09:10am
-
Battle of the privacy-focused search engines: Kagi vs. DuckDuckGo 2026-02-04 04:46am
-
Digital voice assistants vs. privacy in 2026 2026-02-02 07:35am
-
Command-line hacking: Downloading a podcast to create an audiobook 2026-01-11 03:54am
-
Using a Garmin fitness watch completely offline -- no accounts, no app 2026-01-04 06:19am
-
They don't make 'em like that any more: filament fairy lights 2026-01-04 02:07am
-
They don't make 'em like that any more: the Casio VL-1 pocket synthesizer 2025-12-21 04:06am
-
Predicting eclipses with clockwork 2025-12-21 04:05am
-
They don't make them like that any more: the Yamaha DX7 keyboard 2025-12-21 04:03am
-
They don't make them like that any more: Denshi block electronics kits 2025-12-21 04:01am
-
Google Pixel and Sony Xperia handsets for budget de-Googling 2025-12-21 03:54am
-
Some thoughts on de-Googling Google Pixel phones 2025-12-18 06:52am
-
'Sideloading' restrictions on Android: how big a deal will they be? 2025-12-04 08:08am
-
How to write a technical or scientific report 2025-12-02 09:12am
-
De-bloating and de-Googling an Android device using Canta 2025-11-30 02:03am
-
The privacy nightmare of browser fingerprinting 2025-11-22 07:09am
-
Comparing Android alternatives: Lineage OS, ∕e∕OS, and Graphene OS 2025-11-21 08:25am
-
Is it worth rooting an Android phone in 2025? 2025-11-17 11:59am
-
Running the Google Pixel Camera app on a robustly de-Googled cellphone 2025-11-11 05:01am
-
Two years without Google, et al. -- has it been worth it? 2025-11-07 01:37am
-
The 2nd-generation Nokia 105: a smarter dumb phone 2025-11-05 07:16am
-
No more Lineage OS on Samsung cellphones 2025-11-01 08:05am
-
Gâteaux differentials and Euler-Lagrange equations using Maple 2025-10-27 01:44am
-
AppImage from scratch 2025-10-27 01:44am
-
Lineage OS vs /e/OS in 2025 2025-10-18 09:28am
-
USB-C headphone dongles: still sucking after all these years 2025-10-14 10:31am
-
They don't make 'em like that any more: Playmobil RC model trains 2025-10-12 01:42am
-
They don't make 'em like that any more: Honda's ATC110 all-terrain cycle 2025-09-30 06:21am
-
They don't make 'em like that any more: tone controls 2025-09-18 10:44am
-
A failed experiment in laptop cooling 2025-09-03 08:49am
-
Using thinkfan for fan control on Lenovo (Linux) laptops 2025-08-26 12:46pm
-
Using the Pi Pico with an L298N module to control a 12V motor 2025-07-28 04:26am
-
FastMail -- still good value in 2025? 2025-07-24 06:54am
-
No, eBay: it isn't "free to sell" 2025-07-20 02:03am
-
antiX vs. MX Linux on old-ish laptops 2025-07-19 01:43am
-
Law and small woodlands 2025-06-27 01:52am
-
Some thoughts on LoRa-based mesh radio technologies 2025-06-18 08:56am
-
Raspberry Pi Pico: loading code into RAM and running it -- part 1 2025-06-13 02:32am
-
They don't make them like that any more: the BMW C1 2025-05-23 10:42am
-
Why do we use 'complex impedance' in electrical engineering? 2025-05-23 08:04am
-
They don't make 'em like that any more: 3D movies 2025-05-20 07:33am
-
They don't make them like that any more: the Raleigh Chopper 2025-05-20 06:37am
-
Some thoughts on Pimoroni's "Pico GFX Pack" LCD module 2025-03-04 11:48am
-
Fun with capital letters 2025-02-24 06:45am
-
Social media: it's not me, it's you 2025-02-21 01:09am
-
No good deed goes unpunished: can we now be sued over software we give away? 2025-02-15 04:20am
-
ARM assembly-language programming for the Raspberry Pi 2025-02-09 05:12am
-
Watch out: the Chinese domain registration scam is getting slicker 2025-01-31 08:55am
-
Technical writing: what do we lose, when we write more readably? 2025-01-08 09:36am
-
A USB power supply with a real on-off switch 2025-01-01 01:23am
-
They don't make them like that any more: Sony PRS-500 e-reader 2024-12-09 12:22pm
-
They don't make 'em like that any more: things you can switch off 2024-12-08 06:57am
-
They don't make them like that any more: Epson MX-80 dot matrix printer 2024-12-04 11:08am
-
Using Windows is like smoking (?) 2024-12-03 07:09am
-
Ten steps to becoming a Linux snob 2024-12-03 02:50am
-
Wayland from the ground up 2024-12-01 04:07am
-
Why systemd is a problem for embedded Linux 2024-11-05 12:30am
-
Why are the variable names all wrong in my decompiled Java class? 2024-10-18 01:37am
-
Log4J -- ask yourself: do I really need that library? 2024-10-16 01:17am
-
Gentoo vs. MX Linux on old-ish laptops 2024-10-04 01:50am
-
How de-Googled is Lineage OS? 2024-10-03 12:40pm
-
Fitting an NVMe disk in a computer with no NVMe support 2024-09-21 01:18pm
-
Getting back into C programming for CP/M 2024-09-19 12:57am
-
They don't make 'em like that any more: the 3.5mm headphone jack socket 2024-09-05 10:59am
-
Some notes on installing Lineage OS on modern-ish Samsung Android devices 2024-08-15 09:43am
-
A few interesting features of Vim, part 1 2024-08-08 06:15am
-
They don't make them like that any more: the Quad 306 amplifier 2024-07-28 05:55am
-
They don't make them like that any more: the Xircom REX 6000 PDA 2024-07-17 03:52am
-
One month with Gentoo 2024-07-05 07:21am
-
Going back to ALSA in 2024 2024-06-30 08:54am
-
Can you use ALSA to get 'bit-perfect' audio playback on Linux? 2024-06-27 01:51am
-
Using Private Internet Access VPN with Gentoo Linux 2024-06-22 01:34pm
-
Gentoo Linux -- is this the solution to the Winux problem? 2024-06-12 08:25am
-
Differential equations: how does separation of variables really work? 2024-06-04 02:53am
-
Do you need to wipe that hard drive? And can you? 2024-05-20 12:14pm
-
Exploring Java 17's container-awareness features 2024-05-11 10:48am
-
Using Keycloak for authentication with Apache Artemis: part 1 2024-05-09 04:21am
-
When science and engineering are in conflict: the weird Whipple truss bridge 2024-04-18 03:54am
-
Using Apache Camel to implement an IRC bot 2024-03-18 02:50am
-
Adventures with Artix 2024-03-18 02:02am
-
C development for Linux without a standard library 2024-03-18 01:53am
-
The nuts and bolts of anonymous inner classes in Java 2024-03-12 12:06pm
-
Command-line hacking: countdown timer 2024-03-06 12:29am
-
How Linux home directory encryption works 2024-03-01 12:42am
-
Rudiments of Java concurrency control, part 1 2024-02-16 05:12am
-
They don't make 'em like that any more: Borland Turbo Pascal 7 2024-02-13 06:17am
-
Some thoughts on using a small cellphone as a media player 2024-02-04 02:09am
-
Yet another desktop Raspberry Pi media player 2024-01-20 01:56am
-
Getting started with Kafka Streams, part 2 2024-01-19 07:40am
-
Getting started with Kafka Streams 2024-01-19 07:19am
-
They don't make them like that any more: Garmin Nuvi 300 2024-01-17 12:24am
-
RSS feed 2024-01-11 09:11am
-
Command-line hacking: calculating the phase of the Moon 2024-01-06 02:12am
-
They don't make 'em like that any more: Blackberry Bold 9700 2024-01-01 02:58am
-
Kafka Connect from the ground up, part II 2023-12-19 12:42am
-
Kafka Connect from the ground up 2023-12-19 12:42am
-
Powering a Raspberry Pi from an attached Waveshare USB HAT 2023-12-01 10:07am
-
Converting push-button events to keyboard events in the Raspberry Pi 2023-12-01 07:58am
-
Why the grammer snobs have it all wrong about the apostrophe 2023-11-29 01:05pm
-
They don't make 'em like that any more: Archos 605 media player/recorder 2023-11-29 12:53pm
-
ActiveMQ/Artemis or Kafka for Java messaging? 2023-10-22 08:00am
-
They don't make them like that any more: the slide rule 2023-10-22 07:53am
-
Is your fitness watch lying to you? 2023-09-27 07:14am
-
Some thoughts on always-on OLED displays on smart watches 2023-09-22 07:43am
-
Command-line hacking: displaying system temperature 2023-09-18 07:47am
-
Does the use of custom Android ROMs improve or worsen security? 2023-09-09 05:41am
-
They don't make 'em like that any more: NVIDIA Shield K1 tablet 2023-09-05 12:22am
-
Snake oil: 4K displays on smartphones 2023-09-04 03:28am
-
What you give up, when you opt out of the surveillance economy 2023-08-20 01:39am
-
Adventures with RC2014, Z80, and CP/M 2023-08-19 05:27am
-
Designing a dual 5V-to-RS232 serial level converter for the RC2014 2023-08-05 01:51am
-
They don't make 'em like that any more: The Philips Pronto remote control 2023-07-21 06:17am
-
They don't make 'em like that any more: a paean to the Cowon D2 DAB 2023-07-21 01:41am
-
CP/M resources 2023-07-17 01:13am
-
Getting to grips with JMS shared subscriptions 2023-07-13 12:27am
-
Adding a floppy disk controller to my RC2014 Z80 system 2023-07-04 05:55am
-
Using flash memory as non-volatile storage on the Pi Pico microcontroller 2023-06-21 08:42am
-
Constructing and programming a YM2149 sound board my RC2014 Z80 system 2023-06-20 07:03am
-
Updating, building, and flashing RomWBW on an SC130 CP/M system 2023-06-13 02:17am
-
Exchanging files between an SC130 CP/M board and a Linux system 2023-06-13 12:32am
-
Some thoughts on a DS1302 real-time clock board for RC2014/Z80 and CP/M 2023-06-12 06:48am
-
Using a CP/M machine to log into a Linux server using an RS232 connection 2023-06-02 04:02am
-
Serial device mapping in CP/M 2023-06-01 06:52am
-
The vexed problem of generating delays in a CP/M program 2023-05-19 05:08am
-
Is Collapse OS really a practical proposition? 2023-05-18 06:46am
-
Getting back into C programming for CP/M -- part 2 2023-05-16 06:31am
-
Using Keycloak for authentication with Apache Artemis: part 2 2023-05-11 07:05am
-
A self-contained CP/M computer based on the Z80 Playground 2023-05-10 08:26am
-
Using the Qpid Proton C++ library to understand AMQP 2023-04-23 02:36am
-
What exactly is 'saturation'? 2023-03-24 11:33am
-
Yet another Darktable/Lightroom comparison 2023-03-15 08:11am
-
Using media keys in a Linux console application 2023-03-03 10:39am
-
Using the Linux framebuffer in C/C++ -- just the essentials (part 2) 2023-02-02 04:34am
-
Using the Linux framebuffer in C/C++ -- just the essentials 2023-02-02 03:33am
-
pico-photo-clock: an easy-to-construct Pi Pico desktop photo clock 2023-01-21 04:28am
-
Using the Maxim DS3231 I2C real-time clock in C on the Raspberry Pi Pico 2023-01-21 03:49am
-
The Pi Pico, two years on 2023-01-13 04:27am
-
Why 'int x = 0' is uninitialized data to the GNU C compiler 2023-01-02 04:07am
-
Raspberry Pi Pico: loading code into RAM and running it -- part 2 2022-12-07 10:24am
-
Some thoughts on using a USB keyboard with the Raspberry Pi Pico 2022-11-13 03:58am
-
Using the rdkafka library to integrate a C program with Kafka messaging 2022-11-09 12:52am
-
Why your cheap mains inverter could kill you 2022-10-14 05:08am
-
Using Quarkus to provide a REST interface to a message broker 2022-10-05 07:09am
-
Comparing a natively-compiled Java webservice with C 2022-09-29 07:36am
-
Monitoring an INA219 chip in a Raspberry Pi battery-backed power supply 2022-09-15 12:17am
-
How flat-earthers use misrepresentations of scale to promote their ideas 2022-09-15 12:10am
-
Why "RMS watts" is a useless measure of power 2022-09-14 08:16am
-
Calculus of variations: a lunchbreak guide 2022-09-08 01:28am
-
Sorting files and directories on a FAT-formatted USB memory stick 2022-09-01 03:31am
-
A review of the Leak Stereo 130 and CDT 2022-08-31 07:41am
-
Why is there a vinyl revival? 2022-08-18 03:40am
-
Does it matter how we rip audio CDs? 2022-08-18 03:24am
-
Is "high resolution" audio really worth the effort? 2022-08-18 03:24am
-
Why you can't improve your hi-fi system by upgrading the mains cable 2022-08-18 03:24am
-
Do different CD transports sound different? 2022-08-18 03:24am
-
Snake oil: balanced headphones 2022-08-18 03:23am
-
Why your vintage turntable could kill you 2022-08-18 03:23am
-
A skeptic's guide to headphones 2022-08-18 03:20am
-
Are Flatpak, et al., saving or drowning the Linux desktop? 2022-08-06 07:40am
-
Command-line hacking: timezone conversions 2022-08-04 06:05am
-
Command-line hacking: displaying a weather summary 2022-08-04 06:05am
-
Command-line hacking: creating a tide table 2022-08-04 06:05am
-
Command-line hacking: extracting audio metadata (tags) 2022-08-04 06:05am
-
Command-line hacking: querying an Internet radio database 2022-08-04 06:05am
-
Command-line hacking: paced breathing 2022-08-04 06:05am
-
Command-line hacking: displaying news headlines in the manual viewer 2022-08-04 06:05am
-
Command-line hacking: Assigning folder icons to directories 2022-08-04 06:04am
-
How Microsoft Windows killed the palmtop computer 2022-07-15 06:11am
-
Using Podman to deploy an image directly to OpenShift 4 2022-07-13 07:10am
-
Understanding Java's functional interfaces 2022-07-11 04:31am
-
Embedding resources into executables built using GCC 2022-06-24 02:51am
-
You be the linker -- building "Hello, world" from scratch, in hexadecimal 2022-06-23 12:21pm
-
Did aliens really talk to us in "binary code" at Rendelsham Forest? 2022-06-07 10:48am
-
They don't make 'em like that any more: the Lenovo W520 2022-06-01 07:20am
-
How problematic is resampling audio from 44.1 to 48 kHz? 2022-05-10 04:01am
-
Why we only see one side of the moon -- the odd phenomenon of tidal locking 2022-04-21 11:26am
-
Why I won't be dumping DuckDuckGo over Ukraine 2022-03-16 07:50am
-
cwordle -- A Wordle-like word-guessing game for CP/M 2022-02-18 05:04am
-
The peculiar Benford distribution 2022-02-11 03:16am
-
UTF-8 and the problem of over-long characters 2022-02-03 03:56am
-
Juice-jacking -- it's a problem, but not because it's a problem 2022-02-03 03:56am
-
Multi-source Z80 assembly programming for CP/M 2022-01-30 04:51am
-
Writing new interactive fiction games for CP/M using PunyInform and Linux 2022-01-24 01:42pm
-
Raspberry Pi as a networked storage (NAS) device 2021-12-13 07:25am
-
Making a Raspberry Pi bootable SD card from a root filesystem 2021-12-03 01:00am
-
Does it matter if amateur radio dies out? 2021-11-30 01:23pm
-
Why the Linux console is so awesome 2021-11-30 12:24pm
-
A very brief overview of Kotlin for Java developers 2021-11-12 07:01am
-
An overview of finite fields 2021-11-10 01:14am
-
Homeopathy: flushing science down the lavatory 2021-11-09 06:53am
-
Samsung DeX -- the good, the bad, and the ugly 2021-11-06 11:52am
-
Implementing a web-based music player for Android 2021-10-22 11:24am
-
Conway's Game of Life in 3D perspective 2021-10-21 12:32am
-
Using Apache Avro for passing Java objects through a message broker 2021-09-23 07:43am
-
How does Camel-K actually work? 2021-09-15 04:07am
-
Rolling your own minimal embedded Linux for the Raspberry Pi 2021-08-31 11:44pm
-
Audible's returns policy -- who wins, who loses? 2021-08-13 07:14am
-
"Spy pixels" -- how worried should we be? 2021-08-13 07:11am
-
Implementing Apache ActiveMQ-style broker meshes with Apache Artemis 2021-06-30 12:13am
-
Deploying the Mosquitto MQTT message broker on OpenShift (part 1) 2021-06-30 12:11am
-
Back to BASICs with a Pro Micro microcontroller 2021-06-22 07:53am
-
Playing Zork 1 on a CP/M emulator on Linux 2021-06-22 07:51am
-
JGemini -- a Java-based browser for Project Gemini protocols and content 2021-06-22 07:48am
-
Deploying the Mosquitto MQTT message broker on OpenShift (part 2) 2021-06-10 04:18am
-
Capturing database change records using Debezium and Camel 2021-06-10 04:17am
-
Developing KCalc-CPM -- a scientific calculator utility for CP/M 2021-05-22 10:35am
-
CP/M forty years on -- what it was, and why it still matters 2021-05-16 03:10am
-
Running CP/M on the Raspberry Pi Pico microcontroller 2021-05-05 12:37pm
-
Controlling a chain of MAX7219 LED matrices using C on a Raspberry Pi Pico 2021-05-05 12:37pm
-
The tabular method for integration by parts 2021-04-13 12:37am
-
Integrating factors from the ground up 2021-04-13 12:36am
-
On master/slave 2021-03-18 11:17am
-
More like Windows every day 2021-02-17 12:50pm
-
The planet Vulcan: a cautionary tale that deserves to be better known 2021-02-14 12:55am
-
Building a custom mechanical keyboard from scratch 2021-02-14 12:48am
-
Reviving old keyboards for Arduino 2021-02-13 02:49am
-
Why the fascination with retrocomputing? 2021-02-03 01:38pm
-
Building and programming a USB keypad from the ground up 2021-01-19 09:46am
-
A Raspberry Pi and touchscreen case that anybody can make 2021-01-11 08:01am
-
Rolling your own minimal embedded Linux for the Raspberry Pi -- part five: X 2020-12-01 01:34pm
-
Switching a couple of amps with a Raspberry Pi and a relay 2020-11-30 04:00pm
-
Using the FreeType library to render text nicely onto a Linux framebuffer 2020-11-20 01:54am
-
Examining simple build and deployment operations on OpenShift 3/4 2020-11-13 04:00am
-
Why pitch is not the same as frequency 2020-11-10 01:42am
-
Container from scratch: building a Linux container from the ground up 2020-10-12 04:14am
-
The importance of enabling compiler warnings in C and C++ programming 2020-10-02 10:07am
-
Why is covid-19 testing so unreliable? A pictorial view 2020-09-26 02:49am
-
Java as a scripting language: new auto-compilation features in Java 11 2020-09-21 08:00am
-
How to run a shell script from a Java application 2020-09-04 05:41am
-
Making simple stop-motion animations using Linux and a DSLR camera 2020-08-29 12:40am
-
Developing micro-microservices in C on Red Hat OpenShift 2020-08-29 12:40am
-
Understanding the Hamming 'sphere packing' bound in coding theory 2020-08-19 01:57pm
-
Solving a quadratic equation in a prime (finite) field 2020-08-19 01:52pm
-
An introduction to joint, marginal, and conditional probabilities 2020-07-30 09:01am
-
Using the Raspberry Pi official 7-inch touch-screen in embedded applications 2020-07-08 12:50am
-
Handling GPIO-connected switches robustly in C on the Raspberry Pi 2020-07-08 12:50am
-
Bayesian statistics for dummies 2020-07-07 06:20am
-
Night of the living differential equations -- modeling the zombie apocalyse 2020-07-07 04:15am
-
The titles game: can you buy nobility? 2020-07-07 04:15am
-
An introduction to steam locomotive technology 2020-07-07 04:15am
-
Prototyping a large Raspberry Pi case 2020-07-07 04:13am
-
Raspberry Pi 4 -- is it good news for experimenters and enthusiasts? 2020-07-07 04:12am
-
Building a Lua extension library for Linux in C/C++ 2020-07-07 04:11am
-
Lua quick-start for Java programmers 2020-07-07 04:10am
-
A Linux storage management cheat-sheet 2020-07-07 04:10am
-
An introduction to Perl for Java programmers 2020-07-07 04:10am
-
Why use of the @Override annotation is essential in Java 2020-07-07 04:10am
-
A collection of Java curiosities and oddities 2020-07-07 04:09am
-
Generating simple MIDI files using Java, without using the Java Sound API 2020-07-07 04:09am
-
How to give a presentation 2020-07-07 04:08am
-
A brief history of English land law 2020-07-07 04:07am
-
Compiling a Java program to native code using GraalVM, from the ground up 2020-07-07 04:07am
-
How the Fabric8 Maven plug-in deploys Java applications to OpenShift 2020-07-07 04:06am
-
Making a Java JAR file self-executing (on Linux) 2020-07-07 04:05am
-
Ten simple rules for passing an examination 2020-07-07 04:05am
-
Why you can't play Bach on a piano 2020-07-07 04:04am
-
An overview of character encoding for developers 2020-07-07 04:04am
-
A ten-minute guide to electrical theory 2020-07-07 04:03am
-
Using an ammo box as portable 12V power supply 2020-07-07 04:02am
-
Extending the bash 'cd' command in Linux 2020-07-07 04:02am
-
The Argleton affair, and the Wikification of the World-Wide Web 2020-07-07 04:00am