July 2020
An introduction to joint, marginal, and conditional probabilities (Jul 2020)An explanation from first principles of the concepts of probability applied to two random discrete variables.
Categories: mathematics
Using the Raspberry Pi official 7-inch touch-screen in embedded applications (Jul 2020)The official Raspberry Pi 7-inch touchscreen is a useful and well-designed piece of equipment but, if you're using it in a custom (hardware and/or software) build, you'll notice a lack of any relevant technical information. This article tries to supply some of that information.
Categories: Raspberry Pi, electronics, embedded computing
Handling GPIO-connected switches robustly in C on the Raspberry Pi (Jul 2020)It's surprisingly difficult to detect switch actuations in a robust way, dealing with contact bounce and other quirks. This article describes one approach to the problem in C.
Categories: Raspberry Pi, electronics, embedded computing
Why switching high currents using a MOSFET and a Raspberry Pi is not as straightforward as it looks (Jul 2020)Using a single MOSFET transistor for power switching in microcontroller applications is simple and low-cost, but it often doesn't work as well as expected. Either the switched device doesn't run at full capacity, or the MOSFET gets hot. This article explains why.
Categories: Raspberry Pi, electronics, embedded computing
Extracting software from the Raspbian repository, for assembling a custom Linux image for the Raspberry Pi (Jul 2020)Using the official Raspian repository to assist the construction of a custom Linux for embedded applications is quick and convenient, compared to building everything from source. However, this approach has certain hazards.
Categories: Linux, Raspberry Pi, embedded computing
Bayesian statistics for dummies (Jul 2020)An explanation from first principles of this much-misunderstood principle of statical inference.
Categories: mathematics
Night of the living differential equations -- modeling the zombie apocalyse (Jul 2020)Using a simple application of Euler's method to estimate the solutions of non-linear differential equations, and work out your chances of surviving the zombie apocalypse. No, really.
Categories: mathematics
Night of the living drag coefficients -- ballistics applied to zombie control (Jul 2020)An introduction to the science of exterior ballistics -- tracking the flight of a projectile under the influence of gravity and drag.
Categories: mathematics
The titles game: can you buy nobility? (Jul 2020)This article is about whether you can legally and openly buy a British noble title. Spoiler alert: no, you can't. People still keep asking, though.
Categories: law
An introduction to steam locomotive technology (Jul 2020)Oh yes it's great to be an engine... But how did the driving force of the industrial revolution actually work?
Categories: science and technology
Prototyping a large Raspberry Pi case (Jul 2020)Using high-density vinyl board to construct a practical prototype case without specialist tools or materials
Categories: Raspberry Pi
Raspberry Pi 4 -- is it good news for experimenters and enthusiasts? (Jul 2020)Faster, more of everything, same price -- what's not to like?
Categories: Raspberry Pi
Building a Lua extension library for Linux in C/C++ (Jul 2020)Lua is an embeddable scripting language, which can be extended in a number of useful ways. This article describes in detail how to create a Lua extension in C (or, with a bit of fiddling, C++) as a loadable (.so) library.
Categories: software development, Lua, C
Lua quick-start for Java programmers (Jul 2020)The essentials of Lua programming in one page, for experienced Java programmers.
Categories: software development, Java, Lua
A Linux storage management cheat-sheet (Jul 2020)This article outlines, with step-by-step examples, how to carry out the most fundamental Linux storage management tasks: partitioning a disk, creating a filesystem, setting up swap space, managing a logical volume management (LVM) storage pool, and configuring a RAID mirror.
Categories: Linux
An introduction to Perl for Java programmers (Jul 2020)A quick-start guide that highlights the similarities and differences between the Java and Perl programming languages.
Categories: software development, Java, Perl
Why use of the @Override annotation is essential in Java (Jul 2020)Developers don't use @Override enough. Java's method visibility rules, when classes are in different packages, make polymorphic inheritance behave in odd ways. Careful use of @Override can prevent these problems, and make applications much easier to maintain.
Categories: software development, Java
A collection of Java curiosities and oddities (Jul 2020)Why does Java have a NullPointerException when it doesn't support pointers? Why does the equality operator compare object references, but the collections framework comparison methods compare object contents? These questions and many more like them will comprehensively fail to be answered in this article.
Categories: software development, Java
Generating simple MIDI files using Java, without using the Java Sound API (Jul 2020)Although the Java Media Framework can do some very sophisticated things, it remains relatively difficult to generate simple musical tones using Java. The de-facto method for specifying musical notes remains the MIDI file, although there are now more sophisticated approaches. It's surprisingly difficult to generate even a simple MIDI file in Java, not least because of the lack of unsigned data types. I wrote this article years (perhaps decades) ago, but it's recently become popular again, because of the use of Java in Android, and the lack of any Java API in Android for playing musical tones, other than by reading a MIDI file.
Categories: software development, music, Java
How to give a presentation (Jul 2020)Some guidance, mostly for students, on how to make a scientific or technical presentation.
Categories: education
Compiling a Java program to native code using GraalVM, from the ground up (Jul 2020)The GraalVM 'Native Image' plugin has the capability to compile to stand-alone binaries languages like Java that are normally compiled on the fly. This article describes step-by-step how to install GraalVM and the plug-in, and use it on some simple Java examples.
Categories: software development, Java
How the Fabric8 Maven plug-in deploys Java applications to OpenShift (Jul 2020)This article describes in detail the steps the Fabric8 Maven plug-in carries out when deploying an application to OpenShift.
Categories: software development, Java, OpenShift
Making a Java JAR file self-executing (on Linux) (Jul 2020)A quick-and-dirty way to make it possible to execute Java JAR files at the prompt, without needing to invoke the JVM.
Categories: software development, Java, Linux
Ten simple rules for passing an examination (Jul 2020)Advice for students on how to do well in university level examinations, fairly and honestly. There are no secrets here, but it's amazing how many students do less well than they should because they haven't understood how university teaching works.
Categories: education
Why you can't play Bach on a piano (Jul 2020)Well, perhaps you can play Bach on a piano, if you have the skill and the patience; but you can't hear Bach's music the way he and his contemporaries would have heard it because, in general, we don't using the same tuning schemes. This is an article about the mathematics of music tuning, from Pythagoras to the modern equally-tempered scale.
Categories: mathematics, music
An overview of character encoding for developers (Jul 2020)How character encoding actually works, and the implications for developers of choosing one character set over another.
Categories: software development
A ten-minute guide to electrical theory (Jul 2020)Volts, amps, ohms, and watts, for complete beginners. This article explains electrical circuit theory in the context of domestic wiring installation.
Categories: science and technology
Unicode combining and graphemes -- how two identical Java Strings can be different (Jul 2020)Java's strict adherence to Unicode standards for text representation ought to make life easier for developers, and usually it does. But not always.
Categories: software development
Using an ammo box as portable 12V power supply (Jul 2020)A military-surplus steel ammunition box makes a great housing for a high-current, outdoor 12V power supply. This article gives some ideas about how to build one.
Categories: science and technology
Extending the bash 'cd' command in Linux (Jul 2020)The built-in cd command in the bash shell is not as smart as it could be; but it's a little fiddly to extend its functionality.
Categories: Linux
The Argleton affair, and the Wikification of the World-Wide Web (Jul 2020)How a non-existent English village ended up on maps, and the implications this has for how we handle information.
Categories: general computing
Have you posted something in response to this page?
Feel free to send a webmention
to notify me, giving the URL of the blog or page that refers to
this one.



