724 karma · joined August 23, 2010
In my mind, it's the closest we'll get to a mainstream Piet programming environment :)
To be even more pedantic: it's the number of bits in a char that is defined by CHAR_BIT. However, sizeof returns the number of chars needed to store a type, where sizeof(char) is defined to be 1.
Essentially, two genuine Bayesian rationalists (with some hand wavy preconditions) cannot agree to disagree; ie, they will eventually converge onto the same understanding of an event.
It is not a "mutation", at least not in the sense of a stable and heritable gene change. DNA methylation can be reversed, hence it is considered an epigenetic change, rather than a genetic change. The controversy over epigenetics seems to be about how long an epigenetic change can remain in a series of offspring, and how much of an impact an epigenetic change can have on the genetic material, the only long-term mechanism of heredity that we know of.
Caveat: IANABiologist
One can add a fix point to the calculus (such as the titular Y combinator), but that introduces inconsistency to the type system.
I'm also currently learning French, so it's interesting to see that English also contains exceptions, debates and colourful characters.
So, I'd put it, the memory error can be leveraged in an exploit.
https://web.archive.org/web/20080430162146/http://www.matasa...
(The original post on the matasano.com server seems to have been eaten; any chance that could be resurrected, tptacek?)
WingDings mapped the 'J' character to smiley face; when the email goes to a client without that font installed, it just displays the original character in the default font.
Old New Thing is an awesome blog! J
However, Thompson's essay is both a practical attack and an abstract idea; I find the notion of trust with self referential systems more interesting than the specifics of how to detect a backdoored compiler.
'Known-good' is exactly the problem Thompson's essay is describing. There is no 'known-good'. Instead, you have decided to root your chain of trust with a compiler you call 'known-good' (say, B). But ultimately, that trust is arbitrary: your compiler B relied upon un-investigated components at some point in its heritage: a hex editor, a disk drive controller, a CPU, an LCD screen, etc.
The best you can do is reduce the trusted base to the smallest amount, then make explicit your trust relationships as much as possible. Ideally, the trusted base would be physics and logic with a metaphysical certainty of the universality of those laws; we're a long way from that situation :)
"So now we have a restaurant industry where African-Americans are demeaned as “Canadians”, in reference to another group which is considered by US servers to be low tippers."
-- These are the same:
-- ...snip...
local function g(x) return math.sin(x) end
local g = function (x) return math.sin(x) end
According to the Lua Reference Manual [1], this example isn't correct. Rather, this is the correct translation: local function g(x) return math.sin(x) end
local g; g = function (x) return math.sin(x) end
From the manual: "This only makes a difference when the body of the function contains references to f."I'll repeat what szany and xyzzy123 mentioned: you work at a level of abstraction where infinite data structures are represented symbolically with enough definitional scaffolding to allow proofs to go through.
In a sense, a properly typed program provides a proof of some theorem over infinite data structures. For instance, an instance of a tree (in generic Java) is usually a finite data structure, but the set of all trees representable in Java is infinite. (Handwaving begins) The types prove that certain operations can't happen, like a tree of Strings changing to a tree of Arrays by a node search algorithm, which is a proof about an infinite set.
I think lukeprog has done much to provide himself with an unbiased philosophical education.
The jury is still out on the proper interpretation of quantum mechanics, but quantum phenomena doesn't rule out the deterministic state-change metaphor a priori.
The beta site includes the book in draft form, for those with the patience to deal with the occasional typo...
You state that "there's no reason this shouldn't apply to groups", but that's the critical question under investigation! Namely, do the behaviours (that you're classifying as a part of the phenotype) provide evidence for group selection, or are they adequately explained by kin/individual selection? It's a given that group selection could occur, but where is the evidence that it does occur?
Yes, there is no reason this shouldn't apply to groups, but is that the simplest explanation that fits the facts? The more parsimonious explanation is that genes (being the primary mechanism of propagating traits between generations) are the unit of replication, and closely-related kin have much higher gene similarity than arbitrarily-sized groups (due to the mutation/genetic drift that occurs all the time). Natural selection can only operate on replicators, and genetic replicators only create kin. These replicators may influence group formation and their subsequent natural selection, but is there any evidence for that hypothesis that isn't suitably explained by kin selection?
That particular example is simple and doesn't permit much room for nefarious actions, but as soon as he adds support for a wider selection of files, POST (and other verbs), caching, templating, authentication and access control, etc, the code will grow in complexity and the advantages of Lua will recede.
For instance, remove the line "isin(path, sources)" and there is a arbitrary file read. White lists are more secure, but they don't scale.