Hacker Newsnew | past | comments | ask | show | jobs | submit | rand_r's commentslogin

"Trauma" is a very bad name because it sounds violent and extreme, so you can easily think it doesn't apply to you. In actual fact, it can be caused by something as routine as "sleep training" where infants are left to cry themselves to sleep, or being snapped at for expressing emotion, all before the age of 5. The years before 5 are foundational, but you usually no not have memories earlier than 5 so it's very hard to say definitely what happened especially when causes for trauma are relatively routine.

You need a trusted therapist to guide you into exposing what the subconscious mind is holding onto from infancy. It is subtle, deep, difficult, rewarding work. But I do think people discount trauma because it sounds scarier than "someone snapped at me in frustration as an infant for expressing some emotion and I learned to disconnect from myself."


> You need a trusted therapist to guide you into exposing what the subconscious mind is holding onto from infancy.

This sounds like a great way to implant false memories


The honest way to handle this, which hopefully your therapist does, is not to claim that you can magically retrieve perfect memories from before 5 because you thought about it hard. What matters is what your impression is of what happened and what messages your subconscious is sending you. Whether or not it literally happened isn't that important and it's impossible to know.

The therapeutic relief comes simply from listening to your gut/subconscious and feeling the emotions that that brings up. Being a loving friend and parent to that part of yourself. You can do that effectively without pretending that you can know if the impressions are literally true or if that message your getting is simply the best way for it to express the emotions it's holding onto.

Again, you can maintain your integrity while being empathic and loving and listening to the message.


If I showed your comment to my psychologist, I'm confident he would strongly disagree with it–as would many of his professional peers.


Which part? Hard to have a discussion without specifics.


You are advocating for some controversial positions in psychology, without naming them – something roughly along the lines of Gabor Maté, "inner child work", reparenting, "Internal Family Systems", etc

Many psychologists who belong to different schools of thought – e.g. CBT, positive psychology – don't agree those practices are helpful and don't agree with their theoretical underpinnings

There is a lack of high quality empirical evidence for both the safety and efficacy of the kinds of practices you advocate, and also for the theories which motivate them. By contrast, more mainstream approaches such as CBT have significantly better empirical support


Is there any reliable scientific evidence for that or is it just woo?


The end game is adaptive query plans.

A big reason the initial plan isn't guaranteed to be optimal, even with all the right indexes, is that table statistics aren't perfect. For example, you might track a column's correlation (how closely the column's logical ordering matches its physical ordering in the heap), but that won't be broken down at a per value level. Postal code X might be very correlated, while postal code Y that is used in your query is completely uncorrelated.

The ideal solution is to pick one plan initially, and then update a temporary query-specific statistic model based on the data you actually read while executing the query. Then periodically re-evaluate if an alternative plan would be faster, switching to it in a way that doesn't throw away the current partial result.

Of course switching plans mid flight is very complicated, but Oracle and SQL server both support this feature, so hopefully it lands in Postgres at some point.


It's been quite helpful when your project needs expertise from other people, and you want them to vet your approach and find gaps. Doing the up-front work of explaining the context and structuring the project in an easy to understand way makes it more likely for busy people to engage with it and help you out. Of course, it's helpful as a rubber-duck exercise on its own, so I would err on creating one, even if just for myself, for anything high-risk or hard to change later.


That's fine, but rate limiting is a solved problem at this point. They need to rate-limit free accounts and be realistic about their limits instead of letting the system fail.


Free (and non-free) accounts are already rate limited. The likely problem is that individual accounts/repos rarely hit those limits, instead the explosive demand is due to a massive growth in the number of small, individual projects being creatd.


The person you were applying to said “rate-limiting” but I think they meant “load-shedding”.


Probably can't do that easily due to shitty engineering decisions in the past


Or inept managers.

Manager: Why is the site down!?

Engineer: Because it can’t handle this level of traffic. We can rate limit to the level we can handle to keep the service running.

Manager: Okay, let’s do that!

Engineer: Okay. Rate limiting at N req/min.

