This looks like fun: protohackers.com. If I had more time I would definitely do this. If… :P
Category Archives: Software
The 1969 Apollo Guidance Computer
Here’s a great talk about the Apollo Guidance Computer: Light Years Ahead | The 1969 Apollo Guidance Computer.
CRC
I watched Ben Eater’s videos How do CRCs work? and Checksums and Hamming distance (the full course is Learn about error detection) then found the Wikipedia page: Cyclic redundancy check.
Also of interest:
Amphetamine
I wanted to know how to stop my MacBook Pro from going to sleep when I closed its lid, so I asked ChatGPT and discovered Amphetamine. Good work, Internet; you have come a long way since the nineties.
p.s. I always wanted to blog about amphetamines.
Data corruption
Oh, yuck. ZFS-8000-8A. :(
-------------------
Mon May 29 16:23:47 [bash:5.2.15 jobs:0 error:0 time:35]
root@charm:/home/jj5
# zpool status -v
pool: fast
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-8A
config:
NAME STATE READ WRITE CKSUM
fast ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
nvme-Samsung_SSD_990_PRO_2TB_S6Z2NJ0W215171W ONLINE 0 0 2
nvme-Samsung_SSD_990_PRO_2TB_S6Z2NJ0W215164J ONLINE 0 0 2
errors: Permanent errors have been detected in the following files:
/fast/vbox/218-jj-wrk-8-charm-prod-vbox/218-jj-wrk-8-charm-prod-vbox.vdi
-------------------
Target then source
I’m surprised it took me this long to figure this out. But there’s a very big problem with a command like this:
rsync var/data/ target:/var/data/
The problem is that in order to type that command, you first have to type the first part of the command, which includes this command:
rsync var/data/ target:/
That first part of the command is in fact a valid command, and if you pressed ENTER accidentally before you had finished typing the whole command, then rsync would begin to replace your entire root file system with the contents of var. That’s the sort of thing that will ruin your day.
So from now on, when I write command-line tools, I will nominate the target *before* the source, and if both the target and source are not specified then I will return an error.
p.s. Yes, the reverse problem exists, that when you nominate the target first you can still fuck up with the source, but given that you are operating on the target from the source, if you get the source wrong, you can just fix your command and run it again and it will be fixed up.
ZFS zpool corruption with Message ID: ZFS-8000-8A
So I managed to get this dreaded error: Message ID: ZFS-8000-8A. It happened when I tried moving a directory between file systems on different zpools. Not gonna tempt fate and try that again. In future I will copy from source to target and then delete the target.
TCL commands
DejaGnu
Some notes with regard to DejaGnu:
The seven programming ur-languages
This is an article with a list of very different types of programming language all of which are worth learning: The seven programming ur-languages.
In addition to ALGOL languages (which every one needs to know), check out:
- Lisp: PLT Racket
- ML: Haskell
- Self: Self
- Prolog: Prolog
- Forth: gForth1
- APL: K (via ok)