Question: how to encourage such patterns within a team? I often find it difficult to do it during code reviews and leading to unproductive arguments about "code style" and "preferences".
Funnily, these arguments do not happen when a linter pops a warning instead...
I don't think the idea is to have a market of roads to chose from. It is to make the existing car market more efficient by fixing the externality of other people paying for the damage you do to the roads by your choice of (heavy) vehicule.
Is it true? We, the people, currently pay for roads, we would pay for them in the alternative system - so the total amount of the money we need to pay would not change, only some prices (or taxes) would go down and others would go up. Either we care about having food and we would pay high prices for them (with money we saved elsewhere) or we don't care and we wouldn't pay.
> Heavy semi-trailer trucks disproportionally damage the roads
Which is another reason why freight should be delivered by rail. Yet haulage companies have no incentive to maintain an efficient rail network, when they could exploit a subsidised road network instead.
OK, unaffordable is overstatement but increase in transportation costs will translate to some increase in prices and given that food is already around 25% higher (with some items 50% higher) than before COVID this increase will not be welcomed.
Even though it may change with technological developments, are you aware that EVs are the heaviest vehicles on the market, by somewhere around 140% the weight of ICE vehicle equivalents?
That's weird because there's no public road near me for miles and I can get 90% of the way to "town" without them.
I've also connected my private roads to a couple other private roads so no one has a monopoly on my way to town.
As for the "barriers to entry" mentioned in that article, is absolutely wild. My road and most the ones in our grid network were made with little more than a dude and a tractor (I think you can get suitable one for $10k off craigslist). I initially made mine with an axe, a light truck, and a rope (to rip out small trees) and there's nothing stopping anyone adjacent from doing the same if I'd block the road.
It would work beautifully for the last 10% of my journey. The only reason why there are no private roads for the las 10% is the county tax funds that road, and only a complete and utter moron would build a road when their "competitor" has a price of zero at the point of use. People commonly ask why the public road has a monopoly; it's not that they are a natural monopoly but rather that it's literally impossible to compete with someone with zero costs (tax costs already sunk) so places with public roads have ~no competition.
The second that road gets defunded by the public coffers, guy with tractor would show back up.
Private roads are actually pretty common, found in older suburban development and in rural areas. I live off of one that is about 300m long.
They are unpopular since they effectively require a very small private association to maintain them. They really hurt property values (one reason I bought my place at a bargain price). Most jurisdictions try to prevent creating them because they lead to disputes between neighbours, or poorly maintained private roads become a problem when an emergency vehicle needs to get down one.
The budget for local roads is also quite small, since they don’t carry much truck traffic. My township of 5,000 people or so has 3 part time guys who maintain the roads and a few pickup trucks and a dump truck for hauling the asphalt. That’s it.
The most expensive part of road maintenance is replacing bridges.
Many businesses are not thinking long term. Farming businesses are businesses too, and may prefer short term profitability over long term sustainability.
See for example the depletion of the Ogallala aquifer, which is at the same time an existential threat to to farming and caused by farming.
Imagine if hypothetically a supplier offered very competitive - maybe even loss-making - prices when they had 25% of the market; then once they had 90% of the market and most of their competitors had gone out of business, they planned to raise prices substantially, make back the loss, and produce a big profit.
Isn't each customer's decision to buy (or not buy) from the loss-making supplier a tragedy-of-the-commons situation?
I struggle for an example of that actually working. If it does it must be exceedingly rare. I can think of lots of example of having 25% of the market and then getting closer to the majority by cutting prices, but the part where they jack them back up usually doesn't work. For instance, Rockefeller did that to put his competition out of business, but then the price of Kerosene just kept going down.
The times where it actually worked (railroad) was because the people doing it convinced the government afterwards to "protect the market" (interstate commerce act) and created a violence enforced cartel that prohibited by law rebates and other methods by which cartels (and pre-ICA railroad cartels) commonly fall apart.
Another hilarious thing about the argument is that Roundup, and also the gene package involved in Roundup Ready plants, are now in the public domain. The patents are expired.
There's nothing preventing a country from just ignoring patents, too. That pretty much happened in India with Bt cotton, engineered to express an insecticidal protein. Gray market seeds with the trait became widely available there and the foreign patent holders judged it not worthwhile to try to prosecute. This was all very good news for Indian cotton farmers, especially considering the personal cost to them of exposure to the pesticides they'd otherwise have to have used.
I sometimes plug my phone to a screen with a keyboard. It is not as good as a "real" computer but most everyday thing can be done (sending mails, browsing the web, editing spreadsheets).
I never tried programming on it but I can imagine a world where the only computer i own fits in my pocket.
I would go with a phone that has a keyboard, or with a powerful phone and just use a Bluetooth keyboard. Might be some mini keyboard (my fingers are small).
Yes it is. I believe the reason is that this is all valid python while typescript is not valid javascript. Also, python's type annotations are available at runtime (eg. for introspection) while typescript types aren't.
That said, typescript static type system is clearly both more ergonomic and more powerful than Python's.
Are you saying, essentially, that if we split the "I" and the "O" in "IO", then ignore the the "O" in the way described in the article, the resulting program would be "safe-enough" ?
Hmm, at least in Haskell terms that would not be sufficient, if we define "IO" by the IO type, because some types of O, such as setting the value of IORefs, is definitely something that could be witnessed elsewhere depending on the flow of the IORef in question.
But I think in concept that maybe that's pretty close to the concept. Input from IO is arguably the definition of impure that we care about. But not all forms of Output are necessarily radioactive waste for purity. We might be able in practice to give ourselves a bit more wiggle room on that side without breaking all the benefits of purity, and gain substantial practical utility for a very, very small loss in theory. With some careful thought it's even possible the theory loss could be either "minimized or eliminated" or "strongly characterized and constrained". I don't know enough about the language in question to know what is in it, but a language that had first-class messaging of some sort ought to be able to define a form of output that is "you can send this message to this target any time you want without breaking purity", and the the code for the thing receiving the message could still itself be constrained by the effects system. (You could conceivably go so far as to insist that the resulting "exception handlers" rigidly form a tree that grounds out into code that uses none of these implicit handlers, though my gut says that will probably end up being more trouble than it is worth.)
This is basically what my effect system, Bluefin, achieves with its Stream type. "Stream" is an "output channel" that by itself is completely pure. Then, at the point of handling, you can choose to remove the effect in a pure way, by interpreting it in a way that doesn't use any effects, or by using IO, from which you then cannot escape.
Question: how to encourage such patterns within a team? I often find it difficult to do it during code reviews and leading to unproductive arguments about "code style" and "preferences".
Funnily, these arguments do not happen when a linter pops a warning instead...
reply