Manager: I’m getting complaints we’re denying service to customers!? We can’t rate limit our users if they want to use it. Increase the rate limits.

I’ve had this conversation more than once in my career.


They were about to push a big change to actions pricing a little wihle ago and people revolted


> all viewpoints covered from you populace

This is the core of the issue. We don’t actually want all viewpoints represented because that wouldn’t by itself produce any value.

You want someone to come up with the fundamental theorems of Calculus, linking the area of a curve with its anti-derivative, because that’s incredibly useful. Generically grabbing everyone’s view isn’t a competitive strategy. You need to be selective on things that are intrinsically useful and promote that.


But the research becomes how much coffee can someone drink before it's unhealthy type studies.

The study you mention can be founded with pen and paper. No expensive trials or heavy equipment or team needed.


For calculus maybe, but in medical/biology fields you might want to see how different people may react differently to the same treatment.


> When I watch a movie, I don't care about the artist's life. I care about character life, that's very different.

It may seem like this, but up to now, you haven't been able to divorce a story from its creator because every story has an author, whether it's a novel like Harry Potter or a movie that has a writer and director. When you're experiencing the story, in the back of your mind, you always know that there is someone who created the story to tell you some kind of message. And so you can't experience something like a movie without trying to figure out what the actual message behind the movie was. It is always the implicit message behind the story that makes it valuable versus just the elements of the story.

The story has more weight because it is the distillation of somebody else's life and most likely, if it's a successful story or book, it is the most important lesson from that person's life and that's what makes it more valuable compared to the random generation of words from a computer.

The food analogy is that a cookie baked and given to you by a friend is going to taste far better than anything you buy in a store.


> you can't experience something like a movie without trying to figure out what the actual message behind the movie was

I believe you that your brain works like that but this is absolutely not how mine works. I care if i enjoy the movie, and if the characters are believable, i absolutely do not care what the message is supposed to be.


"When you're experiencing the story, in the back of your mind, you always know that there is someone who created the story to tell you some kind of message."

I might know that, but I usually don't care.


Only in as much as their product is a pure commodity like oil. Like yes it’s trivial to get customers if you sell gas for half the price, but I don’t think LLMs are that simple right now. ChatGPT has a particular voice that is different from Gemini and Grok.


You can use “set()”. Introducing more weird special cases into the language is a bad direction for Python.


And you can use dict() for an empty dictionary, and list() for an empty list.


For reasons I don't think I understand, using the functions is "discouraged" because "someone might muck with how those functions work" and the python world, in it's perfect wisdom responded "Oh of course" instead of "That's so damn stupid, don't do that because it would be surprising to people who expect built in functions to do built in logic"


Yes but they are not equivalent. dict and list are factories; {} and [] are reified when the code is touched and then never reinitialised again. This catches out beginners and LLMs alike:

https://www.inspiredpython.com/article/watch-out-for-mutable...


That article is about how defaults for arguments are evaluated eagerly. It doesn't real have to do with dict vs {}.

However, using the literal syntax does seem to be more efficient. So that is an argument for having dedicated syntax for an empty set.


I am not replying to the article but to the poster.


I am talking about the article you linked to in your comment.


They are equivalent. In function signatures (what your article is talking about), using dict() instead of {} will have the same effect. The only difference is that {} is a literal of an empty dict, and dict is a name bound to the builtin dict class. So you can reassign dict, but not {}, and if you use dict() instead of {}, then you have a name lookup before a call, so {} is a little more efficient.


Right, but it instantiates it _once_ on module load! That is the point I am making; nothing else.


Your link doesn't support your argument.


I wrote the link and yes it does. Module evaluations reify {}, [], etc. once. That is why people keep making subtle bugs when they do `def foo(a=[]):` unaware that this will in fact not give you a brand new list on every function call.

Factory functions like list/tuple/set are function calls and are executed and avoid this problem. Hence why professional python devs default to `None` and check for that and _then_ initialise the list internally in the function body.

Adding {/} as empty set is great, sure; but that again is just another reified instance and the opposite of set() the function.


