354 karma · joined July 17, 2007
In embedded world, memory often needs to be exactly controlled, and allocation failures are fatal without a more complex MMU. In kernel world, I believe the main reason is that allocations can block.
Tangentially, I really wish authenticator apps continued to show the previous code for 30 seconds so I can continue to refer to it for apps that don't allow copy and paste.
A global payroll provider effectively acts as the "local employer" (they have a local entity in each country) and contracts out the employee to your company, so while the employment contract is with the provider, you can still sign all sorts of side-letter contracts like NDAs, IP assignments, stock grants etc without issue.
Pros are that unlike a contractor, the employee is subject to local labour laws and protections. Cons are that the employee is subject to local labour laws and protections (and the employer is subject to local labour taxes, which the payroll provider will pass through to you).
In certain countries with employee-favourable labour laws, we found it easier to attract employees this way, as they may be unwilling to forego the protections and social security / pension payments they would normally get as an employee.
[Edit: but beware of the double edge of course - if you ever want to fire such an employee, you may run up against said strong labour laws.]
I also don't know the specifics of German law, so the fact that my account could get suspended for violating something I am not aware of is peculiar in itself. The point is that there is no single privacy policy and single jurisdiction to worry about - it is a guess, depending on where the instance is hosted, and may even move under you without notice.
[edit: I am in the process of selecting an instance personally - I have not decided yet, and the process of picking one seems somewhat fraught.]
I have seen two just today, listed explicitly in the rules of distinct servers, without particularly looking:
• No content that's illegal in UK or Germany.
• No crypto.
Maybe not easy, but also not hard. The only thing that screws you up is someone playing with the airplane mode toggle of their phone while moving within your detection radius.
The old one did; luckily I can still use that with my personal profile until I upgrade my phone, unluckily I didn't install it in time on my work profile - which is where I pay for many more things.
[Don't mean to bash on you personally, it doesn't sound like you are even on the app team, just annoyed by the downgrade.]
I see this particular requirement more as a corrective action - to actually give back to users the choice that Google took away through abuse of their market position. Users don't particularly care who is making money in the process, while their rights are not infringed.
I am perfectly fine with the corrective action being dollar-neutral for Google, or even slightly positive. There is nothing wrong with incentivising good behaviour, as long as those incentives themselves don't become abused. If the right thing to do by your users is also the better thing to do from a business perspective, we might not have to wait for a court decision next time.
I suspect a side-effect of libraries lacking support for the full range of ISO8601 (for example, refusing to parse a value without an offset, forcing people to use such hacks). Wouldn't surprise me; iOS doesn't even have a consistent way to parse ISO8601 values with and without milliseconds.
[edit:
Apparently this is a RFC3339 thing, did not know that: https://tools.ietf.org/html/rfc3339#section-4.3
Negative zero offset is invalid in ISO8601, but valid and carries the meaning you describe in RFC3339. I misread what that meaning actually is from your comment - it is different to a "floating" or unqualified local time, it always represents a UTC time but with an unknown local time offset. ]
Is the distinction in representation too subtle?
We accept this subtlety elsewhere; we are used to 0 and "0" being different things, and expect them to behave differently under operators. Few would find the following surprising:
0 + 0 == 0
"0" + "0" == "00"
Then why would we expect these to behave the same? 20200710T010000Z + `3 hours`
20200710T010000 + `3 hours`
The first is a fixed timestamp in UTC, the result of the second depends on timezone.https://news.ycombinator.com/item?id=23783603 called for Unicode but for Time, which I think is perfect. In that framing, ISO8601 is UTF-8, but it is Unicode that is needed for everyone to agree on what is "code point" and what is a "character" (equivalently, what is a "calendar date", what is an "absolute timestamp", etc).
ISO8601 without an offset is semantically different to one with an offset, it represents a time in local timezone (context-dependent). It isn't an "optional" offset in the sense that you can just omit it, it is a fundamentally different data type.
Without this distinction, there is no way to specify a local time in ISO8601, which would be highly inconvenient for certain applications. For example, how do you represent an event that occurs at 9am every day regardless of location? After all, dates and times are used for more than just storing absolute timestamps.
You are absolutely correct that offsets are also not timezones, which makes the ability to specify local "floating" times even more important (i.e. you can't just denormalize the above concept into a list of timestamps with offsets for each timezone you care about, as the offsets will change over time [edit: and tz->offset conversion is lossy and not reversible]).