I have borrowed Art of Computer Programming from a interlibrary loan in the past (although I do not own a copy), and I have written a MIX simulator, and an assembler. It supports both decimal and binary. (I also have written programs in both MIX and in MMIX.)<p>I had never used computers with cards, but I had made an option (it can be switched on and off) in an assembler so that you can easily find the first and last cards from the holes and the rest are allowed to be in any order, in order to solve a problem of getting them mixed up, many years after they have been no longer in common use.<p>I have written self-modifying code in a few programming languages, including uxn (it is common to modify literal values but I have also sometimes used it to modify instructions, in an error handling routine), and PostScript, and in 6502 assembly language (with code running from RAM in NES/Famicom). I had also once written a self-modifying code in GWBASIC by opening a file and writing to it and then using CHAIN MERGE to load the modified code. (I had probably done some others as well but do not remember the details.)<p>I am currently wearing a shirt with the circuit diagram of a "blue box". I had also programmed a computer to do the functions of blue box and red box (but had never used them to control any telephones), and also to generate a dial tone and many other tones relating to telephones.<p>I do have a flowchart template from IBM.<p>I also have a fortune file, which I maintain.<p>I have also reverse-engineered and decompiled some parts of some of programs, and I have patched binary code too.