There is no difference between “def f(x={})” and “def f(x=dict())”, unless you have shadowed the dict builtin. They both have exactly the same subtle bug if you are mutating or return x later.


No no no, it's a great direction towards becoming the new Perl.


> to see if the serial numbers are out of circulation.

Cash cannot be invalidated like this. It would ruin the value of all cash since you could no longer trust cash from anyone. Only damaged notes are taken out and replaced by the government.


Specifically invalidating serial numbers of cash used in a crime is a very common process.


This is something you see in movies. Cash is by nature not traceable, so invalidating notes after issue would make it impossible to trust any cash transaction.


Race conditions are generally solved with algorithms, not the language. For example, defining a total ordering on locks and only acquiring locks in that order to prevent deadlock.

I guess there there are language features like co-routines/co-operative multi-tasking that make certain algorithms possible, but nothing about Java prevents implementing sound concurrency algorithms in general.


> Race conditions are generally solved with algorithms, not the language. For example, defining a total ordering on locks

You wouldn't make that claim if your language didn't have locks.


Exactly, this thread is full of ignorant comments. I was talking about a certain class of race conditions that can be completely prevented in some languages, like Rust (through its aliasing rules that just make it impossible to mutate things from different threads simultaneously, among other things) and languages like Pony, for example, as the language uses the Actor model for concurrency, which means it has no locks at all (it doesn't need them), though I mentioned Dart because Dart Isolates look a lot like Actors (they are single-threaded but can send messages and receive messages from other "actors", similarly to JS workers).


In Java, racing a field is safe - you can only ever observe the value as one that was explicitly set by a thread, no tearing can happen. Safe data races can happen in Java, but you sometimes do want that (e.g. efficient concurrent algorithms), and avoiding it is not particularly hard (synchronized blocks are not the state of the art, but does make it easy to solve a problem).

Pony and Rust are both very interesting languages, but it is absolutely trivial to re-introduce locks with actors, even just accidentally, and then you are back at square 1. This is what you have to understand, their fundamental model has a one-to-one mapping to "traditional" multi-threading with locks. The same way you can't avoid the Turing model's gotchas, actors and stuff won't fundamentally change the landscape either.


> avoiding it is not particularly hard (synchronized blocks are not the state of the art, but does make it easy to solve a problem).

Please have a read of https://joeduffyblog.com/2010/01/03/a-brief-retrospective-on... (and don't just skim it.)

(This was not written by some nobody, he does know what he talks about.)

  Contrast this elegant simplicity with the many pitfalls of locks:

  Data races. Like forgetting to hold a lock when accessing a certain piece of data. And other flavors of data races, such as holding the wrong lock when accessing a certain piece of data. Not only do these issues not exist, but the solution is not to add countless annotations associating locks with the data they protect; instead, you declare the scope of atomicity, and the rest is automatic.

  Reentrancy. Locks don’t compose. Reentrancy and true recursive acquires are blurred together. If a locked region expects reentrancy, usually due to planned recursion, life is good; if it doesn’t, life is bad. This often manifests as virtual calls that reenter the calling subsystem while invariants remain broken due to a partial state transition. At that point, you’re hosed.

  Performance. The tension between fine-grained locking (better scalability) versus coarse-grained locking (simplicity and superior performance due to fewer lock acquire/release calls) is ever-present. This tension tugs on the cords of correctness, because if a lock is not held for long enough, other threads may be able to access data while invariants are still broken. Scalability pulls you to engage in a delicate tip-toe right up to the edge of the cliff.

  Deadlocks. This one needs no explanation.


Nice "gotcha".

But STM doesn't solve e.g. deadlocks - there are automatisms that can detect them and choose a different retry mechanism to deal with them (see the linked article), but my general point you really want to ignore is that none of these are silver bullets.

Concurrency is hard.


Not sure what you mean!? Locks, at their core, are not implemented by languages. They’re feature of a task runtime e.g. Postgres advisory locks or kernel locks in a Posix OS.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: