2,027 karma · joined January 26, 2010
People who are actually antisocial will be impolite on purpose, and it's usually pretty obvious. Meanwhile, actually autistic people will get labelled as jerks or whatever because everyone assumes that the "rudeness" is intentional even if they just miss some cue or happen to be too distracted to respond in an "appropriate" manner.
I literally can't imagine what it's like to have a vivid imagination because to me my perception of reality and whatever I can "imagine" are as obviously different as black is from white. I could never confuse one for the other, and I don't know how they can even be compared.
A (logical) model is a simplified representation of the real thing that is still complete enough that it can be used to successfully reason about and accomplish goals with a system. A linked list datastructure is a real thing with a number of possible implementation details, but it still has a straightforward, concrete model of what it is. It's not an abstraction.
A model does not have to be abstract at all; it can be very concrete, even if it in practice hides some underlying details.
It seems common in software to either get lost in abstraction so that you forget the model, or consider the model so rigid that you miss useful, simplifying abstractions.
I can't help but be annoyed or distracted by naked hellos, regardless of the intent behind them, so to me, they are rude. I understand that they might be some sort of social ritual, but I can't for the life of me understand how it's in any way courteous to ask for someone's attention with an expectation of a synchronous reply before revealing anything about why they want your attention.
But I suppose the majority feels the opposite for some unfathomable reason.
I don't hate interacting with people; quite the opposite in fact. I just for some unknown reason am seemingly completely incapable of initiating interaction with unfamiliar people (and even initiating anything with people I know is rare for me to do).
I can walk out of the door just fine, but my brain stops functioning when I try to think of things to do from there. I can likewise handle meeting new people if I somehow end up in a situation where that happens. It's just doing that intentionally that I have so far been unable to accomplish.
I don't think I've really had any such time (or I don't remember. My memory is terrible), which is one of the things the rational part of me struggles with. I kind of just adapt to whatever situation I end up in. I guess the problem is that I don't predict future happiness so I don't have any driving force to struggle to attain it.
I've been in this situation for long enough that I don't have any way of telling what is and isn't "normal".
However, a persistent problem I face with any approach to pursuing happiness is how to get my body to perform the things that would make me happy instead of the things some unconscious part of me chooses to direct it to do; those things are rarely the same.
I quite literally and frequently feel like I have no or extremely limited conscious control over my actions, and to make myself do something I want to do that the unconscious executor strongly disagrees with due to anxiety or ADHD or whatever, I have to set things up so that there is literally no other option. That's pretty difficult to do, and quite stressful.
I'm also someone who needs to be constantly doing things because when I'm not distracted, my brain tends to start generating thoughts that lead to severe emotional pain; again, something I don't have much control over.
Maintaining inherited environments is also much more painful than ones you get to design from the ground up. I work with varied environments, and one with ~250 RHEL / CentOS machines has approximately the same level of maintenance burden as another with a dozen or so Ubuntus because the first environment has had configuration management from the beginning and the second is a complete mess that I've slowly tried to reverse-engineer and clean up.
When your change management works, maintaining a dozen servers isn't all that different from maintaining a thousand or more; and the need for change management and automation doesn't really go anywhere even when you don't self-host things.
In simple systems, you often have the option of simply throwing away entire components and remaking them because the system is simple and the dependencies between components are still clear.
Very simple to set up, and as long as your data volume is not lost (which can happen, but is very rare), such a system would recover from a host failure by itself faster than most people could react to it going down. In the unlikely case that you lose the EBS volume, you'd just recover from snapshots manually.
0. YAML everywhere. Augh.
1. Vanilla kubernetes by itself doesn't really do much; everyone basically assumes you'll use a cluster in a cloud somewhere that comes with all kinds of add-ons and functionality on top of the default. If you want to run an on-premises cluster, once you start adding external components to a Kubernetes cluster to make it actually useful, it starts getting complicated.
2. I don't think configuration management of the resources you do put in a cluster is a fully solved problem, especially if you depend on CRDs.
3. kubectl being context-sensitive is rather annoying. You basically can't share a kubeconfig between two terminal sessions without severe danger of footgunning.
4. If you just use Helm packages with defaults, you'll end up running software with very collision-prone UIDs and security contexts, so two separate components that you deploy can end up running as the same user on a host. I don't think that's good security design, but the system doesn't encourage you to do the correct thing.
5. All the "easy" tooling is basically just "run this magic incantation and it will do things for you". The culture around how things are done seem to encourage ignorance about what you're actually deploying. Many operations also modify cluster state and thus should be managed and not done willy-nilly, but that's also ignored by default. See also #2
Kubernetes has its upsides (something like ArgoCD is very nice to use when set up properly) but I guess my main beef with it is that it can make things look easy that actually aren't, and mislead its users.
I like the core idea of Kubernetes (eventually consistent declarative infrastructure) though I'm not fully sold on the implementation and the tooling around it.
Not everyone knows who or what they are, and even someone who knows is not necessarily able to be themselves without outside help.
I struggle with being myself quite often; there are things I want to do, but I can't simply decide to just do those things... My brain does not work that way. For example, it can take a lot of effort to even say what I truly want to say, because consciously deciding to speak does not necessarily result in me actually doing so, no matter how hard I think the thought.
If the power cycle is controlled, then the kernel can be reasonably sure that the re-appearing device is the same one. File handles wouldn't really be affected as long as the mounted filesystem can resume IO after the device reappears.
Most likely you'd still want to use a RAID scheme and/or data checksumming as an extra layer to ensure data integrity though.
Netapp filers do this; they update disk firmware online by installing it and then just rebooting the drive. The RAID controller/software handles the momentary interruption with zero issues, but even without redundancy an OS can handle a drive disappearing for a few moments.
More experienced people will generally be happy to offload ownership tracking to the compiler and save some of their brainpower for other things.
As for prompts, it's not like you need to write a novel about what you want to discuss, just include something.
For example, when asking for help:
Bad: "Hi" -- This demands my attention because I don't know what it's about, forcing me to respond and wait for the other person. Distraction and annoyance are practically guaranteed if I ignore it. I consider this kind of opener extremely rude, because to my brain it can be functionally equivalent to screaming "GIVE ME YOUR ATTENTION NOW".
Better: "Hi! I need help with X, can you help?" -- This is a request for attention, but I can at least decide if I'm interested and if I'm too busy I can respond with "No" or "Probably, but not right now.", which is satisfactory for my brain and doesn't distract me.
Best: "Hi! X is doing A when I try to do Y and I need B, can you help?" -- I may be able to solve the problem right away, which is the best outcome.
It might be just my ADHD talking, but getting interrupted by a "Hi" can be seriously disruptive because my brain wants to respond to it, but I then have to wait for the other person, and they might not respond immediately, and by then I've already lost focus on whatever I was doing which is immensely frustrating.
If instead I'm prompted with a "Hi, can you chat about X?" I can immediately respond in a way that satisfies my brain without losing focus on my ongoing activity.
Polling people with non-informative questions is a good way to distract them for no reason if they can't help you. I think that's impolite. As someone with ADHD, that can be disruptive and at times gets extremely frustrating because I can easily lose half an hour to a 1 minute distraction if it demands my attention. Give me some initial information to work with and I will be able to respond without losing my focus.
Types catch a lot of stupid errors that anyone can make, regardless of skill level.
They also localize guarantees. If your data has a type, you don't need to understand the full path it took to arrive in your function to be able to work with it. With dynamic types, you can only hope that a value has the type you need unless you explicitly check every time.