Sunday, December 3, 2017
Have Fun With René, Jerry
I did not know Jerry Fodor at all, personally. But when you spend as much time with someone's work as I did with his, you feel like you did know him.
Saturday, November 25, 2017
Monday, September 18, 2017
A Truly Incredible Story
From the Huffington Post UK. The title is "The Week My Husband Left And My House Was Burgled I Secured A Grant To Begin The Project That Became BRCA1". Just read it. And make sure you read the whole thing. You really have no idea.
Friday, September 1, 2017
DLNA Output for Linux
Many of my favorite bands stream their concerts these days, sometimes live, sometimes afterwards. It's fine to listen on the computer sometimes, but other times I'd like to listen to the show over something a bit better-sounding, like my stereo. I figured there had to be a way to do this, and it turns out that, indeed, there is. The Logitech Transporter I use as a digital source will function as a DLNA renderer (i.e., you can send it a DLNA audio signal). And I know that Linux plays nice with DLNA, since I often stream video to my TV that way (using minidlna, aka, ReadyMedia). So the only question is: How can I convince Linux to send audio from the computer to the Transporter? (Note that something like this will work with any DLNA renderer.)
Assuming you are using Pulse Audio, this sort of thing turns out not to be very hard. (See here for another set of instructions.) First, you will need to install pulseaudio-dlna, which is a little program that sets up any DLNA renderers it finds on your network as PulseAudio output devices. (For Fedora, there is a copr repo, which you can read about here.) There are a ton of options to set the audio format and bitrate and so forth, so check the manpage, as usual.
That can be it, if you wish. Once pulseaudio-dlna is running, you can just start up whatever you want to 'cast' and use the PulseAudio Volume Control (pavucontrol) to set the output device for that stream.
One note: To get this to work on my laptop, I have had to disable the firewall. I guess it would probably be enough to enable traffic on 8080, which is the port that pulseaudio-dlna runs on by default, but I've not bothered finding out. I only do this when home, and I'm not worried about the firewall then.
There's another useful trick I found, which is especially nice when you're trying to sort out problems, namely: You can bind two devices together with PulseAudio, so you get sound through both of them. In my case, what I wanted to do was have the audio output both from the computer and from the DLNA renderer. The command to do this will be something like:
Assuming you are using Pulse Audio, this sort of thing turns out not to be very hard. (See here for another set of instructions.) First, you will need to install pulseaudio-dlna, which is a little program that sets up any DLNA renderers it finds on your network as PulseAudio output devices. (For Fedora, there is a copr repo, which you can read about here.) There are a ton of options to set the audio format and bitrate and so forth, so check the manpage, as usual.
That can be it, if you wish. Once pulseaudio-dlna is running, you can just start up whatever you want to 'cast' and use the PulseAudio Volume Control (pavucontrol) to set the output device for that stream.
One note: To get this to work on my laptop, I have had to disable the firewall. I guess it would probably be enough to enable traffic on 8080, which is the port that pulseaudio-dlna runs on by default, but I've not bothered finding out. I only do this when home, and I'm not worried about the firewall then.
There's another useful trick I found, which is especially nice when you're trying to sort out problems, namely: You can bind two devices together with PulseAudio, so you get sound through both of them. In my case, what I wanted to do was have the audio output both from the computer and from the DLNA renderer. The command to do this will be something like:
pacmd load-module module-combine-sink sink_name=combined1 slaves=alsa_output.pci-0000_00_1b.0.analog-stereo,familyroomtransporter_dlnaHere, the sink_name is what this new device will be known as in PulseAudio. The 'slaves' are the devices to which that is, in effect, an alias. To figure out what names you need to use here, just do:
pacmd list-sinks | grep name:where the grep part will limit the output just to the relevant names. Of course you can omit it to see more information.
Saturday, July 8, 2017
New Paper: The Frontloading Argument
Forthcoming in Philosophical Studies.
Maybe the most important argument in David Chalmers's monumental book Constructing the World is the one he calls the 'Frontloading Argument', which is used in Chapter 4 to argue for the book's central thesis, A Priori Scrutability. And, at first blush, the Frontloading Argument looks very strong. I argue here, however, that it is incapable of securing the conclusion it is meant to establish. My interest is not in the conclusion for which Chalmers is arguing. As it happens, I am skeptical about A Priori Scrutability. Indeed, my views about the a priori are closer to Quine's than to Chalmers's. But my goal here is not to argue for any substantive conclusion but just for a dialectical one: Despite its initial appeal, the Frontloading Argument fails as an argument for A Priori Scrutability.You can find the paper here.
Wednesday, July 5, 2017
New Paper: Speaker's Reference, Semantic Reference, and Intuition
Forthcoming in The Review of Philosophy and Psychology.
Some years ago, Machery, Mallon, Nichols, and Stich reported the results of experiments that reveal, they claim, cross-cultural differences in speakers' `intuitions' about Kripke's famous Gödel-Schmidt case. Several authors have suggested, however, that the question they asked they subjects is ambiguous between speaker's reference and semantic reference. Machery and colleagues have since made a number of replies. It is argued here that these are ineffective. The larger lesson, however, concerns the role that first-order philosophy should, and more importantly should not, play in the design of such experiments and in the evaluation of their results.You can find the paper here.
Saturday, March 18, 2017
LaTeX Notation for Numerals
It is common in meta-mathematics to use the notation n to mean the numeral for the number n, that is: S...S(0), where S is a symbol for successor and there are n S's in the numeral for n. In LaTeX, one can typeset this notation using \overline{n} in math mode. Unfortunately, this does not always look very good: The height of the bar will vary with the height of the contained character(s), so the heights of the bars in \overline{n} and \overline{k} will not match.
The solution is to use a 'strut': an invisible (because 0 width) rule that functions only to set the height of the bar:
The solution is to use a 'strut': an invisible (because 0 width) rule that functions only to set the height of the bar:
\newlength{\numheight}It would perhaps be better to use the current font in \numheight, but I've never had a problem with this in practice.
\setlength{\numheight}{\fontcharht\font`0}
\newcommand\numeral[1]{\overline{\rule{0pt}{\numheight}#1}
Sunday, March 5, 2017
A Bound in Gödel 1931
When teaching Gödel's famous 1931 paper on the incompleteness theorems this semester, I got hung up on one of the bounds he gives in the course of the 45 definitions of primitive recursive notions. This is the case of concatenation. Recall that Gödel here codes finite sequences via prime factorization, so the sequence <a1, ..., an> is coded as: 2a1 × ... ×pnan, where pn is the nth prime. The 'star function' is then defined as follows:
The question, though, is how the bound is supposed to work. Gödel does not often discuss his bounds, which tend to be pretty loose, but he does explain one of them in footnote 35. And if one follows the sort of reasoning Gödel uses there, then it is difficult to see how to get the bound in the above.
I asked a question about this on the Foundations of Mathematics mailing list, and Alasdair Urquhart took the bait and replied with an elegant proof showing why Gödel's bound works. I thought I'd record a version of it here, in case anyone else has a similar question.
First, we show, by a straightforward induction on n, that 2a1 × ... ×pnan ≤ pna1 + ... + an.
Now let <a1, ..., an> and <b1, ..., bm> be two sequences. The code of their concatenation is:
x * y = μz≤Pr[l(x) + l(y)]x+y {∀n≤l(x)(n Gl z = n Gl x) &Here, l(x) is the length of the sequence x; n Gl x is the nth element of that sequence. So the definition says that x * y is the least number coding a sequence that agrees with x on its first l(x) elements and agrees with y on the next l(y) elements. Of course, there is such a number (and, actually, given how "Gl" works, there are infinitely many). The bound is needed to guarantee that * is primitive recursive.
∀n≤l(y)(0<n → (n + l(x)) Gl z = n Gl y)}
The question, though, is how the bound is supposed to work. Gödel does not often discuss his bounds, which tend to be pretty loose, but he does explain one of them in footnote 35. And if one follows the sort of reasoning Gödel uses there, then it is difficult to see how to get the bound in the above.
I asked a question about this on the Foundations of Mathematics mailing list, and Alasdair Urquhart took the bait and replied with an elegant proof showing why Gödel's bound works. I thought I'd record a version of it here, in case anyone else has a similar question.
First, we show, by a straightforward induction on n, that 2a1 × ... ×pnan ≤ pna1 + ... + an.
Now let <a1, ..., an> and <b1, ..., bm> be two sequences. The code of their concatenation is:
2a1 × ... ×pnan × pn+1b1 × ... × pn+mbm ≤ pn+ma1 + ... + an + b1 + ... + bmMoreover,
a1 + ... + an ≤ 2a1 + ... + pnan ≤ 2a1 × ... × pnan = xand similarly for the other sequence. (Note that the last inequality depends upon the fact that none of the ai = 0, but Gödel's coding of sequences only works for positive integers.) So
a1 + ... + an + an+1 + ... + an+m ≤ x + ywhich gives Gödel's bound.
Subscribe to:
Posts (Atom)