Yup. If you call a function with the C calling convention with the incorrect number of parameters, your cleanup code still does the right thing. With the Pascal calling convention, your stack is corrupted.
Yeah, it's really irresponsible how Pascal sacrifices such safety features in the name of faster and more compact code... oh, wait, the compiler stops you from calling a function with incorrect parameters? Bah, quiche eaters!
There were no words for this stuff. People just made it up, and it took years for something to emerge as the de facto standard term for a collection of data persistently stored.
There's an interesting parallel with the emacs editor. Operations we now universally call "Cut" and "Paste" are "Kill" and "Yank". The better terms won out and emacs is stuck with Ctrl-K and Ctrl-Y as not-so-intuitive mnemonics for cut and paste.
I actually don't think they won out. Mindshare maybe, but I use kill and yank on macOS all the time. In fact, since they are enabled by default, I use Emacs keybindings all the time and everywhere on my Mac. Even the password entry screen in macos has Emacs keybindings.
I always thought that Apple saw the superiority in these bindings that they have them included by default.
As much as I love emacs, I think cut and paste is better metaphor for text editing than kill and yank. Once the key combos are part of muscle memory, the value of mnemonics goes down, but they're very useful for adoption. This is an unfortunate barrier for emacs beginners. Even though the usual CUA keystrokes are available (and even the defaults on some popular starter configurations), the terminology creates some friction when reading the docs.
I agree the semantics are strictly superior though.
One of the great things about C64 BASIC and similar MS BASIC derivatives is it's extensibility. It defines a bunch of pointers, including $0033 this article uses, that control the memory layout. Manipulating them carefully allows you to free up blocks of memory that BASIC won't trash. Or deliberately "trash" for hacks like this.
On top of that, a handful of key internal BASIC routines are called indirectly through pointers. BASIC itself is in ROM and more or less immutable, but by redirecting those pointers you can have it call out to new code in RAM.
Did some development for a server application that supported RS/6000 among other platforms. AIX on RS/6000 was a nice enough Unix but, being used to Solaris, everything seems just slightly off. I think it performed slightly worse for the same price as Sparc hardware for our purposes, but some customers wanted an all IBM solution (we also supported an OS/2 client).
The main thing that stands out was a tool (smitty?) that could do system configuration and IIRC it could show you the steps to do it manually as well.
Don't forget the other cool feature of smit: the running man.
When you started an operation, there was animated icon of a man running. If your command succeeded, he'd stop and cheer. If you got an error, he'd trip and fall on his face.
Also, another advantage of AIX was that it included a volume manager and it was enabled by default. Back in the early 1990s, this was fairly unique. Some other operating systems offered, but only as an expensive add-on, so in practice you did without it. Being able to add a disk and just tell the system to move a filesystem over to it was pretty amazing.
Where I worked we got an early system as we made graphical desktops for workstations. IBM required that we have a separate locked room for the system!
Despite having over 20 different brands/Unix systems, AIX was the only one we had to pay a 3rd party consultant to come in and do installations and upgrades. That was back in the days of tapes. It used some convoluted volume management system where the tape contents got spooled into the disk and then the installation absorbed that.
smitty always felt so slow. There was a release where it was sped up. They didn't actually make it do the work any quicker - they just doubled the animation speed of the running man that was shown.
One of the big differences is that it is also COFF based like Windows, and Aix shared objects have similar capabilities, with private by default, import files, and having the capability to let the compiler handle delay loading of specific symbols.
I used Aix 5 series quite a bit, and looking at docs it seems to still have the same capabilities.
Yes, the sysadmin tool was awesome. There were 2 versions: one graphical (smit) and the other text/console based (smitty). Both versions had the same capabilities.
I think the other thing is the Object Data Manager (ODM)- configuration data about devices, networking configuration, etc. is stored as objects, as opposed (or in addition to?) to text files.
I also believe the AIX software package manager uses ODM.
`smit`, IIRC. Most workstation platforms, you mainly just had to know whether they were based on BSD or System V (or Apollo Domain, or the VMS of the VAXstations), but AIX had this interactive UI thing that was different.
Three other things nice about the RS/6000 and AIX:
* When it first came out, it was noticeably faster than the SPARCstations at the time.
* The hypertext documentation browser was nice. (This was slightly before the Web.)
* IBM would send two field technicians, in suits. (Which was funny, when they were meeting with frumpy nerdy teenager me.)
(We developed workstation software engineering tools for mil/aerospace/datacomm, which seemed to be wanted on everything except SGI. So, every time there was a new architecture, or a major OS change like SunOS 4 to Solaris 2, we'd get it immediately for porting.)
Eh, smitty could be irritating because it persisted some changes but not others. So it was unclear if things you did outside it would get undone at boot time.
This is exactly how I feel about Dune. The invented words and world-building are overwhelming at first, but once you absorb them it makes the narrative richer.
Two of my favorites, too, although I'd go with Anti-Fragile from Taleb.
I think Anathem is Stephenson's best. The Diamond Age is also really good. For every one of his books, I just wish he could write an ending that matches the quality of the rest.
The core of this a library called nsync. It appears most of the improvements by Justine are upstreamed into nsync itself which doesn't have any of the baggage of cosmopolitan. Whatever your opinion of the project or author, they've made good effort to not lock you in.
I second this. OIDC is much nicer and my experience using it with federated identity sources through AWS Cognito was smooth. The sad reality is that SAML is already entrenched in many enterprise environments and unavoidable.
When I had to figure out how to add SAML authentication to a custom application, I built a barebones, no-framework Java application[1] just to understand the webflow. A good way to understand it is to just set up your own IDP like Keycloak running locally and play around with it.