The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
My first paid job with computers: A summer job before I started my C.Sci studies, fall of 1978, one of my tasks was to puch paper (or rather: mylar) tapes for software distribution to customers. We even used tape made from aluminum with plastic coating on both sides - edges were sharp as a knife, and if you were in need of a rope, you could be helped by that material. I guess it could withstand most acids as well.
My superior bictched about this silly semiconductor memory that lost its contents when you turn off the power. No, that technology will not last long! Every serious computer has ferrite memory that can survive a power down!
Punched tape was produced on one of the modern machines, no ferrite memory. So every morning I turned it on, flipped the 16 switches, deposit, flipped again, deposit, ... a mini-bootstrap of about a dozen instructions, enabling it to read the in the "real" bootstrapper from a meter long paper tape. That bootstrapper was so fancy that it could read the reel of tape containing the tape copy program (or a compiler, or software for a welding robot or A0 size pen plotter). And then it was ready for reading in the tape to be copied...
We didn't have a dedicated machine for tape duplication; then we could have left it on overnight. There was no simple way to see which program was loaded - a compiler, a control program or the tape copier - so flipping in the mini-bootstrap to read the bootstrap tape to read the tape copy program became a routine operation you did without thinking of it.
Even though I like to think back to those days, it would be a lie to say that I long back to those days!
I remember booting VAX/VMS 11/780 from an 8-inch floppy.
And when we got a VAX 730, it didn't take long before someone got hold of a large "Turtle Wax" advertising sticker and affixed it to the front of the machine.
The machine took 20 milliseconds to space fill an 80 character array, and 100 ms (1/10 of a second) to switch processes. We had to redesign one of our applications from three to two processes, to reduce the number of process switches, to make it run at an acceptable speed.
We had a DOS application, DBase II based, so large that the cover had to be taken off machine for it to fit in...
You start the program. It crashes. After trying "everything", you give up and send the PC to the IT guys for hardware debugging. They take off the cover, get the probes in place, and everything works fine. They return the PC to the user: It fails. Back in the workshop, it works fine. After several round trips it was discovered that it works when the cover is off, fails when the cover is on. It took a few more rounds before the true explanation was found.
In those days, many tower cabinet covers were shaped like an (upside down) U, running in tracks that forced you to pull it backwards all the way to get it off. This was a deliberate design to force you to unplug the power cord before opening the machine. You unplugged not just the power cord, but all sorts of cables - screen, printer, keyboard and whathaveyou. That's the clue:
Windows 2.x had arrived, but most programs were still keyboard based. So was this DBaseII application. The IT guys, when testing the machine, opened it, plugged in power, screen and keyboard, but not the mouse - it wasn't needed for testing. The PC booted, the mouse driver initialized, found no mouse to talk to, so it unloaded itself, releasing a couple hundred bytes of RAM.
Back at the office, everything including the mouse was plugged back in. The mouse driver did not release its space. When loading the DBase-application, there was no check, no error report that RAM size is too small, the program won't fit! Maybe an error return was genereated deep inside, but it never reached the user before the system crash was a fact.
When the real problem - insufficient RAM - was identified, memory could be tweaked in other ways, to allow the mouse to remain plugged while this application was running. But for a couple of weeks, it was a great mystery to us how it could be that you had to remove the cover to make space for the program.
When I built my first computer in the 70's (z80 based), I didn't have DOS. All I had was a 2K monitor called Zapple. I didn't have an assembler so I learned to program by the numbers. No external storage till I wire wrapped a card to write data to a cassette drive (I actually used a reel-to-reel). The system eventually grew into a CPM system with dual 8 inch floppy drives. Those were fun days.
One of my early jobs was with a company building minicomputers. Every manufacturer had their own OS in those days. I happened to discover a reproducible situation sending the OS into an infinite loop. I went to one of the OS guys, describing it, and he dug out a hardcopy printout of the source code. We did all application programming in high level languages then, but the OS was written in a language at somewhat lower than C - you could maipulate registers directly, and use inline assembler when needed.
After about fifteen minutes of grunting, flipping back and forth bewteen the pages of the OS listing, he nodded a "yes!", grabbed his pen and wrote two numbers into the source code - two 16 bit values in octal format. I asked him what that was. "Oh, that's the patch for it".
He had jotted down not the source code change. Not the assembler instructions that would be generated by the language compiler, but the octal codes for those assembler instructions. Why? Because he would try out the patch by poking directly into the running OS code of his test machine, and then it is very convenient to have the value ready in advance.
Yeah, I suppose he was right. But he didn't need to look up the instruction code anywhere before jotting it down in the listing, so I guess he could have managed with the assembler instruction as well. But why bother with instruction names, when you know the instruction code.
Jira has become a victim of its own success. It started out as a bug management tool and it has bolted "feature" after "feature" on top. Each one has become more and more clunky because the underlying model was never meant to behave in the ways that people want to use it now.