People do - but the actual answer to your question is as you’re implying: it’s not as simple as “you get paid to consume”.
There are negative spot prices in Europe all the time - but they are not usually negative enough to make up for the grid fees and taxes. Or they are in countries like Germany that hasn’t rolled out smart meters, so consumers have no way to access spot prices
Similarly in Europe; spot market with a big single pay-as-cleared spot auction for every quarter-hour, and then a continuous auction for the same periods closer to delivery, similar to the normal stock market. Millions of residential devices are traded there right now
My experience is this is nearly impossible, the solution is new packages written after typing was introduced.
I don’t know about SQLAlchemy, but for libraries like pandas I just don’t see how it can be done, and so people are actively replacing them with modern typed alternatives
Ha. I just finished a huge rewrite at work from sync SQLAlchemy to async SQLAlchemy, because the async version uses a totally different API (core queries) to sync. So this implies if I want type checking I need to use a different ORM and start again?
I love how Python makes me so much faster due to its dynamic nature! Move fast, break things!
I don't agree that dynamic nature makes things necessarily faster, if you compare Python to C or Java it is true, but if you compare to Typescript it is not.
With a decent typing system and a good editor that makes use of it (and AI-assistants nowadays) the prototyping can actually be both faster and more stable.
I feel like you can substitute almost any cutesy convenience feature in this sentiment. I wholeheartedly agree.
For software that is going to be maintained, optimising for debuggability, comprehension and minimised ball-hiding is almost always the side to error on.
My brother, a middle school teacher, was talking about TikTok yesterday. Every 2 years he gets a new batch of 10-year-olds.
They all have a “class chat”, and it is used daily for relentless cyber bullying. The current trend TikTok is pushing this month is to push the boundaries of calling black kids the n-word without explicitly saying the word. There is one little black girl in his class.
He says every class is the same, horror ideas pushed by edge lords TikTok algos push on the kids. Relentless daily bullying. And unlike bullying on the playground or at the boys and girls club.. there is no realistic way for adults to intercede beyond disconnecting their kid, shutting them out of the social context entirely.
but can your brother setup a class chat that he moderates?
I'm working on a simple chat app in Go as a learning project [0], you're welcome to use that, but honestly there are almost certainly better solutions out there, which he can actively moderate. Maybe a WhatsApp group, or something that can be used by a web interface (old forum techs?)
Group chats can be nice, I'm part of several acroyoga group chats and they're lovely, probably because adults who practice acroyoga tend to be nicer than middle schoolers.
My primary issue here was actually more about TikTok - I don’t think it’s right that software engineers get rich writing code that pushes “bullying challenges” on children to increase engagement and ad sales.
But: all other things equal, of I get to pick between “10-year-olds primary daily public forum is completely, cryptographically, devoid of any moderating adult presence whatsoever” and - what I had - 10-year olds have privacy but there are adults around that have a chance at picking up that things are going off the rails”
There is no contradiction between “constructors cannot fail” and “fail early”, nobody is arguing the constructor should do fallible things and then hide the failure.
What you should do is the fallible operation outside the constructor, before you call __init__, then ask for the opened file, socket, lock, what-have-you as an argument to the constructor.
Fallible initialisation operations belong in factory functions.
The real problem is that constructors and factory functions are distinct in the first place. They aren't, in Rust, and it's much easier to reason about and requires far less verbiage to write.
This is the exact opposite? They explicitly encourage doing resource-opening in the __enter__ method call, and then returning the opened resource encapsulated inside an object.
Nothing about the contract encourages doing anything fallible in __init__
I’m intrigued as well.. My experience is notebooks struggle as a format for production code. We encourage people who work heavily in notebooks to use them for exploratory work, but choose other tools when it comes time to ship.
When you are exploring something, experimenting, showing.. it’s great; train-of-thought structure, APIs like Pandas optimised for writing and terseness etc.
But when you have a piece of code that will lose a million dollars a minute if someone ships a bug, and which will be maintained by many engineers over many years, then you really want a format that’s optimised for long-term maintenance, incremental change, testability, and APIs optimised for readers.
I write production code, I also work lots in Jupyter notebooks.
Personally, I think the fact that notebooks are usually easier/funner for me to work with is a big problem. I'm by no means a Clojure expert, but I did do a semi-large project in Clojure a few years ago, and some of the ideas of true REPL-driven development that exist there are things I wish that Python supported.
It's hard to explain without actually learning it for real (and most Python devs mistakenly think Python has REPL-driven development; I sure did before learning Clojure!). But once you get used to being able to interact with your actual source code, and at any point just being able to write new code and immediately print out its value, then with one shortcut make it part of the regular codebase... that just blurs the distinction that exists between Jupyter Notebooks and production code in a way that makes everything much better.
I'd love to hear more about this REPL-driven development. I've heard people bring it up from time to time, but it's clearly very different from the typical "stateless horizontal micro-service" that has become common practice.
What tools are used for "write new code and immediately print out its value, then with one shortcut make it part of the regular codebase" and how does that square with working on a team and getting code reviewed?
I’ve heard it’s also liked among economists because it’s like.. “sound”, somehow, or “efficient” as far as taxes go? Like a lot of special taxes, tariffs, deductions have super complex side effects, kickbacks, unexpected payees and loopholes.. but as I understand VAT is relatively “sane” on paper?
But also there was something about taxing consumption that was bad somehow.. is it regressive? I don’t remember. Feels “flat”, but maybe not?
Neutral is the word. It means that the tax does not change what's the rational actions vs if the tax was not there.
And yes, it's regressive relative to income. Poor people spend all their money on essentials, paying the vat on all their income. Rich people can save most of their money (e.g in stocks), and end up paying a much smaller percentage of their income in VAT.
It should also be added that in most EU countries, essentials like food have a lower VAT rate than luxury goods, specifically as an attempt to address this.
The taxman thought of that - at least in some jurisdictions.
In my native Norway, if you are a professional and do work benefitting yourself, you are supposed to pay VAT on the value of the job you did, even if it was done after hours.
Makes me wonder if those also applies to professional chefs and cleaners. And do daycare staff need to declare time spent taking care of their own children?
No, it's only for stuff which needs 'special competency'. E.g if you are a plumber then changing gaskets are Ok (because that's something 'anyone' can do), but not bigger stuff.
Kind of but not really completely correct. It's not for professionals in general, but for self-employed professionals. And 'only' for the work which needs special competency. E.g is changing gaskets as a plumber ok, but more serious work triggers VAT.
But yeah, pretty lame rule, and I doubt many actually follows it. I think it's primarily meant for people doing house flipping.
it is regressive, it impacts small earners more than rich people, since a larger share of their income goes into direct consumption.
But many countries have different VAT brackets for different goods, e.g. in Italy at different times (I'm not sure of the current brackets) "staple" goods like bread or milk had 4% VAT, health and education had 5%, fish or meat had 10%, generic services have 22% and at some point "luxury" goods had 30%+ vat.
Yes, on paper VAT works out better, and it's a darling of economists. In practice, VAT requires more paperwork, accounting, and interaction with the bureaucracy. The end result is that even though the U.S. has the tax pyramiding "problem", you find much more tax avoidance in Europe than in the U.S. Grey and black markets constitute a huge, double-digit fraction of the European economy, and it's what helps sustain organized crime there, even in stereotypically rule-abiding Germany. Like many things in Europe, VAT works well for large enterprises; it's quite burdensome for small businesses, and that's probably where the complaints are coming from--small and medium-sized businesses in the U.S. who find dealing with EU taxation daunting.
In school (economics, law) I had learned all about how great the VAT system is. But about 10 years ago I wanted to buy a simple ~$100 rack shelf to fit a PC Engines APU from an Italian manufacturer. I had to create an Italian tax ID, which was annoying. I recently had to use it again just to buy some tins of anchovies from Italy.[1] In both cases I received more paperwork regarding the VAT than I did the import paperwork. It seems slight but it's actually quite a lot of friction compared to just giving X dollars and receiving your product. Dealing with tax and import crap is exactly why import/export companies exist, creating needless intermediaries that siphon value.
In that light, the "inefficient" sales tax premiums we pay in the US can be interpreted as the cost of enjoying a more decentralized taxation system that makes compliance more convenient and transactions run smoother. There's less accounting and--more importantly (because US accounting can be complex, too)--less coordination required. It's the economics version of worse is better.
[1] And just to be clear, in both cases I was purchasing through a clearly retail-oriented store website. IOW, even as an effectively retail consumer you had to provide a tax ID--the equivalent of an employer ID or social security number in the US. I don't know if this is a hard requirement for retail generally in Europe, or just the easiest way for them to deal with VAT accounting on their end when only a small portion of their business is retail.
I'm in the US so didn't have a VAT ID. Plus, I originally wasn't trying to purchase it as a business, and the businesses I was purchasing from do sell to individuals, it's just that apparently they wanted even individuals to provide a [personal] tax ID. Though, to get the Italian tax ID I believe I did have to register using an American business entity. (I can't remember, and apparently because of the strict privacy laws AFAICT there's no online database where I can query my Italian tax ID to see what name it's registered to, or even whether it's registered to a business or individual. It's somewhat understandable, but at least in the US the government provides an online service that can confirm whether a name matches a tax ID.)
Because they are not able to deduct US state sales taxes on business inputs from the final VAT. While Europeans can deduct their local (VAT) taxes on business inputs.
There are negative spot prices in Europe all the time - but they are not usually negative enough to make up for the grid fees and taxes. Or they are in countries like Germany that hasn’t rolled out smart meters, so consumers have no way to access spot prices