Brain dump, October 2023

Here’s something that grinds my gears: waiters/waitresses at restaurants who insist on memorizing your order instead of writing it on a notepad. Why do they do this? Does the restaurant require them to have exceptional short-term memory, as if memorizing the order is somehow classier than writing it down? Or do the servers themselves feel so confident in their memory that they forego the notepad? It’s not impressive to me if you can memorize a list of items, and it’s infinitely more annoying if the order comes out incorrectly due to a failure of memory, or if the server comes back to double-check what I ordered. None of this is necessary.

In fact it’s mildly anxiety-inducing when the party at my table lists all the items they’re ordering, and the server does nothing except nod smilingly. It then becomes a minor miracle if the order ends up being fulfilled correctly, which I suppose is a payoff of sorts, but it doesn’t have to be. Just write it down.


Time for a small confession: I watch/listen to ASMR videos before falling asleep. ASMR is very much a real phenomenon, and I respond to certain ASMR triggers very strongly, although not as strongly as I did when I was younger. The first time I experienced it was all the way back in first grade: sitting at my desk in class, a voice started speaking over the PA system, and something about the sound or texture of the voice caused an overwhelming tingling sensation over an entire half of my body, to the point where I could no longer grasp my pencil with my hand to write legibly. This lasted for several minutes afterwards, and abated very slowly until I finally regained control of my hand. I wouldn’t say the sensation was either pleasurable or painful, just very curious and unusual.

It didn’t happen as strongly in subsequent instances, and eventually I stopped paying attention when it might have happened again. But in recent years I’ve rediscovered ASMR, thanks to a huge community of ASMR YouTubers who make videos that attempt to trigger these responses deliberately. And for me, certain types of triggers have a very relaxing, even therapeutic effect.

For my money, the best ASMR videos of all time are the “Departure” series, made by a channel called ASMRrequests. Even though there are only two “episodes” of this series, their combination of subtle, understated ASMR triggers with an engaging science fiction roleplay theme, as well as outstanding video production quality, makes them absolute genius-level videos, and I can admit to watching them again and again before going to sleep. Ally Maque, the young woman behind ASMRrequests, has explained that her partner at the time was responsible for the video production (and possibly the script?), but this makes the videos no less impressive. It’s a bit of a shame that the pressures and responsibilities of life seem to have put an end to any future episodes of Departure. If Ally is reading this, and wants to collaborate on additional episodes, hit me up!

Updates to DiskDigger and FileSystemAnalyzer, October 2023

Usually I post updates about DiskDigger on its own website, but my most recent round of updates merits a slight technical digression.

Previous versions of DiskDigger and FileSystemAnalyzer have already had basic support for 4K-native disk drives, i.e. drives that have 4 KiB sectors instead of the usual 512 bytes. However, only recently have I been able to test this support more thoroughly, fixing a few bugs along the way. 4K-native drives have been around for a while, and in fact most modern drives already use 4K sectors natively under the hood, but simply emulate 512-byte sectors to the outside world. However, increasingly we’re seeing more drives that no longer emulate 512-byte sectors (exposing the native 4K sectors to the operating system), as well as users who are opting to reconfigure the firmware of their drive to use 4K sectors instead of 512-byte emulation. DiskDigger and FileSystemAnalyzer can now handle all of these cases when mounting and searching file systems that might be present on such disks (FAT, NTFS, ext4, etc).

I did most of my testing and experimenting using a real 4Kn drive, but some testing I did with emulated disk images. Here is how you can configure qemu to treat a disk image as a 4Kn drive:

qemu-system-x86_64.exe -machine q35 -m 8G -boot d -cdrom "linux.iso" -drive file=mydisk.vdi,if=none,format=vdi,id=D24 -device nvme,drive=D24,serial=1234,logical_block_size=4096,physical_block_size=4096

The above example boots qemu from an ISO file, which can be a Linux live DVD, and makes the hard disk become a NVMe device, which allows us to configure its physical and logical block size, which we set to 4096. Linux should detect this NVMe device automatically, which will then let you create partitions and file systems on it for experimentation.


The other interesting update has to do with ancient retro file systems that are supported by FileSystemAnalyzer (and by extension DiskDigger). By coincidence, I’ve been contacted by multiple people in a short span of time regarding recovering data from Xenix file systems which they’ve saved as binary disk images. One image is from an Intel System 320 Multibus System owned by Herb Johnson of retrotechnology.com, and another is from an owner of an Altos 586 system in New Zealand.

image

Each of these images used a slightly different version of the Xenix file system, each of which use a different structure for their superblock (and each of which is different from the Xenix/SysV support that’s built into the current version of the Linux kernel). This took a bit of effort to reverse-engineer, but ultimately wasn’t too difficult to crack and integrate into FileSystemAnalyzer. The nice thing about dealing with very old data formats is that they’re usually very simple, not to say primitive. Best of all, these Xenix images contain C header files that actually describe their own filesystem structure (can I call them eigenheaders?), which I was able to use for refining and solidifying support for these file systems.

image

I even learned something else that was new to me: in addition to little-endian and big-endian byte orders, there’s also something called “middle-endian” or “PDP-11-endian”, where 16-bit values are stored in native little-endian order, but 32-bit long integers are composed of two 16-bit words in big-endian order (while the numbers in both 16-bit halves are still little-endian). This was the encoding used by the PDP-11 system, and apparently also by the Altos 586 system which was running this version of Xenix. All of these variations are now supported in FileSystemAnalyzer.