What a strange article. To summarize, a guy is rejecting the current opinion about the autism spectrum, seemingly because they struggle to understand behaviour of their daughter once she entered puberty. Then they read about a specialized personality disorder that seems to fit better in their view, and now they spend their time diagnosing everyone and their dog within their surroundings, including themselves, with schizoid personality disorder.
I have people close to me with actual diagnosed schizoid personality disorder, this disorder is nothing like this person describes it, to the point of being offensive. No wonder why the actual professionals they are talking to so outright dismiss them.
I hear echos of my friends' stories in that kid. The author exhibits a pattern of somebody doubling down on a wrong idea in the face of increasing attempts to correct them. Eventually it devolves into conspiratorial thinking that writes off everybody else that disagrees with them. In a weird way the author is unconsciously lucid about their own problem.
Also, browsing through the rest of the blog, the author seems to be deep in the "incel" social darwinism rabbit hole, which explains why they have so much difficulty to shoe-horn everything into their world view to the point of contradicting themselves within the same sentence. The entire article (or entire blog even) could be used as a case study of severe cognitive dissonance due being trapped by one's own dogmatic ideology.
You are saying that the daughter's behavior exhibits characteristics of a female entering puberty? I don't want to put words in your mouth, but I read your statement to mean "the author is seeing common female behavior." (since all women enter puberty)
You mention someone with "actual diagnosed" disorder assigned by "actual professionals".
It seems like you think the daughter's behavior should be thought of as more characteristic of behavior of the female sex and less that of a woman expressing a diagnosed disorder. Can you clarify your thoughts?
I read the article and saw more narcissism and anger than autistic behavior, and I'm not too familiar with how much the "professionals" treat narcissism as a subset of autism.
I think you are reading too much into it indeed. I just paraphrased what the author called "My teenage daughter went mad."
I explicitly do not want to make a statement about the normality of the described behaviour, as it is impossible to do something like that on a third-person account, even if you were a "professional".
And I would like to point out that you are doing the same.
What I criticize indeed is the simplistic view of mental disorders put forward in this article, especially personality disorders. Differential diagnosis is very difficult in psychology as many disorders are disruptions of similar underlying cognitive processes, and comorbidities are common. Their view of schizoid personality disorder is not accurate. For example the part where the author dismissed the psychologist who reminded them that those disorders are only diagnosed in adults. This is what struck me as very odd, which is why I mentioned the age of the daughter. This shows a severe deficiency of knowledge what personality disorders actually are. While there is genetic disposition for developing a PD, they are generally considered to be acquired during childhood and adolescent personality development.
In addition, the author seems to get confused by the similarity in name of schizoid PD and schizophrenia (confusingly even though they seem to be aware that the illnesses are different) by assuming a prospensity to having a psychotic world-view.
An outdated view considered it actually to be impossible to get rid of a manifested PD in adulthood, while modern views fortunately see more neuroplasticity in adults. Diagnosing a PD in early adolescence does not make sense, rather one would identify stressors in the environment nurturing dysfunctional patterns and try to resolve those before the behavioural patterns are embedded too deeply.
But it is difficult to tell what the author actually means, as they are somewhat contradictory in their thoughts and seem generally ill-informed about basics.
For everybody reading this and scratching their head why this is relevant: Python subclassing is strange.
Essentially super().__init__() will resolve to a statically unknowable class at run-time because super() refers to the next class in the MRO. Knowing what class you will call is essentially unknowable as soon as you accept that either your provider class hierarchy may change or you have consumers you do not control. And probably even worse, you aren't even guaranteed that the class calling your constructor will be one of your subclasses.
Which is why for example super().__init__() is pretty much mandatory to have as soon as you expect that your class will be inherited from. That applies even if your class inherits only from object, which has an __init__() that is guaranteed to be a nop. Because you may not even be calling object.__init__() but rather some sibling.
So the easiest way to solve this is: Declare everything you need as keyword argument, but then only give **kwargs in your function signature to allow your __init__() to handle any set of arguments your children or siblings may throw at you. Then remove all of "your" arguments via kwargs.pop('argname') before calling super().__init__() in case your parent or uncle does not use this kwargs trick and would complain about unknown arguments. Only then pass on the cleaned kwargs to your MRO foster parent.
So while using **kwargs seems kind of lazy, there is good arguments, why you cannot completely avoid it in all codebases without major rework to pre-existing class hierarchies.
For the obvious question "Why on earth?"
These semantics allow us to resolve diamond dependencies without forcing the user to use interfaces or traits or throwing runtime errors as soon as something does not resolve cleanly (which would all not fit well into the Python typing philosophy.)
FWIW, I've come to regard this (cooperative multiple inheritance) as a failed experiment. It's just been too confusing, and hasn't seen adoption.
Instead, I've come to prefer a style I took from Julia: every class is either (a) abstract, or (b) concrete and final.
Abstract classes exist to declare interfaces.
__init__ methods only exist on concrete classes. After that it should be thought of as unsubclassable, and concerns about inheritance and diamond dependencies etc just don't exist.
(If you do need to extend some functionality: prefer composition over inheritance.)
At an even more basic level, the lack of static typing seems like such a tradeoff getting an incredibly huge nuisance in readability and stupid runtime bugs that shouldn't be a thing in exchange for a feature that's rarely useful.
Granted, I'm primarily an embedded developer. Can any Python experts explain to me a highly impactful benefit of dynamic typing?
For small programs, dynamic typing can be faster to write (not read). As soon as your program grows: "uh oh". Once you add maintenance into the cost equation, dynamic typing is a huge negative.
To be fair: 15 years ago, people were writing a lot of Java code that effectively used dynamic typing by passing around Object references, then casting to some type (unknowable to the reader) when using. (C#: Same.) It was infuriating, and also very difficult to read and maintain. Fortunately, most of that code is gone now in huge enterprise code bases.
I'm not sold on this. Often I type the output I want to get, and reverse the code to get there. and that's faster because it's now all auto completing.
That's been my experience of powershell and typescript. To a lesser extreme python because its type hints are a bit crap.
Though I can see why you might not agree after trying an extreme like Rust. Sometimes I want to run a broken program to stop the debugger and see what I'm dealing with and rust won't do that.
I strongly disagree. Not converting the int to a string automatically is absolutely the right decision. In all code I write, this TypeError would catch an actual error, because concatenation of strings is just not the right tool for creating "abc123" from "abc" and 123, so I would not use it for that. Hence, if this exception occurs, it indicates that I probably mixed up variables somewhere. Use one of the (admittedly too) many string formatting tools that Python offers, for example an f-string like f"abc{123}". (Also, if you have enough type annotations in your code, the type checker will warn you about these, so you can fix them before they hit testing or even production.)
Interesting. 100% of the times I encountered this TypeError, I actually wanted to create the concatenated string. It never caught an actual error.
Now, I guess I'm not against and explicit cast and I can imagine how the error could catch an actual bug. It's painful when the error stops the execution when the string concatenation was intended, but it is not really an issue anymore with the possibility to type check before the execution.
> concatenation of strings is just not the right tool for creating "abc123" from "abc" and 123
Why? This sounds like an opinion to me. String interpolation of formatting features are nice but I find them quite clunky in such simple cases.
Of course when you have to be careful to call str(val), it's arguably as clunky...
Of course it’s an opinion. But in my experience, I almost exclusively have some sort of “template” with some parts to fill out, and string interpolation represents this better (in my opinion). This is especially true if the different parts to fill in are of different types.
As I wouldn’t use string concatenation for this purpose, it’s impossible for me to run into a situation where I wanted the concatenated string. (And even if I did, I would be glad for the reminder to change this into an f-string.)
And the bugs that it catches are of the form: I took some user input, expecting it to be a number, but forgot to convert it into one. Then I passed it to a function expecting a number, and it thankfully crashed instead of turning everything else into strings as well.
Maybe this is also a question that informs your view on this: Do you expect "abc" or 123 to be the “variable” part of that expression?
- If "abc" is a literal in the code with 123 coming from a variable, wanting 123 to turn into a string as well is somewhat unterstandable.
- However, if 123 is the literal part of the code and "abc" the value of some variable, I would expect to mostly run into this in cases where I am actually doing some math and that the variable is a string just is some accidentally unparsed input.
In what I do, the second case would be more common.
> So the easiest way to solve this is: Declare everything you need as keyword argument, but then only give *kwargs in your function signature to allow your __init__() to handle any set of arguments your children or siblings may throw at you. Then remove all of "your" arguments via kwargs.pop('argname') before calling super().__init__() in case your parent or uncle does not use this kwargs trick and would complain about unknown arguments. Only then pass on the cleaned kwargs to your MRO foster parent.
The easiest way is to not put your arguments into kwargs in the first place. If you put them as regular function arguments (probably give them a default value so they look like they're related to kwargs), then the python runtime separates them from the rest when it generates kwargs and you don't have to do the ".pop()" part at all.
Thank you for explaining this; there are a lot of comments here suggesting trivial code style improvements for use cases where *kwargs wasn’t actually needed. The more interesting question is how to improve the use case you describe — which is how I’ve usually seen *kwargs used.
Are traits and mixins the same? If not, can you please provide a trivial example. It would be useful to better understand what you mean. When I was very young, learning C++, I thought multiple inheritance was so cool. Now, I know it is like sleeping in the open jaws of a saltwater croc.
Traits as in the original Smalltalk research, Rust traits or Haskell type classes are like interfaces, but only when in scope. So until you import a trait, its implementation on various types isn’t visible.
This makes it possible to safely make a new trait and implement it on a built in type (like giving int a method) without the chance of another unrelated use of the type accidentally using what this trait provides.
I loved the game, but I can see where people struggle. You cannot laser-focus on the objective. Just get in character, you are on a mysterious ship, it's completely abandoned and somehow returned to harbor still. You are just trying to get a clue what the heck is even going on here, why would you care about filling in a puzzle book?
Just enjoy the first part cinematically. Explore the ship and unlock the scenes. Absorb the atmosphere from the scenes, and enjoy the music. Try to figure out the disjointed narrative, and don't focus on your puzzle book. (One of the flaws is that the forced waiting sequence should IMO lock you out of accessing the puzzle book completely. I often forgot, and got annoyed because I could not enter the cause of death before the page got unlocked after the scene...) You will not be able to solve a lot in the first pass anyways. The game throws you some freebies, yes, but that's just to let you get used to handling the book.
For context, once I had unlocked all scenes, I had not even one quarter of the book solved, and despite what I recommend in the first paragraphs, it was not for lack of trying. This is when you notice that you have everything you need, and a sort of panic sets in. You realize that it will not get easier than this. This intrigued me a lot, and this was when the real puzzle game starts. Now you revisit all the scenes analyzing every nook and cranny of the dioramas like some nautical Sherlock Holmes. But it's never stupid "hunt the pixel" like one would assume from that description, no. I have never seen the attention for detail in any game before, and the dev really thought of everything.
If you ever find yourself thinking "Oh wow, I can deduce something here from the position of that piece of scenery, but there is no way this was intended", then the answer is always "Oh yes, it totally was". Then you enter the suspicion into the book, and suddenly the game validates you by copying your notes into print with that cheerful music jingle. After a while the screen turning black and the first notes starting will give you a dopamine rush already.
The game captures perfectly what for example escape rooms or detective stories are about. The only real downside of the game is that the replay value is 0 by its very concept. I envy you for still being able to play it blind.
For me this sounds just like the lecturer inserted some casual sexism.
I can say from my own experience at least at my university, that "Altherrenhumor" ("old gentleman humor") like this is still very common in German engineering lectures even today, or at least well into the 2010s.
I would even call such a re-ordering of the genders in the greeting very tame. If you are a woman, you better come to your lectures on time. If you enter the hall half a minute late, the entire hall would whistle at you and cat-call you. Sometimes with support of the lecturer, who would consider it appropriate hazing for "disturbing" the lecture by being late.
At least there started to be at least some sort of push-back by the administration during the years in which I studied, and the really bad stuff only seemed to happen in classes dominated by the mechanical engineers.
Yes, this is the most obvious omission of the article. It really made me think about the kind of social dynamics that must be going on in an international and culturally-diverse research station like this one. Obviously, you will try to keep social friction low, and there might be some kind of "no co-showering" policy going on to avoid conflicts.
I come from a country that is generally considered very open-minded about nudity, and having a communal shower with your colleagues after your shift (gender-separated, mind you) is considered absolutely normal in jobs that get you dirty.
And even if you are a prude, I really wonder why no-one has considered sharing a shower or sponge-bath with a colleague or two in swim-shorts. It's more unhygienic than showering naked, yes, but I would still consider this miles better than taking no shower at all for days at a time.
Or maybe the showers described are indeed communal, and they just noticed that squeezing two people below one spout is just not a efficient way to shower and does not actually save that much water...
In the fourth task "Add the angles BAC and EDF on the given line GH", I drew the circles DF and EF in, then connected E and F with a line segment, and it told me that I solved the problem without touching the points GH at all...
Edit: In fact, simply drawing the line from E to F is already enough.
Edit 2: Similar when doing the "Perpendicular to line in a point not on a line": Drawing any perpendicular is enough, even if it is not going through that point.
It explains why currently, even though gas is so prohibitively expensive, we still run gas powered plants at the moment, and also why even with relatively low transmission capacity between countries there is still big impact on energy prices.
The tl;dr is: Energy prices are determined by taking the most expensive auction price that is required to cover the load at any given moment. Everyone who offered a cheaper rate may sell the energy, but receives the highest price that was accepted. This means that prices are highly non-linear and susceptible to supply shocks. Even though the changes from import to export with respect to France are small, a rather small reduction in cheap nuclear power immediately makes it a lot more profitable to produce energy, also making coal and gas viable again.
Also note that this model explains the cheap price of nuclear and solar: You "only" need to ROI your initial capital eventually to turn a profit. When push comes to shove you would rather sell at any price above 0 (or at least a very low bottom) rather than turning off your plant and getting no income at all. You cannot do that when you still have significant operational expenses for fuel (coal, gas, stored water).
On electricitymap you can see this behaviour in action as well. Even with something like 50% solar production, prices remain high, when suddenly, the prices collapse below zero after a certain threshold was reached.
Also note that in these cases, the prices in France and Germany decouple. Customers on the German energy exchange might get paid to use energy while in France spot price still is upward of 10-20 ct/kWh.
Also:
> Under European market law, you are obliged to buy renewable energy if it is available.
Do you have a source for that? I think that guarantee only applies to Germany. And then it only says that the suppliers always get paid for the energy they could produce, wind and solar can and will still get turned off physically.
And from what I have written above it pretty much follows that renewables will always be bought if possible, because they have no fuel costs and letting them run is during positive prices always more profitable than shutting them off.
Note though that many renewables are not even sold on the energy exchange and rather influence the market indirectly as most energy utilities have fixed delivery contracts with the producers and only buy/sell the excess on the spot market.
The big energy suppliers burning coal all sit in Northrhine-Westfalia, the most populous state in Germany.
Migrating away from (black) coal (used mostly in the steel industry) has caused big issues in the Ruhr area ("Strukturwandel", structural shift, meaning migration of significant parts of the workforce from coal to other sectors) in the past, which also means that the population is very wary of phasing out lignite as well. Pretty much everyone knows somebody who lost their job in a mine. Some cities like Gelsenkirchen are still structurally weak, like a lite version of Detroit. This means that politicians mow give expensive political gifts to the coal industry to provide retraining opportunities or early pensions, just so they can claim that they do not "forget" the workers this time.
While in fact, there is maybe 30k people or so in all of Germany employed by coal and its dependent industries. And nobody cares that the wind and solar industry lost 100k or so workers over the last decade due to avoidable regulatory issues and the resulting low project volume.
Anyways, you should not underestimate the amount of respect the coal workers always had in the Ruhr area. Digging coal in a below-ground mine is still the essential definition of "honest work" and sacrifice here. It's probably somewhat comparable to how military service is treated in the US, including the occasional "thank you for your service" and all. There are shrines dedicated to St. Barbara, the patron saint of mining, sprinkled everywhere, because people regularily prayed for their husbands, fathers, brothers, sons and friends to come home safely each day. Children learn the Steigerlied in school and sing it before football games. It's even worse than a lobby, the population mostly supports special treatment for the coal workers, as the mining and steel industry is still part of the cultural DNA.
Interesting. Parts of Britain were very similar. Things like every mine union chapter had its own brass band and the mine unions took great pride in thier traditions and thier local communities. Basically it’s neglected miners and steelworkers and other closed down heavy industries in the north of England that voted for Brexit just to pull the rug out from under everyone else because they were thrown on the scrap heap by Thatcher in the 1980’s and those areas never recovered. The liberal voting cities told the mining folk they were idiots for voting for brexit and so they switched allegiances from Labour (closely linked to the unions) to the Conservatives who were telling these people they were going to fix things for them, ‘levelling up’ the North of England. This hasn’t happened there is not even a coherent plan for how it could happen and the new candidates for prime minister are all going on about how they’re going to be more like Thatcher than the others, forgetting that the people who just switched to them hated her for destroying thier way of life. So be careful! Don’t disrespect the miners they will cause chaos if you annoy them!!
The competitive scene is probably also influenced from the speedrun community. And the speedrun community has really worked out the kinks in their ruleset, as in most games, you need to find the sweet-spot of allowing hacks and innovative techniques to break the game, but not too much that it becomes uninteresting.
For example, in Super Mario Brothers non-TAS runs, the rules are based around the controller and execution environment. You are not allowed to modify the controller or tilt the cartridge, but that's it.
Having the rules only limit the tools required, just like in sports, is quite elegant. If somebody figured a way to play faster with their teeth, it would be allowed, and rolling the controller is just something like that.
On the other hand, people found out that you can perform certain feats in SMB by pressing the left and right button at the same time. This is considered impossible with the standard D-Pad (without e.g. cutting it in the middle), so that is banned. At least until somebody figures out a way how to do it with the standard D-Pad.
I have people close to me with actual diagnosed schizoid personality disorder, this disorder is nothing like this person describes it, to the point of being offensive. No wonder why the actual professionals they are talking to so outright dismiss them.