Open Thread
Particularly for anyone who wants to contact me after the The Case for Christ talk at UMD, but go ahead and say what you like. Unless you’re a spammer, in which case FOAD.
Particularly for anyone who wants to contact me after the The Case for Christ talk at UMD, but go ahead and say what you like. Unless you’re a spammer, in which case FOAD.
The reason I read Catholic League releases is that BillDo’s stage persona, that of the hypersensitive apoplectic paranoiac stamping his little feet is amusing. Lately, though, he’s been in a bit of a slump, his tirades not quite over the top enough to be funny.
So I was pleased to see this item from last week:
For all the happy talk about inclusion, gay marriage is positively exclusionary in its effects. How so? Next month we will celebrate Mother’s Day. How do two men tell their legally acquired children that they are excluded from celebrating this special day? How do two women tell their legally acquired children that they are excluded from celebrating Father’s Day?
Stop teh gays from marrying, won’t you? Do it for the children. And for the gay parents who don’t want to explain things to their kids.
$NOM_ad =~ s/gay/interracial/ ==
[youtube http://www.youtube.com/watch?v=ZC4B4LknF90&hl=en&fs=1&rel=0]
I think this perfectly illustrates what’s wrong with the
original NOM ad.
(HT Cyde Weys.)
(PS: Amusingly enough, the song that was playing when I got this link was Foreigner’s I Want to Know What Love Is.)
I’m leading Secular Bible Study today, so here are my notes on the book of Joshua (org-mode version).
More details later, hopefully.
Update, Sat Apr 18 17:42:26 2009:
Well, that went pretty well, I thought. I didn’t get to give my presentation, just give out bits and pieces of it as they became relevant to the conversation. Then again, since I wasn’t really able to turn my disjoint collection of notes into a coherent presentation, it’s probably just as well.
I mentioned Iron Chariots, the counter-apologetics wiki (which is where I got the definitions of henotheism and monolatrism. (Consider this a plug for the site. All of you who attended had interesting things to contribute, so you might as well contribute to the wiki and share with the world.)
The topic of theologians tying themselves in logical knots to justify or rationalize things like the book of Joshua reminded me of this post by Greta Christina, comparing religion to fan fiction.
I’ve probably forgotten some references that I promised people. If so, please speak up in the comments.
Today at work, I had to sign some legal papers. They were pretty standard “I have read the attached policy and agree to be bound by it” stuff that all of us Full-Time Employment Units have to sign once a year.
But I’m the sort of person who believes that if I sign an agreement, I ought to at least know what it says. But I have better things to do than to read legalese all day.
The same problem applies to a lot of commercial applications: every time you upgrade, you have to agree to a EULA for the new version. For a variety of reasons, most people just click through and get on with their lives. But it would be nice to be able to know that the vendor hasn’t just asked you to sign over your firstborn.
One possible solution would be a markup and revision system for legal documents. For starters, if your job requires you to sign an Acceptable Behavior Policy once a year, you could read it carefully once when you sign on, and save a copy. Then, the next year, you can compare the version you’re given with the one you signed a year ago. If there are no changes, you can just sign it without reading, on the grounds that if you didn’t have a problem with it last year, you don’t have a problem with it now.
Of course, a lot of documents include other documents by reference. These need to be archived as well.
It would also be nice to add comments: for instance, if the policy requires you to keep your cell phone number on file with your manager so that you can be contacted outsiide of business hours, you could add “Has my cell phone changed since last year?” in the comment area.
Since big chunks of legal documents are just boilerplate text, and since many legal documents (such as software EULAs, credit card applications, car rental agreements, etc.) apply to many people, it would be nice to look them up on the net. That is, the tool on your desktop could take the MD5 hash of a clause, send that off to the legal opinion servers of your choice, and see what they have to say. For instance, the EFF could have a repository that says that certain clauses aren’t as scary as they sound; the FSF could point out which clauses will forfeit your Free Software-loving soul.
This could be a commercial service: you could pay a legal firm for online legal advice. Yes, a lawyer would have to read and research the various documents, and that’s expensive; but if they can spread the cost around several hundred or thousand clients, it could become affordable.
You should be able to specify certain details about your situation. For example, a clause that affects US Government employees might be either important or irrelevant, depending on whether you’re a fed or not. You should be able to check or uncheck “I work for the US government” in the preferences menu, so that the software will look up the appropriate response. Ditto if you don’t work at a nuclear reactor, don’t deal in foreign trade, and so forth.
One interesting aspect of this is the coding theory aspect of it: there’s a level of distrust that has to be dealt with. If you sign the yearly policy without reading it because it hasn’t changed since last year, then you probably don’t want to leave your copy of last year’s document with your employer, in case they try to change it. And if you leave a copy on your employer’s computer, they might not be above rooting around in your files to change your backup to make it match this year’s version. So you’ll want to be able to cryptographically sign each document. And of course any sensitive information that goes out on the net needs to be encrypted.
Then there’s the question of giving away information by the sorts of questions you ask. For instance, you may not want the people running Joe Random Legal Server to know that you work for the military or at a nuclear power plant, but there are common clauses that affect people who do. So while the program on your desktop needs to know this in order to give you good advice, that’s not necessarily something you need to send out on the net. So when it sends out a query about a particular clause, the protocol should allow to specify as much or as little detail as you want: if you say that you don’t deal in trade with foreign nationals, the remote server can save itself the trouble of looking up what a given clause means for those who do; but if you don’t say whether you’re in the military, it’ll send both responses back and let your desktop software decide which version to show you.
Of course, you probably don’t mind letting your attorneys know whether you’re in the military, so the software should be smart enough to send this information only to some servers and not others.
I imagine that some of this already exists: contracts are already negotiated between parties that don’t trust each other. Presumably the law firms on each side already have software that’ll tell them that section 3, paragraph 10 hasn’t changed since the last round of negotiations, so they don’t need to check it again.
And of course laws go through many iterations from original inception to bill to committee to floor vote, and are often amended by people of other parties, who’d love to make life miserable for you. The staffs of legislators must have some system for keeping track of it all. Hopefully some of it is automated.
For software, there are already software-installation tools that include presenting a EULA to the user as a standard step. It shouldn’t be too hard to put in a hook that calls the user’s preferred legal document management system.
The
Subversion version control system has a “blame” subcommand that shows you when certain lines in a file were last changed, and by whom. Legalese is so structured and formal that it seems that a similar approach should be able to help there as well.
The book of Proverbs
is funnier if you add “in bed”
at the end of every verse.
For instance:
1:8 Listen, my son, to your father’s instruction
and do not forsake your mother’s teaching.
12:18 Reckless words pierce like a sword, but the tongue of the wise brings healing.
13:4 The sluggard craves and gets nothing, but the desires of the diligent are fully satisfied.
According to
today’s Post:
Faith organizations and individuals who view homosexuality as sinful and refuse to provide services to gay people are losing a growing number of legal battles that they say are costing them their religious freedom.
The lawsuits have resulted from states and communities that have banned discrimination based on sexual orientation. Those laws have created a clash between the right to be free from discrimination and the right to freedom of religion, religious groups said, with faith losing.
(emphasis added)
The article lists a few examples, such as a photographer who refused
to photograph a commitment ceremony, and doctors at a fertility clinic
who refused to inseminate a lesbian. The only one that I think I might
have a problem with is a student group at the University of California
that was denied recognition because of its views on sex outside of
“traditional” marriage, but the article is short on specifics.
What these people are saying, as I understand it, is that practicing
their religion requires them to regard certain other people as
inferior, and to deny them the services they offer to most people. In
short, they’re feeling butthurt because the courts are stomping over
their perceived right to bigotry.
How exactly is this different from refusing service to blacks or Jews
because one’s religion says they’re inferior?
The law doesn’t say you can’t be a bigot and a homophobe. That would
be thoughtcrime, which would be unenforceable, apart from the very
abhorrence of the notion of crimethink. The first amendment even gives
you the right to tell that world that gays or blacks or lefties or
Mets fans are inferior. What the law does say, however, is that you
can’t necessarily act on your bigotry. “Your right to swing your fist
ends where my nose begins”, and all that.
IANAL, but as I understand it, if you run a business that purports to
be open to the public, that means you can’t just arbitrarily decide
which groups you will and won’t cater to. That’s probably a gift from
the civil rights movement.
Now, historically, religious groups have gotten a fair amount of
slack, from zoning law exemptions, to tax exemption, to drug law
exemptions. But the US constitution also includes the
14th
amendment:
All persons born or naturalized in the United States, and subject to the jurisdiction thereof, are citizens of the United States and of the State wherein they reside. No State shall make or enforce any law which shall abridge the privileges or immunities of citizens of the United States
The whole point of the bill of rights, the foundation of the freedoms
that we Americans rightly pride ourselves on, is the idea that America
should be a land where everyone has an equal shot at happiness, and no
one is privileged by virtue of noble birth or preferential treatment.
And that means that your freedoms stop when they prevent others from
seeking life, liberty, and the pursuit of happiness.
And if your religion requires you keep others down, so much the worse
for your religion.
(Photo credit: Image Editor at flickr.)
If you’ve gotten mail from me, you may have noticed that there’s a
randomly-generated tagline at the bottom. Here are some of the more
recent ones, that I haven’t sorted through yet. Some are by me; most aren’t. I’ve
linked to the original sources where creating a link didn’t involve a lot of work.
According to the not always reliable
Diamondback
(hey, whaddya want? It’s a student paper), the University of Maryland
senate has voted to stop having prayers at graduation ceremonies. This
doesn’t affect individual colleges’ ceremonies, though.
It seems to have been a pretty decisive vote, too: 32-14.
The main arguments against the move seem to confuse secularism with
anti-theism:
“We need to be careful not to send the message that
secular language is seen as superior and acceptable while religious
language is seen as inferior and unacceptable,” [the university’s
Episcopalian chaplain, Peter Antoci] said.
It’s quite simple, really: if I’m at a staff meeting, and others are
talking about last night’s basketball game, and I say “Could you
please stop talking about basketball so that we can get on with the
business at hand and get out of this meeting early?”, I’m not saying
that basketball is a Bad Thing, or that talking about basketball is
bad. I’m just saying that it’s irrelevant to the purpose of the
meeting, so please do it on your own time.
According to the article, the university still employs 14, count ’em!,
14 chaplains, and I’m not aware of any movement to fire or censor them
(unless your definition of “censorship” includes denying them a
captive audience).
Of course,
some people
are appalled that this happened around the same time that
a porn flick was going to be shown on campus:
Great: Porn is ok; prayer is not.
I guess I’ll mark this one as “straw man”, since no one is suggesting
that porn be shown at graduation ceremonies.
While playing around with a Perl script to look up stock quotes, I
kept getting warning messages about uninitialized values, as well as
mising data in the results.
I eventually tracked it down to a bug in an old version of the
Finance::Quote
Perl module, specifically to these lines:
# Yahoo uses encodes the desired fields as 1-2 character strings # in the URL. These are recorded below, along with their corresponding # field names. @FIELDS = qw/symbol name last time date net p_change volume bid ask close open day_range year_range eps pe div_date div div_yield cap ex_div avg_vol currency/; @FIELD_ENCODING = qw/s n l1 d1 t1 c1 p2 v b a p o m w e r r1 d y j1 q a2 c4/;
Basically, to look up a stock price at
Yahoo! Finance,
you fetch a URL with a parameter that specifies the data you want to
retrieve: s for the ticker symbol (e.g., AMZN), n
for the company name (“Amazon.com, Inc.”), and so forth.
The @FIELDS array lists convenient programmer-readable names
for the values that can be retrieved, and @FIELD_ENCODING
lists the short strings that have to be sent as part of the URL.
At this point, you should be able to make an educated guess as to what
the problem is. Take a few moments to see if you can find it.
…
The problem is that @FIELDS and @FIELD_ENCODING
don’t list the data in the same order: “time” is the 4th
element of @FIELDS ($FIELDS[3]), but t1,
which is used to get the time of the last quote, is the 5th element of
@FIELD_ENCODING ($FIELD_ENCODING[4]). Likewise,
date is at the same position as t1.
More generally, this code has information in two different places,
which requires the programmer to remember to update it in both places
whenever a change is made. The code says “Here’s a list of names for
data. Here’s a list of strings to send to Yahoo!”, with the unstated
and unenforced assumption that “Oh, and these two lists are in
one-to-one correspondence with each other”.
Whenever you have this sort of relationship, it’s a good idea to
enforce it in the code. The obvious choice here would be a hash:
our %FIELD_MAP = ( symbol => s, name => n, last => l1, … )
Of course, it may turn out that there are perfectly good reasons for
using an array (e.g., perhaps the server expects the data fields to be
listed in a specific order). And in my case, I don’t particularly feel
like taking the time to rewrite the entire module to use a hash
instead of two arrays. But that’s okay; we can use an array that lists
the symbols and their names:
our @FIELD_MAP = ( [ symbol => s ], [ name => n ], [ last => l1 ], … )
We can then generate the @FIELDS and @FIELD_ENCODING
arrays from @FIELD_MAP, which allows us to use all of the old
code, while preserving both the order of the fields, and the
relationship between the URL string and the programmer-readable name:
our @FIELDS; our @FIELD_ENCODING; for my $datum (@FIELD_MAP) { push @FIELDS, $datum->[0]; push @FIELD_ENCODING, $datum->[1]; }
With only two pieces of data, it’s okay to use arrays inside
@FIELD_MAP. If we needed more than that, we should probably
use an array of hashes:
our @FIELD_MAP = ( { sym_name => symbol, url_string => s, case_sensitive => 0, }, { sym_name => name, url_string => n, case_sensitive => 1, }, { sym_name => last, url_string => l1, case_sensitive => 0, }, … )
Over time, the amount of data stored this way may rise, and the cost
of generating useful data structures may grow too large to be done at
run-time. That’s okay: since programs can write other programs, all we
need is a utility that reads the programmer-friendly table, generates
the data structures that’ll be needed at run-time, and write those to
a separate module/header/include file. This utility can then be run at
build time, before installing the package. Or, if the data changes
over time, the utility can be run once a week (or whatever) to update
an existing installation.
The real moral of the story is that when you have a bunch of related
bits of information (the data field name and its URL string, above),
and you want to make a small change, it’s a pain to have to remember
to make the change in several places. It’s just begging for someone to
make a mistake.
Machines are good at anal-retentive manipulation of data. Let them do
the tedious, repetitive work for you.