The number one thing you should do as a public interest litigator is to get monks as your clients in every single case.

Thanks to the National Agricultural Imagery Program, you can see in great detail the dirt course where young CIA operatives-in-training learn to drive off-road.

PRIVACY . You will not (and will not allow any third party to) use the Service to track or collect personally identifiable information of Internet users, nor will You (or will You allow any third party to) associate any data gathered from Your website(s) (or such third parties’ website(s)) with any personally identifying information from any source as part of Your use (or such third parties’ use) of the Service. You will have and abide by an appropriate privacy policy and will comply with all applicable laws relating to the collection of information from visitors to Your websites. You must post a privacy policy and that policy must provide notice of your use of a cookie that collects anonymous traffic data.

Google Analytics Terms Of Service (ToS) – Google Analytics

Did you know that the Google Analytics Terms of Service require that users “post a privacy policy” and explain that they are collecting “anonymous traffic data?”

Neither did half the internet, apparently.

(Reblogged from etonnement)
(Reblogged from fantagraphics)
  • Me: I'm tired of Tyler Cowen.
  • My internet receptor cells: Nonsense! If you're tired of Tyler Cowen, you're tired of the internet.
  • Me: [looks around, fidgets]
  • My internet receptor cells: Then we want all our music back.

My daughter just met someone who has The Gift.

The other implication is that every website you visit that includes “tweet this” buttons or <iframe>-embedded tweets is enabling Twitter to track you on the web.

Daring Fireball Linked List: Twitter Is Tracking You on the Web

Gee, thanks for the privacy tip, guy who uses Google Analytics on your site!

“He would have been in the direct path of the bullet had he not decided to take a nap on the living room couch.”

(via Nap Saves UVA Student from Stray Bullet - NBC29 WVIR Charlottesville, VA News, Sports and Weather)

theatlantic:

Why Is General McChrystal Teaching an Off-the-Record Course at Yale?

McChrystal, who formerly led special operations forces in Iraq and Afghanistan and later became a senior American commander in Afghanistan, now teaches a class at Yale’s Grand Strategy Program, where he integrates his military experience with his studies on leadership. In the New York Times, McCyrstal is quoted as saying “the only reason I’m here to teach,” compared with “somebody who’s got a Ph.D., is because I’ve been through it.”

McChrystal must have been through something ominous because, according to Elisabeth Bumiller’s  Times article, Yale University imposes restrictions on students who sit in McChrystal’s classes, demanding that they take notes on an “off the record” basis — i.e., not for attribution.

Read more. [Image: Reuters]

Easy prediction: off-the record access to celebrity “instructors” is going to be a popular way for expensive universities to distinguish themselves from their competitors.

(Reblogged from pegobry)

It’s taken these charts (generated in R) to make me realize just what a monster Ken Jennings was during his run on Jeopardy.

“We value your input probably.”

If there are no good humanistic reasons for believing in human rights, then there are no good humanistic reasons for believing in Christianity in order to believe in human rights either. And therefore there are no good humanistic reasons for believing in Christianity.

What Has Christianity To Do With Human Rights? | The American Conservative

I’m getting caught up, via Noah’s post, with the exchange between Ross Douthat and Julian Sanchez. I think Noah’s absolutely right here, and I wince sympathetically on Ross’s behalf.

He continues:

If these beliefs – belief in human rights, and belief that God redeemed the world from sin by incarnating Himself as a human being and allowing Himself to be crucified – both require leaps of faith, then what is the ground for deeming one more persuasive than the other? Presumably, the ground is something other than reason – it’s aesthetic, or psychological, or something. Among other things, the latter belief, being a myth, tells a story. But the point isn’t that without Christian premises you can’t believe in human rights – because those premises are just as ungrounded as direct belief in human rights. It’s that believing in random premises is less convincing to people than believing in myths, in stories, because that’s how human psychology works.

This is what made Joss Whedon’s Dollhouse so great. It was a relentless, uncompromising argument against transhumanism that gave only the slightest ground to some genuinely sympathetic utilitarian entreaties. Even if the transhuman dream sounds liberating, it will end in exploitation, torture, and, of course, hordes of zombies scavenging for human flesh across a blasted wasteland. The bioconservative mythos of Dollhouse completely bypassed liberal metaphysics and went straight to the construction of new taboos.

Dynamic subsets of data frames in R

I thought it would be cool to be able to define some subsets of a data frame without having to specify the query each time, but still have them update dynamically every time the data frame changes. Like views in a database.

Here’s the solution I’m using. The example application is parsing an Apache server log file.

require(plyr)
log <- read.table(file='httpd.combine.20120509')
# in the file I used, there was a space between the time and the time zone, creating two fields.
names(log) <- c('host', 'identity', 'user', 'time' ,'V5','request', 'status', 'bytes','referer','agent')
# Paste the two fields together
log$time <- paste(log$time, log$V5, sep=' ')
# remove the extra field
log$V5 <- NULL

# extract the URIs from the request field
log$uri <- gsub('GET |PROPFIND |HEAD |OPTIONS | HTTP/*.*','',log$request)

# convert the timestamp to something R can work with
log$rtime <- strptime(log$time, '[%d/%B/%Y:%H:%M:%S')

# Identify the obvious bots from the agent field
log$isbot <- grepl (".*bot.*", log$agent)

views <- function(x, subset.code) {
            switch(subset.code,
            'nobots' = subset(x, isbot==TRUE),
            'pdfs' = subset(x, grepl('.*.pdf$', x$uri))
            )
            }

views(log, 'pdfs')

That views function is where the action is. Each subset is specified and assigned a nickname. For example, nobots shows only records that don’t contain the string “bot” in the user-agent, and pdfs shows all the pdfs that were requested.

Rather than copy/pasting subset(log, grepl('.*.pdf$', log$uri)) whenever you want to work with the pdfs, you just write views(log, 'pdfs'). Not a huge difference, but for more complex subset queries it comes in handy.

UPDATE: Yes, I know I’ve included the require(plyr) line even though the demonstration code doesn’t use it. You’re free to run R without plyr loaded. You’re also free to not put on pants.

People (like my wife here) can make bread in their own homes! Who knew?