46 karma · joined October 18, 2025
That trend is a consequence. A consequence of people being too lazy to think for themselves. Critical thinking is more difficult than simply thinking for yourself, so if someone is too lazy to make an effort and reaches for an LLM at once, they're by definition ill-equipped to be critical towards the cultural/moral "side-channel" of the LLM's output.
This is not new. It's not random that whoever writes the history books for students has the power, and whoever has the power writes the history books. The primary subject matter is just a carrier for indoctrination.
Not that I disagree with you. It's always been important to use tools in ways unforeseen, or even forbidden, by their creators.
Personally, I distrust -- based on first hand experience -- even the primary output of LLMs so much that I only reach for them as a last resort. Mostly when I need a "Google Search" that is better than Google Search. Apart from getting quickly verifiable web references out of LLMs, their output has been a disgrace for me. Because I'm mostly opposed even to the primary output of LLMs, to begin with, I believe to be somewhat protected from their creators' subliminal messaging. I hope anyway.
This is it. The conditions / circumstances of the clawback are irrelevant. If there's any possibility of a clawback, then the grant is a rope to hang your organization with.
I don't think an NSF grant should be a trade, wherein your org sells its mission / independence, and the NSF buys influence.
IMO your expectation is correct. Such is the fate of all reverse engineering projects, or more generally, all heroism-based projects. Heroism is not sustainable. A sustainable business model is sustainable.
1. Any given thread in an application waits for "events of interest", then performs computations based on those events (= keeps the CPU busy for a while), then goes back to waiting for more events.
2. There are generally two kinds of events: one kind that you can wait for, possibly indefinitely, with ppoll/pselect (those cover signals, file descriptors, and timing), and another kind you can wait for, possibly indefinitely, with pthread_cond_wait (or even pthread_cond_timedwait). pthread_cond_wait cannot be interrupted by signals (by design), and that's a good thing. The first kind is generally used for interacting with the environment through non-blocking syscalls (you can even notice SIGCHLD when a child process exits, and reap it with a WNOHANG waitpid()), while the second kind is used for distributing computation between cores.
3. The two kinds of waits are generally not employed together in any given thread, because while you're blocked on one kind, you cannot wait for the other kind (e.g., while you're blocked in ppoll(), you can't be blocked in pthread_cond_wait()). Put differently, you design your application in the first place such that threads wait like this.
4. The fact that pthread_mutex_lock in particular is not interruptible by signals (by design!) is no problem, because no thread should block on any mutex indefinitely (or more strongly: mutex contention should be low).
5. In a thread that waits for events via ppoll/pselect, use a signal to indicate a need to stop. If the CPU processing done in this kind of thread may take long, break it up into chunks, and check sigpending() every once in a while, during the CPU-intensive computation (or even unblock the signal for the thread every once in a while, to let the signal be delivered -- you can act on that too).
6. In a thread that waits for events via pthread_cond_wait, relax the logical condition "C" that is associated with the condvar to ((C) || stop), where "stop" is a new variable protected by the mutex that is associated with the condvar. If the CPU processing done in this kind of thread may take long, then break it up into chunks, and check "stop" (bracketed by acquiring and releasing the mutex) every once in a while.
7. For interrupting the ppoll/pselect type of thread, send it a signal with pthread_kill (EDIT: or send it a single byte via a pipe that the thread monitors just for this purpose; but then the periodic checking in that thread has to use a nonblocking read or a distinct ppoll, for that pipe). For interrupting the other type of thread, grab the mutex, set "stop", call pthread_cond_signal or pthread_cond_broadcast, then release the mutex.
8. (edited to add:) with both kinds, you can hierarchically reap the stopped threads with pthread_join.
These are excellent. (Not that I'm an authority, of course.)
Additionally, the photo visualization that aantix conveys has a meditation format (I know of it from therapy) where you meet your child self during meditation, and comfort, console, and protect him/her.
Kelly McGonigal has a series (possibly in multiple editions?) on compassion, including self-compassion. The first instance I've encountered on LinkedIn Learning:
https://www.linkedin.com/learning/the-science-of-compassion-...
Searching the web for it now, this one seems related:
https://kellymcgonigal.com/cct
Note especially Tonglen (week 7). In my own uneducated imagery, I describe it as follows: during meditation, you breath in the suffering of others with your heart, and breath out love and compassion, which I imagine as a golden light. It's brilliant, especially if you do it towards someone that you resent because they have wronged you.
https://en.wikipedia.org/wiki/Tonglen
FWIW, exercise has proved more accessible (?) to me than meditation. I've managed to turn exercise into a habit; I reach for meditation exceptionally.
That you can prove the inner voice false does not help in the least. It does not listen to reason, and it does not shut up. It needs to be addressed from a completely different angle.
Try keeping distance from yourself. :/ The self is always there, it never relents; its mistakes and weaknesses ever present, recurrent. It's less easy to accept and/or forgive when you can't forget.
In fact what you are doing with that photo -- which is a practice I completely support and agree with BTW -- is precisely that: distancing yourself from yourself, taking a look "in" from the outside. It's easier to find compassion like that, for both your child and current selves.
I'm also 47.
I think you are wrong.
https://en.wikipedia.org/wiki/Muscle_memory
Being extremely good at something increases the gap between said something and everything else. That doesn't mean being extremely good at the first thing is "over-specialization to detriment". If someone is equally mediocre at everything, they have no such gap, so no "over-specialization to detriment"; but is that really worth desiring? I think not.