That syntax is very clean when it works. I think however the limitation of not being able to pipe arguments into 2nd, 3rd, ..., positions and keyword arguments, or variadic explosion like the syntax showcased in the article makes it less powerful.
Are there other syntax helpers in that language to overcome this?
You can DRS (https://www.dtcc.com/asset-services/securities-processing/di...) your shares so that no one can lend them out from you.
Some brokers have a setting (opt in or opt out) that disallows lending your shares (or that compensate you if they do).
I don't get the "its hard to measure throughput" line. I'm using RDS at work. At some point we had 20TB data, with daily 500GB (batch) writes into indexed tables. Same order of magnitude cost, sure. But the combination of RDS instance monitor, Performance Insights, PGadmin dashboard means you have: visual query plan with optional profilling (pgadmin), live tracking of SQL invocations with # invokes per second, avg number of rows per invocation, and sampling based bottleneck analysis (disk reads, locks, cpu, throttling, network reads, sending data to client, etc), you have per disk read/write throughput (MBps), IOPS being used, network throughput, etc. At most times what i felt lacking was the ability to understand why PG was using so much CPU/disk troughput(e.g. inserts into indexed tables) but the disk throughput the instance was under was always very visible.
The article also doesnt mention anything about using provisioned IO instances. Nor any mention of which architectures have the highest PIOPs ceiling.
> "it is difficult to write a program that can play a legal action in every situation"
This is trivial (just forfeit).
The hard part is figuring out the best possible action to select from. MTG is particularly hard at this because:
* Some actions are only allowed in certain conditions (e.g. in response to, in a specific phase, etc)
* Actions vary significantly not only in their effects but also in their inputs (some require targeting a creature, a player, an opponent, a card in hand, a card in exile, a name of a card that could exist). Some have a varying list of inputs (target many creatures). This variance makes it hard to encode the action space.
* The state space is huge. It is not only determined by the cards in play, but is also affected by the meta-game (to play optimally players have to play in a specific way to avoid getting countered by a card that could be in play by the opponent, because that card is legal to play and is commonly used by decks that look like what the opponent is playing).
* Technically the state space is also infinite because you can create infinite loops that keep creating more and more triggers/creatures/etc.
While I was in SF this wealth disparity feeling was present, but it was an order of magnitude less than what I saw in Mumbai. There you have 30+ story building acting as the personal residence for a multi bilionare (complete with 2 helipads) and across the street a family of 3 living on a "tent", cooking food on a makeshift fire made from trash and a baby drinking milk out of a transparent plastic bag - all of this under the nauseating smell of human feces. This wasnt a one off thing, its all over the place.
> I hate to say it, because that's not how science should work
I have the opposite view. Science should be incremental and authors should be incentivized to share their (interesting) findings early and often. This makes the community as whole move faster because you get more visibility, funding, man-hours dedicated to things that are on the leading edge of research. Consider a scenario where a researcher is required to explain exactly why some phenomenon happens. Maybe it took 1 year to find the original phenomenon and then it takes 10 years to explain it to a reasonable level. Everyone only gets the benefit of this research 11 years after. Now consider the opposite scenario. After 1 year the author publishes and gets the attention of fellow colleagues. Some of them will collaborate together adding more man-hours / year, reducing the total time. Some of them might have already discovered something similar and thus avoid all repeated work. Some of them might be better positioned to solve the explanation piece based on their field of expertise, personal interests, availability. All of this makes the innovation happen faster.
What you often see (or should see in high quality papers) is an hypothesis of why something happens. This in itself is valuable. Many hypotheses are unproven until today. If you assume that these hypotheses are true you'll often find better results or find them faster; and if you don't you have discovered something interesting to report on.
Computing gradients is easy/cheap. What this technique solves is that you no longer need to store the computed values of the gradient until the backpropagation phase, which saves on expensive GPU RAM, allowing you to use commodity hardware.
Are there other syntax helpers in that language to overcome this?