I received a failed Quooker Cube chiller unit. Upon connection to power, nothing would happen; no lights, no sounds. Slightly weird board layout, with the main voltage conversion "primary" situated a significant distance from the mains input "power supply": Investigation revealed the voltage on the secondary capacitors was only around one volt. The rectification diodes test fine. Investigating the…
I am personally opposed to async , futures, promises; whatever you call it. It is almost never appropriate for application or library development, yet widely proposed as a good solution to problems. It also has an almost amusingly terrible history of integration and transition into ecosystems. I plan to explain my complaints properly in a future post. But, we still use it. Let's look at a specific…
I have been playing with low-level Linux security features, such as prctl no new privs and seccomp . These tools allow you to reduce the harm a process can do to your system. They're typically deployed as part of systemd, although the default settings in many distros are yet to be ideal . This is partly because it's hard to confirm what a service actually needs, and partly because many services…
Today, I wrote a load of Python and a load of C to work around pretty insane problems in Linux, my choice of OS for development. pasane is a command-line volume control that doesn't mess up channel balance. This makes it unlike all of the other volume control tools I've tried that you can reasonably drive from the command line. It's necessary to change volume from the command line as I launch…
checkrestart , part of debian-goodies , checks what you might need to restart. You can run it after a system update, and it will find running processes using outdated libraries. If these can be restarted, and there's no new kernel updates, then you can save yourself a reboot. However, checkrestart is pretty dated, and has some weird behaviour. It frequently reports that there are things needing a…
It's about three months until Java 9 is supposed to be released . Debian contains around 1,200 packages that build against Java 8. I have been trying to build them with Java 9. It's not been going well. The first attempt found an 87% failure rate, the majority of which were either: toolchain issues (which are for Debian to fix) (e.g. maven/guice needing new cglib ). -source and -target being old,…
Once again, I have ordered the wrong hardware from eBay. This time, it was a set of 433MHz radio transceivers for "Arduino". The majority of these come with embedded circuitry for sending and receiving bits. The ones I ordered, however, did not. The transmitter emits power when its data line is powered. The receiver emits a varying voltage, which can be ADC'd back into a value, ~1 -> ~800. This is…
The world's understanding of cryptography, the guarantees provided, and the practical safety and limitations, is lacking. Cryptography, and computer security in general, is discussed in terms of some use-cases . A use-case is addressed by combining some primitives , and there's frequently multiple different algorithms which can provide a primitive . First, let's look at some use-cases : I want to…
kill-desktop tries to get your "X" applications to exit cleanly, such that you can shutdown, or reboot. "Watch" the "demo" in the repository readme , or try it out for yourself: cargo install kill-desktop Many people just reboot. This risks losing unsaved work, such as documents, the play position in your media player, or even the shell history in your shell . This feature is typically built in to…
I have written a large mass of code this year, primarily in Rust. With only one exception, none of this has reached the 'blog post' level of maturity. Here lies a memorial for these projects, perhaps as a reminder to me to resurrect them. Github's contribution chart gives a good indication of just how much code has been written. Clearly visible are some holidays, and the associated productivity…