I want to drop here the not very well known fact, that the SQL Standard grammar distinguishes between "SQL language identifier" and "regular identifier". According to the rules, a SQL language identifier can not end with an underscore (copied from ISO/IEC 9075-2:1999 "5.4 Names and identifiers":
<SQL language identifier> ::=<SQL language identifier start> [ { <underscore> | <SQL language identifier part> }... ]
<SQL language identifier start> ::= <simple Latin letter>
<SQL language identifier part> ::= <simple Latin letter> | <digit>
So, using names with trailing underscore should always be safe.
I know but it's not really a great way of running and developing apps, that's what I mean. The best tool for it is visual studio (full version) which doesn't run on Linux. And you have to run the bytecode interpreter. Whether it's mono or the official .net doesn't really matter.
I'd rather use something open like python, go etc. And most people do, there's few Linux apps that use .net. Microsoft didn't even use it for visual studio code.
Your arguments are all over the place. The Mono project is practically dead. Official .NET runs on Linux without issues. It uses the modern CoreCLR runtime on Linux. Some other targets, like WASM, still use a runtime based on Mono, but CoreCLR has been used on Linux for nearly a decade. Best IDE for it is JetBrains Rider (by far) which runs on Linux. It uses JIT compiler, not interpreter. For CLI tools, AOT compilation is also supported, which compiles to machine code like Go/C++/Rust do. Also, .NET is open. The only issue is that primary development is done by a single corporation.
FWIW the dotnet shop I work for has moved entirely to running on Linux Kubernetes in production and issues M series macbooks (with Jetbrains Rider licenses) to developers. The last Windows Server VM was decommissioned in 2019.
Now that you say it, I think our iPad doesn't have GPS indeed. The only app that required it and that we were using was the star map. Since we used the iPad at home it worked for us to just enter our position once manually.
Giving employees stock options does not solve the "employes should own the company" problem, when there is a market to sell the stock. Shareholders and employees have different goals and interests regarding the company. For example, the employees they may have to decide on the elimination of their own jobs in order to secure the value of their stock holdings (which btw. would make the company not owned by their employees anymore)
A more interesting approach would be a model where being a employee automatically gives you a vote on company wide decisions including. the distribution of profits, just how being a cititzen of a democratic country gives you a vote on the fate of your country (similar to the Mondragon Corporation in Spain)
so in the extreme case, the employees can decide to return 99% profits to themselves and return 1% to shareholders? It sounds cute but will be hard to make it work when incentives are not aligned well. Just like Communism sounds good in theory and everyone with a kind heart will like more equality but in practice, it destroys the entire cake.
I'm also interested. Setting up a passwordless SSH account for some public service sounds like a good way to give your machine away to North Korean hackers, because you forgot to set someting in /etc/sshd to "no".
Is there a usable description somewhere on how to do this safely?
Under UNIX, the lowest available file descriptor for the process is returned from open/create (also in Posix). So if you close(0) and then immediately open() something, you will (probably) get 0 as the new file descriptor.
This is the way redirection was done in early UNIX versions, at least I think until System 7, where dup2() was introduced to address the race condition lurking here.
2008 ThinkPad t400 user here, running Ubuntu. Most business class notebooks are incredibly durable and the market offers replacement parts for 10 of 15 year old devices. A t400 battery is less than 25€ on Amazon and there are dozens of vendors.
<SQL language identifier> ::=<SQL language identifier start> [ { <underscore> | <SQL language identifier part> }... ]
<SQL language identifier start> ::= <simple Latin letter> <SQL language identifier part> ::= <simple Latin letter> | <digit>
So, using names with trailing underscore should always be safe.