Another amazing find by @larsbrinkhoff is this #LAP6 source code printout: https://bitsavers.org/pdf/washingtonUniversity/linc/LAP6_Manuscript_Listings_May67.pdf

It was good to see probably the most hardcore #LINC program out there in its original source form. But looking into this we found an oddity that uncovered some ingenious #RealProgrammer tricks that Mary Allen Wilkes used in her code.

Take a look at the attached screenshot here. This is a section from the `MSDISPLY.M` "manuscript" (text/source code) file for the main LAP6 editor. The first column is the memory location (in octal), second column is the octal value for the instruction line, and to the right of that is the source code in LINC assembly.

The code is full of subroutines, which make use of the fact that the first 16 memory locations are treated as a sort of register file, and the `JMP` instruction stores a return pointer in "register" 0 so that a `JMP 0` is basically `RET`. The only mnemonics that are in this code are `JMP`, `LDA`, `SAE`, and `XSK`.

`LDA i` loads the next word in the code into the accumulator, `SAE i` skips an instruction if the accumulator is equal to the next word in the code, and `XSK i 0` checks to see if the address in register 0 has overflowed somehow. The details of this subroutine are less interesting than all of the other lines.

Some of the lines have text like `BIGGEST BLOCK USED IN WA` and `MAXIMUM LN`, which the assembler has assigned the value `0000`, presumably because they are invalid instructions in LAP6 assembly. I guess that's a neat trick: bad memonics can make a handy self-documenting null value!

But take a look at line `524`:

```
524 0011 CURRENT LN
```

That's a bit of a novelty. How did `CURRENT LN` assemble to the value `0011` (9, decimal)?

Well remember that Mary Allen Wilkes had a strong hand on the LINC ISA: she wrote the emulator that could run LINC code before the hardware was anywhere near functional. She also wrote the assembler for this ISA on that emulator. She had direct control of both parts of this chain, and so she made it so that the LINC Assembly Program only checked two letters to see if it was a valid mnemonic: the middle letter was ignored for uniqueness!

So the word `CURRENT` basically matched the regex `^C.R`, and the assembler put the instruction for the `CLR` mnemonic, which is `0011`! (Incidentally this clears the accumulator when run as an opcode rather than an operand).

I'm still not sure how it picked the values. Somehow at one point she uses the text `TAPE INSTR` to match the `SCR` instruction (`0340` if you're curious). So my regex above wasn't the only way it could match mnemonics.

But now that I know that only the first and third letters are unique in combination, the whole instruction set begins to make more sense to me.

#RetroComputing #MaryAllenWilkes

Imagine having websites that are easily accessible over the internet. Real programmers do that over punchcards, which they send over a complicated network of pneumatubes, that does routing by using pressure inconsistencies to evaluate a phone number on that card.

#realProgrammer #programming

“In a grocery store, the Real Programmer is the one who insists on running the cans past the laser checkout scanner himself, because he never could trust keypunch operators to get it right the first time.” 🥲

Ed Post, "Real Programmers Don't Use Pascal",
DATAMATION, July 1983, https://homepages.inf.ed.ac.uk/rni/papers/realprg.html

#fortran #realProgrammer #pascal

Real Programmers Don't Use PASCAL

I just spent the last two days upgrading my terminal. After seeing the default experience on Kali Linux, I always wanted to have something similar on my main machine (using Linux Mint).

I am proud to say that I finally achieved it using a combination of Terminator, FISH and Starship. 🥳 I chose this route because it takes considerably much less effort to set up.

https://itsfoss.com/terminator/
https://itsfoss.com/starship/
https://betterprogramming.pub/fish-vs-zsh-vs-bash-reasons-why-you-need-to-switch-to-fish-4e63a66687eb?gi=b88e773773ea

#Linux #Terminal #FancyTerminal #RealProgrammer 😉

Terminator: The Tiling Terminal Emulator for Linux Pros

You might have seen some colleagues or YouTubers using a terminal window with multiple terminal sessions running in it. Some pro Linux users do the multiple split pane with screen or tmux commands. These commands work in any terminal application but involve a steep learning curve. If you want multiple

It's FOSS

#realProgrammers write code.

- Yes, the plan
- Yes, they draw up design documents
- Yes, they do a discovery phase

But at the end of the day, you know you are a real programmer if you wrote code.

If you didn't, you may not be a #realprogrammer.

I once reinvented a SaaS because "I'm not paying $75/mo for 150 lines of code and a cron job."

It took 3 years to eventually complete it.

Yes, it now works the way I want it but when it breaks, guess who has to fix it.

#realProgrammer

#realProgrammer tweets are teasers from my upcoming bombshell keynote talk at @[email protected]

http://bit.ly/39JHpBq

It'll either be awesome, or my last invite to speak. Either way, you don't want to miss it. :)

Sunshine PHP Developer Conference

Sunshine PHP Developer Conference in Miami, Florida | Home

Then - and only then - can we select the appropriate tool for the job and apply it correctly.

#realProgrammer

As programmers, we have to make sure that we spend more time understanding WHY we are writing the code, and less time understanding HOW.

Concepts over tools.

#realProgrammer

My keynote at @[email protected] will be so controversial, it may be the last time I'm invited to speak ever.

Not talking politics
Not talking religion

But I'll trigger a LOT of outrage because I'm talking about being a #realProgrammer.

Don't miss it. :)

http://bit.ly/39JHpBq

Sunshine PHP Developer Conference

Sunshine PHP Developer Conference in Miami, Florida | Home