Hacker News new | past | comments | ask | show | jobs | submit | garethrees's comments login

I am not sure that "Dante is clearly writing in the expectation that his audience will know these references" as claimed in the article. He put a lot of learning into the work, and maybe he had in mind an ideal reader who could follow the most obscure of references, and appreciate all the allegorical meanings, but it's noticeable that the narrator of the poem is always asking naïve questions and getting rebuked for his ignorance by Virgil and Beatrice. Readers who don't understand everything in the poem can thus feel that they are in a similar position to the narrator.

And as soon as the poem was published, people started writing explanations for the difficult bits. Dante's son Jacopo wrote a commentary in 1322, Graziolo Bambaglioli wrote another in 1324, and by the end of the 14th century there were at least fifteen. This shows that the poem quickly found an audience that was not familiar with all the references.


> This shows that the poem quickly found an audience that was not familiar with all the references.

It think it's a bit of both. Dante moved in high circles, particularly after he was exiled; and as an intellectual at court, he was effectively tasked with being an entertainer to his masters (which he didn't like, but had to accept to survive). In that context, creating work that requires active engagement from the audience, basically quizzing them around historical and literary knowledge, would have been of great value - and of great fun. Imagine people chatting around a fireplace or a banquet table, and Dante reciting a small verse - challenging someone in the audience (particularly other intellectuals he'd be sharing favours with) to go "I know! He's talking about such and such!". And when it came to the then-contemporary popes and rulers, everyone would laugh at the satirical tones, like you would with a stand-up comedian delivering a joke about "the orange man".

Comic book folks might be familiar with "The League of Extraordinary Gentlemen" by Alan Moore. That follows a similar approach; most people will recognize enough of the main characters to follow the story, but very few will get them all - which is why third-party commentaries and companions exploring them, have been pretty popular.


Good info. But is the difficulty detecting the references? Or interpreting the meaning and metaphor?


Looking at Inferno book 4 (the virtuous pagans), Jacopo gives us notes for the Pleiad Electra at 4.121; for Hector at 4.122; Julius Caesar at 4.123; Camilla and Penthesilea at 4.124; Latinus at 4.125; Brutus, Julia, Marcia, and Cornelia at 4.127; Saladin at 4.129; Democritus at 4.136.

But he does not give notes for Abel, Noah, Moses at 4.55; Abraham, David, Israel and Rachel at 4.58; Homer, Horace, Ovid and Lucian at 4.88; Aristotle at 4.130; Socrates and Plato at 4.133; Diogenes, Thales, Anaxagoras, Zeno, Heraclitus, and Empedocles at 4.136; Dioscorides, Orpheus, Cicero, Linus, and Seneca at 4.139; Euclid, Ptolemy, Hippocrates, Galen, Avicenna, and Averroës at 4.142.

So Jacopo, at any rate, thought that readers might need help with mythological and historical references, but not with biblical and philosophical; or maybe he thought it was clear enough from the text that Diogenes, Thales, Anaxagoras, etc. were pagan philosophers. But Guido da Pisa's 1328 commentary has detailed notes on all of these. So there must have been readers who wanted more information on these figures.


Thanks. This aligns with my original comment.


In serious reading of anything, there is no difference


We are discussing a book where the author intentionally fills the world with historical figures. This is not the structure of every work.


Historical figures aren't the only exogenous things in written works, and historical figures are far from the extent of the external structures and themes that are present in Dante's Comedy, I would go as far as to say that the historical connections in the comedy are not that significant, and serve mostly to distract one particular class of reader.


Ok, but you aren’t participating in the discussion being had here.


I responded directly to your comment where you suggested that the work of identifying and/or interpreting "references" was unique to or characteristic of Dante.

And I am adding that while always interesting and rewarding for those that are obsessed with a work, "getting" the references in Dante's Comedy or any other work of merit is not the point, and they are not all that important in the work.

And further, since I am near the subject, I am engraving my personal ad hominem, that it is the characteristic mark of a certain class of readership (which I hold in low regard) to fixate on which 7th century monk in which manuscript first introduced some mentioned doctrine before having (and never-to-have) attempted to commune with the work itself.


Language models are based on probabilities of tokens appearing in a context. For illustration purposes, imagine a very simple model with just one token of context that has been trained on a corpus of three sentences, all of which are true, for example:

    clouds are white
    crows are black
    swans are white
After the model outputs "crows are", the single token of context is "are", and the probabilities are 2/3 for "white" and 1/3 for "black". So the model usually emits "crows are white", which is false, despite being trained on a corpus of true statements. Statistically "white" was more likely to follow "are" in the training data, so the same is the case of the model's output.

Of course LLMs have a much larger and more complex context than the single token in my example. But if the training data contains many news stories about professors being accused of sexual misconduct (which is newsworthy), and few news stories about professors behaving with propriety (which is not), then when querying the model for a story about a professor then it is likely to reproduce the statistical properties of its training data.


Nitpick: looking out my window, clouds are grey. If I drive to the estuary, the swans are black (most are in New Zealand). Black & white examples always turn out to be grey examples.


Another way to sum a column of numbers uses calc:

  M-x calc-grab-rectangle RET V R +


A couple of issues that came up for me when porting from x86 to ARM recently:

1. The x86 architecture gives programmers a lot of memory ordering guarantees, so that communication of values between threads does not usually need memory fences. ARM64 does not give so many guarantees, meaning that multi-threaded code may need additional memory fences to avoid data races. But data races due to out-of-order memory updates are hard to diagnose.

2. Page size in macOS is 4 kB on x86, but 16 kB on ARM, so if someone has hard-coded the page size rather than calling sysconf(_SC_PAGESIZE) this may need to be discovered and fixed.


Jeannette Power's "Observations physiques sur le poulpe de l'Argonauta argo" (1856) is available at the Internet Archive [1].

[1] https://archive.org/details/b2228476x


This bit of speculation goes back at least to David Eugene Smith (1925), "History of Mathematics", volume II, page 59:

"There is a possibility that the Romans avoided IV, the initials of IVPITER, just as the Hebrews avoided יה in writing 15, as the Babylonians avoided their natural form for 19, and as similar instances of reverence for or fear of deity occur in other languages."

https://archive.org/details/in.ernet.dli.2015.201939/page/n7...


> Typically pretty wet weather for the (spring) race

Paris–Roubaix is certainly memorable when it's wet and muddy, but the last time it happened was in 2002! Early spring is the driest part of the year in north-eastern France, and so the usual conditions for the race are dry and dusty. See the Inner Ring: https://inrng.com/2016/04/rain-for-roubaix/


Sadly, I've not been able to see the race in quite a while. At least in my region, NBC sports doesn't seem to carry it anymore. Previously, Universal sports did, which I somehow lost after comcast aquired them.

One of my favorite images of the race is Bob Roll literally riding in the ditch, covered in mud [0]. Think it epitomizes the race.

[0] https://images.app.goo.gl/K8CHHQMGA245iZt48


Here's the letter from Chris Boardman and the other commissioners, which doesn't seem to be linked from the Guardian story: https://www.greatermanchester-ca.gov.uk/media/2145/19-1309-s...


This seems like a good idea to me, since there's evidence that programmers are making this mistake, and the proposal is to add a warning only for the expressions that are most likely to be mistakes, that is 2^{decimal integer literal} and maybe also 10^{decimal integer literal}. There are many constructs that are well-defined in C, but where it is helpful to have warnings: use of = in condition expressions, implicit fallthrough in switch statements, misleading indentation, unsafe multiple statement macros, and so on. Programming in C is hard enough that every bit of compiler support is valuable.


The power vs xor mistake is no doubt a common one, but I take issue with the 2^8, 2^16, 2^32 examples that got singled out because they are also common bitmasks. Should FLAG_BIT1 ^ FLAG_BIT3 really be a warning?

XOR may be rarely used, but 2^8 is not only one of the most common accidental XORs, it's also probably one of the more common legitimate uses of it.


Flag bits should be combined with | not ^


you do all your binary arithmetic with “or”, not “and” or “xor”? XOR is certainly less common than the other two but had its place.


> Should FLAG_BIT1 ^ FLAG_BIT3 really be a warning?

Nope, the warning would be for literal numbers in the source. IMO anyone who doesn't define constants for the flag bits deserves the warning.


So 2^8 is a warning, but 2^BITS_IN_BYTE is not? I don't think whether or not the preprocessor helped in making the expression is a good heuristic for whether or not it is a mistake.


A warning heuristic needs to have a low false positive rate; a low false negative rate is nice but is not necessary. The purpose of a warning is to detect some common errors without inconveniencing too many correct programs. If some other errors go undetected then that is a shame but at least it is no worse than the current situation.


How do you do that?

The preprocessor does macro expansion, the compiler compiles the result.

The compiler does not see FLAG_BIT1 ^ FLAG_BIT3, it only sees the result, e.g. 2^32.

Therefore to catch only explicit 2^32 the warning should come from the preprocessor... Nice mess created right there.


Modern compilers do have insight into the source before it was preprocessed. You'll notice that clang and (modern) gcc will show you where the error is in the unexpanded source line, and then show the expansion of the macros. So when it detects "2^32", it can look back to see if it was a product of macro expansion or if the literal was directly written, and warn accordingly.

Interestingly, msvc can also do this, by virtue of not even having a distinct preprocessor phase at all.


Discussed a couple of days ago in the context of average Uber speeds in London and other congested cities [1].

[1] https://news.ycombinator.com/item?id=20113084


Consider applying for YC's Summer 2025 batch! Applications are open till May 13

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

Search: