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

> A data race occurs any time two threads access the same memory location concurrently and non-deterministically when at least one of the accesses is a write.

From what I understand of the C++ memory model (shared by C and Rust), this is not the definition of data race – a data race occurs when two or more threads access memory concurrently where at least one access is a write and the accesses are unsynchronized. However, synchronized accesses may not have a deterministic ordering, in which case a race condition occurs.

(Confusing as it may be, I believe this is standard terminology.)


I’d argue there’s a very big difference between “x: y” and “x : y”. I can only see the former as assignment and the latter as the has-type relation.

(I find it baffling in the extreme that in many mainstream languages the convention is to write type annotations as “x: T”, both prima facie and because in those languages the notation then collides with field assignment!)


A small nit: the development of Unix began on the PDP-7 in assembly, not the PDP-11.

(The B language was implemented for the PDP-7 before the PDP-11, which are rather different machines. It’s sometimes suggested that the increment and decrement operators in C, which were inherited from B, are due to the instruction set architecture of the PDP-11, but this could not have been the case. Per Dennis Ritchie:¹

> Thompson went a step further by inventing the ++ and -- operators, which increment or decrement; their prefix or postfix position determines whether the alteration occurs before or after noting the value of the operand. They were not in the earliest versions of B, but appeared along the way. People often guess that they were created to use the auto-increment and auto-decrement address modes provided by the DEC PDP-11 on which C and Unix first became popular. This is historically impossible, since there was no PDP-11 when B was developed. The PDP-7, however, did have a few “auto-increment” memory cells, with the property that an indirect memory reference through them incremented the cell. This feature probably suggested such operators to Thompson; the generalization to make them both prefix and postfix was his own.

Another person puts it this way:²

> It's a myth to suggest C’s design is based on the PDP-11. People often quote, for example, the increment and decrement operators because they have an analogue in the PDP-11 instruction set. This is, however, a coincidence. Those operators were invented before the language [i.e. B] was ported to the PDP-11.

In any case, the PDP-11 usually gets all the love, but I want to make sure the other PDPs get some too!)

[1] https://www.bell-labs.com/usr/dmr/www/chist.html

[2] https://retrocomputing.stackexchange.com/questions/8869


I’ve noticed that, besides the magnetism and drive for sex (which would be sufficient for a species to propagate), many people also experience the biological imperative (wanting their genes replicated) as its own separate feeling.

This makes no sense to me – it’s not a feeling I can personally relate to. I’d like to raise kids because I’d enjoy getting to teach them and share things with them, but I don’t care whether they are my biological children or not.

So it’s something I’ve wondered about. The likely why makes sense, but I don’t really get the what.


For whatever it’s worth, I also believe the two are separate feelings that aren’t always in alignment. I have no desire to procreate (gay man), but following the birth of my first nibling I felt this profound swell of emotion and drive commanding me to nurture and support its growth into an adult. It’s likely why, in my teens and 20s before I understood the full impact of the 2008 crisis, I wanted to eventually adopt children myself.

Biology is weird.


At some point in my life I unconsciously decided that charisma (in this sense) was something I did not want to exercise, and was perhaps even wrong to exercise.

In so many facets of our lives already, our wants are being manipulated for the benefit of others. And who am I to decide what is important? For things that involve other people, I’d rather make that decision collectively. I want the thoughts, opinions, and feelings of people who don’t possess or exercise charisma to have space and weight.


I was struck by another comment calling the feedback loop a "virtuous cycle". Early-elementary-school me found it disturbingly weird and an unwanted responsibility for others' choices. Consciously resolved by "I'm so not doing this thing anymore".

Perhaps styles of leadership might be taught early, so there's greater awareness of possibilities/alternatives?


People may also be interested in the Tako shell, which is a fork of Xonsh that “sacrifice[s] some of the ‘fancy stuff’ so that basic shell operations work as expected, the codebase is small, and things are as performant as can be expected from a shell written in Python.”

(Homepage) https://takoshell.org/index.html

(Differences from Xonsh) https://takoshell.org/xonsh.html


Not impressed with tako. Replaces the BSD license with GPL for mostly removing functionality and reverts.

It looks unmaintained. Last release 5 years ago, documentation is sporadic.

Reminds me of some of the angry forks of Black that get like 100 downloads a year.


I liked the idea of tako - a slightly slimmed down, less clunky, version of Xonsh. However, it requires significant patching in order to work with modern python (I tried with 3.12, but I believe some of the breaking changes occur in 3.9+).

Specifically, there are a number of imports from collections which appear to no longer work, and I had to install a fairly old version of collections to get Set and MutableSequence (which `tako/takoshell/tools.py` subclasses).

`hz.mit.edu` is not a git forge, so I don't think I can submit a PR without e-mailing the author.


Belying the name somewhat, I believe U+3000 is specifically meant for use with Sinoform logographs, having the size of a (fullwidth character) cell, and so it makes little sense in other contexts.


The extended horizontal size is the only goal here. The dimensions for a sinoform is still related to pt size, so the relative spacing, compared to chr(32), at the same pt size, is reasonably larger.

But...the vertical dimensions don't scale so well, at least in my browser. It causes a slight downward shift.


You’d perhaps be better off using U+2002 EN SPACE (or the canonically equivalent U+2000 EN QUAD).

From what I recall, the size of a typical interword space is ⅓ of an em, and traditionally a bit more than this is inserted between sentences (but less than ⅔ of an em). The period itself introduces a fair amount of negative space, and only a skosh more is needed if any.


“Imitation without understanding”, “imitating but misconstruing”, “mindless imitation”, “superficial emulation”, &c.

I think “cargo culting” in the popular sense means little more than that (whereas actual cargo culting is much more complex, as the featured article describes).


I've always been mystified by that expansion. "The featured article" seems to me to make much more sense.


Originally, it stands for "The Fucking Article", as in "RTFA" (= "Read the fucking article"). The expansion "The Fine Article" is a humorous reference to the former.

Note that over the years "TFA" has lost its profane meaning and is generally used in a neutral way.


To save someone the lookup, this is:

    U+00B7 MIDDLE DOT = midpoint (in typography); Georgian comma; Greek middle dot (ano teleia) • also used as a raised decimal point or to denote multiplication; for multiplication 22C5 is preferred
But note there is a separate Unicode scalar value for the dot operator:

    U+22C5 DOT OPERATOR • preferred to 00B7 for denotation of multiplication


.M and .P for those that use vim digraphs


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

Search: