An RSS stylesheet

slaniel | Uncategorized | Wednesday, August 18th, 2004

I’ve created a stylesheet for my RSS feed. Given how easy it is, I’m not sure why I avoided doing it before now. I have some kinks to work out in it — namely, that

  1. I wrap every RSSified story inside a CDATA block so that HTML will go through properly, yet
  2. the whole reason for including the CDATA block is so that the browser won’t even realize that it’s looking at HTML — it just thinks it’s looking at undifferentiated text that happens to contain tags that look like HTML. The browser refuses to apply CSS formats to CDATA-swaddled HTML, because it doesn’t believe it’s looking at real HTML.

Presumably for the same reason, my browser displays HTML curly quotes and suchlike as their HTML entity designators (“’” and so forth).

So the moral seems to be that I can’t have valid RSS and still format all the HTML inside. Drat. But at least the RSS is prettier now.

P.S.: Using the modcontent solution failed in a big way with my newsreader, and it didn’t seem to be buying me anything anyway. It was supposed to handle the encoded-data-inside-CDATA problem, but it didn’t appear to. Does anyone know what the current status of modcontent is?

Yuval Gabay is larger than life

slaniel | Uncategorized | Wednesday, August 18th, 2004

Since no one else on the web seems to have mentioned it, I’d like to point out that during a concert at Carnegie Mellon University, Soul Coughing lead singer Mike Doughty did indeed say of the band’s drummer, “Yuval Gabay is larger than life. We do not know how large life is, but we do know that it is smaller than Yuval Gabay.”

This information is worth sharing.

Paul Krugman v. Bill O’Reilly

slaniel | Uncategorized | Wednesday, August 18th, 2004

Do you like the feeling of acid overflowing your stomach and chewing away at your innards? Then go ahead and read a transcript of a “debate” between Bill O’Reilly and Paul Krugman on Tim Russert’s show.

Runners in scoring position

slaniel | Uncategorized | Wednesday, August 18th, 2004

I’m looking for statistics on how well every major league team does with runners in scoring position. Specifically, I’d like to get tables with the number of times each team scored with runners at second, how well it does with runners at third, how well with runners at both, and all of the above cross-tabulated with the current number of outs (0, 1, 2). The ESPN baseball stats pages don’t seem to have these numbers, and a little googling didn’t turn up anything either. I may need to dig into the raw numbers to which someone I know pointed me a while ago, but perhaps someone knows a better place to look for stats.

“The UNIX Time-Sharing System”

slaniel | Uncategorized | Wednesday, August 18th, 2004

I’m reading Ritchie and Thompson’s original paper debuting UNIX, and I find it kind of funny — first because it’s describing concepts like “root directory” in intense detail, since this may be the first time anyone had seen such a file structure, and second because of sentences like this:

Perhaps the most important achievement of UNIX is to demonstrate that a powerful operating system for interactive use need not be expensive either in equipment or in human effort: UNIX can run on hardware costing as little as $40,000  . . . 

Progress makes me smile.

SUV safety

slaniel | Uncategorized | Tuesday, August 17th, 2004

When I saw the headline (“Safety Gap Grows Wider Between S.U.V.’s and Cars”), I was all set to rail against the corresponding article. I figured they were going to claim again that small cars were less safe than SUVs, without bothering to compare the rate of traffic deaths in small cars in collision with other small cars against the rate when they collide with SUVs. If small cars are less safe, in all likelihood that’s only when they collide with SUVs.

Instead, the point of the article is that the probability of dying in a car accident is 11% higher if you own an SUV than if you own a regular car. I’ll be damned.

The New York Times again proves Paul Krugman correct, however: it strives for balance rather than for objectivity. E.g.,

Industry groups have insisted for years that S.U.V.’s are at least as safe as passenger cars, if not safer. One group run by industry lobbyists, called the Sport Utility Vehicle Owners of America, says on its Web site that it is a myth that S.U.V.’s guzzle gas or that their higher rollover rate makes them more dangerous for their occupants. Ron DeFore, a spokesman for the group, cited statistics from the insurance industry, which found last year that fatality rates for newer sport utility vehicles were markedly improved from older models.

“Most people have gotten a skewed vision about the S.U.V. and think they’re unsafe, and that’s just not true,” Mr. DeFore said.

This is the obligatory “what the other side says” paragraph. Rather than look for the real answer in an unclouded light, the Times seeks to find a representative from each side of the story and ask what they think. The trouble is, one side could be obviously wrong. And yet the Times always gives equal time to both. Krugman’s line was that if the Bush administration said the Earth was flat, the headline the next day would read “Shape of Earth: Views Differ.”

The article writer compounds the error with a non sequitur. The paragraph begins with a sentence rebutting the claim that SUVs are unsafe, then goes into a second sentence arguing that SUVs have gotten safer. How does the second sentence provide any support for the first? SUVs may have halved their rollover rates, but may still have twice the death rate of passenger cars. Yet the Times doesn’t bother to point out the error. Maybe the author didn’t realize it?

Why should we trust an industry lobbying group — which has an incentive to push high-margin SUVs — against a presumably dispassionate government agency collecting statistics?

Nonsense:

This year, the government started conducting rollover tests on a test track rather than merely analyzing the vehicle’s dimensions on paper to determine rollover risk, as it had done in the past.

I have an idea what “on paper” means: after an accident happens, they determine a) whether the car rolled over, and b) what its dimensions are, and maybe c) how the load inside the car was distributed. They plug these numbers into a mathematical model, which helps them relate the object’s center of gravity to its probability of rolling over. This is precisely what they ought to be doing. I continue to believe that newspapers are scared of math, and view it as somehow cold or inhuman.

The point of math and statistics is to make precise what had previously been vague. For instance, this paragraph:

Rollover risk, though, is only one part of the safety picture. In crashes between vehicles, heavier vehicles tend to perform better than lighter ones, which is one reason that the smallest cars tend to have the highest occupant-fatality rates. The ways that people who own different types of vehicles tend to drive them is also a factor, especially in the case of sports cars.

Here is where they ought to be using a statistical model: how does the probability of death vary with the weight differential between the two cars in the accident? (In a multi-car accident, we might use the difference between the heaviest and the lightest car.) In this model, we would either hold other factors — like the speed of the collision — constant, or we would aggregate over all collision speeds. There are well-known statistical methods to use here. Why are we relying a) on vagueness, and b) on secondary sources like industry lobbying groups to tell us what makes one vehicle safer than another?

Ditto:

But weight is not a simple proxy for safety. In a federal crash study this year, large passenger cars and station wagons, averaging about 3,600 pounds unloaded, were found to have a death rate of 3.3 for each billion miles traveled; they were second only to minivans, which had a rate of 2.76.

Don’t bother breaking cars into categories; model the death rate as a function of weight, and tell me — on average — how much the death rate increases for every 100 pounds of weight increase.

Finally, and unrelated to the newspaper article, there’s an economic question. A completely unregulated auto industry would externalize the cost of its unsafe vehicles: if people die, someone else pays for it. A well-regulated auto industry would be required to pay for auto recalls, would be subject to lawsuits, and so forth. So the statistical question for me is: of those 40,000+ auto deaths (and the substantially higher number of serious auto injuries), how many are the auto industry’s fault? That is, how many could not have been prevented, given the car’s design and reasonable care on the part of the driver? So now take the total cost of these deaths and injuries, and subtract the total amount that the auto industry paid out for lawsuits and product recalls. Is this difference positive? That is, how well have regulations forced the industry to internalize its social costs?

RSS and the ‘continue reading’ link

slaniel | Uncategorized | Tuesday, August 17th, 2004

After a moment’s work, I can’t figure out why the “Continue reading . . . ” link appears within the RSS feed; it’s not supposed to work like that. But I’m too tired to investigate thoroughly. I’ll dig into it soon.

Schneier and his discontents

slaniel | Uncategorized | Tuesday, August 17th, 2004

I should have read all the way through the latest Crypto-Gram from Bruce Schneier, because at the very bottom was a letter from an irate Schneier reader. Schneier will quite often point out “security snakeoil,” and in July he mentioned the ‘Tree’ cryptographic algorithm:

ICS of Atlanta has developed the “Tree” cryptographic algorithm.

How is Tree different? Well, for one thing, it “uses no math.” I’m not quite sure how that’s possible on a computer, but that’s what Tree’s creator claims. From an e-mail exchange: “ . . . 99.99% of the people out there use math to encode and they use math to ‘break’ the code. Since we don’t really use math, it would be quite hard to break.”

Not only do they not use math, they don’t have a key. “Tree does not use a ‘key’ . . . . I just put in text, hit ‘encode’ and poof, there is the encoded message, to decode, I put in coded messages, hit ‘decode’ and poof, done. That’s it. No key.”

Amazing.

How do they demonstrate Tree’s security? “Over 100 professionals in mathematics & in computer science at Massachusetts Institute of Technology & at Georgia Tech, had sample encoded messages submitted to them. Not a single person could break this code!” Think about it. These guys sent unsolicited e-mails containing some ciphertext to over 100 professionals, and not one of them decrypted the messages. Anyone have any other explanations for this behavior, other than the possibility that these 100 professionals immediately dropped what they were doing and spent fruitless weeks trying in vain to break Tree?

And if all that isn’t enough to make you run screaming from these guys, their website proudly proclaims: “Tree Encoded Files Can Be ‘Zipped.’”

That’s right; their encryption is so lousy that the ciphertext doesn’t even look random.

<http://icsatlanta.netfirms.com/>

One of the ‘Tree’ guys was not so happy with this, and wrote Schneier a message that can only be described as braindead, nearly inscrutable, and almost saddening. I include it below the fold because it’s too good to pass up.

Incidentally, if you’re not up on a bit of cryptography: a good cryptographic algorithm will produce output text that is highly random. Because of the way that compression algorithms work, this means that encrypted text is incompressible, or nearly so. Hence Tree’s claim that its text can be zipped is quite reliable evidence on its own that the algorithm is bogus.

(Hat tip to Adam Kessel for pointing out what I missed.)

(more…)

Downloading video clips en masse

slaniel | Uncategorized | Tuesday, August 17th, 2004

Should you find yourself wanting to download, say, every one of Lisa Rein’s Daily Show clips from this month, there’s an easy way to do it using wget: just type

wget -r -np http://video.lisarein.com/dailyshow/august2004/

Voilà. The ‘-r’ switch starts recursively downloading the directory, but ‘-r’ would do a little too much: it would start downloading every link within that page, which includes the link for ‘parent directory’. In this way, you’d end up downloading every file on that site. So the ‘-np’ switch tells wget not to move into the parent directory; it’ll only download files from this one directory.

I’ve put this into a little shell script to do the above. Now you can type

getwholedir.sh http://video.lisarein.com/dailyshow/august2004/

if such is your wont.

California moving to open-source?

slaniel | Uncategorized | Friday, August 13th, 2004

Via Slashdot: Granted, it’s buried in the middle of a 2,500-page document, but a new report prepared for governor Schwarzenegger recommends that California “more extensively consider use of open source software, which can in many cases provide the same functionality as closed source software at a much lower total cost of ownership.”

That could be huge. Fingers crossed.

The fickle Boston papers

slaniel | Uncategorized | Friday, August 13th, 2004

Here’s a line from today’s Boston Globe:

At long last, it’s happening. The shock of No Nomar is over. The people in place are catching the ball and throwing it to the right people. The pitchers are pitching. The hitters are hitting. The Red Sox are going to make the playoffs as the American League wild-card entry and they are going to meet the Yankees again in the ALCS, then play the Cubs (who’s their shortstop?) or Dodgers in the 2004 World Series.

I’ll believe it when I see it. This team has not been good for optimists.

A man and his chair: a love story

slaniel | Uncategorized | Friday, August 13th, 2004

Probably everyone thinks that his friends are funnier, smarter, more handsome, and just better than everyone else’s friends. I am certainly one of those who does so. However, I think that if we submitted this to rigorous scientific investigation, we could prove that I’m right: my friends really are better and smarter and so forth.

My friend Adam is certainly in competition for the title of “my funniest friend.” I don’t mean to put down any of the other lovely people I spend time with, but Adam has a special place in the Steve’s Friends Humor Annals. This is a guy who took a photo of his pants around his ankles. This is a guy who tried to fit a television into the little pocket on his shoes. He’s on a quest to visit the first restaurants of many major chains around the country (and his tour will soon take him to Quincy, Massachusetts, where I intend to join him on the northeast portion of the Restaurant Firsts journey).

When a guy photoblogs his love affair with his new chair, that’s saying something. This is not your average funny person. This is the one, the only, the blindingly hot oh god I can’t take my eyes off his package Adam Gerard. He’s ass-bad, and I miss him a hell of a lot.

Impossibility is cool

slaniel | Uncategorized | Friday, August 13th, 2004

Every now and then I’ll remember some mathematical result and think “How in god’s name would anyone spot that?” I’m thinking of a few right now:

  1. It’s possible to construct certain geometric shapes using only a ruler and compass, assuming you have some fixed object whose length you define as one unit. A square is a good example of such a constructible shape. So then the natural question is: which regular polygons can be constructed by ruler and compass? And the completely — to me — nonintuitive answer, worked out by Gauss, is that a regular polygon with N sides is constructible in this way if and only if N is the product of distinct Fermat primes and some nonnegative power of 2. How Gauss arrived at this, I’ll probably never understand. That’s why he’s Gauss and I’m  . . .  Laniel.
  2. If you’re given the equation ax + b = 0, that’s easy to solve, and you get x = -b/a. So make it a little harder: how about ax2 + bx + c = 0? We learned in elementary school (some of our math teachers taught us a song to remember it) that the solution is x = [-b ± √(b2 — Error: math]) not configured/2a. The solutions for the general cubic and quartic equations get much, much longer, but they’re soluble.

    And yet — here’s the part that blows me away — it is impossible to find a solution for the general quintic — or any degree higher than 5 — using the elementary mathematical operations of addition, subtraction, multiplication, division, or root extraction. This involves Galois theory somehow, as does the full proof of Gauss’s result above.

  3. Again using a ruler and compass, and a line of (by definition) length 1, it is impossible to construct a line that is 21/3 units long. It’s easy to construct a line of length √(2): just draw a square and read off the length of its diagonal. But 21/3? That’s right out.
  4. Then there’s Ken Arrow’s impossibility result in economics, which basically establishes that there’s no way to construct an electoral system that adheres to certain basic premises (e.g., no dictators are allowed), if we insist on certain other basic premises (e.g., one more person deciding to vote for John Kerry should never hurt Kerry’s chances). It seems to call into question the basic idea of a democracy, but I’m not clear whether it has any real-world significance; after all, presumably our real electoral system satisfies the Arrow conditions, and yet it works. So maybe there’s some part of Arrow’s result that I’m missing.

I don’t know why I find impossibility results so fun, but I do. I guess I like knowing that logic excludes the very existence of certain things, like a perpetual-motion machine. It makes me feel more humble, I think.

P.S.: Thanks to Dylan for spotting an earlier error, in which I said that the square root of 3 was not constructible. I meant the cube root of 2, and have incorporated the edit. Dylan gives the general result in the comments to this thread.

Why didn’t I learn this years ago?

slaniel | Uncategorized | Thursday, August 12th, 2004

I just this year discovered how to talk with anyone in Boston. First, look for sports apparel; this will limit you to approximately 90% of the city. Failing sports apparel, look for those people who obviously have a couple beers in them, are wide awake on the T at 10 p.m., and are surrounded by boisterous friends. This will get all the people who’ve just left Fenway. If even that test fails, and you find yourself (say) in a cab with someone who has a thick Boston accent, just start talking about the Sox. Odds are overwhelming that you will have something to talk about.

Just tonight I started chatting with a guy on the train wearing a “Killing with [Red Sox pitcher Curt] Schilling” T-shirt. I was genuinely curious how the Sox had done tonight; according to this guy, the score was 13-4, Sox on top against the Devil Rays, when he left. (Looking at ESPN, it ended 14-4.) I started talking about how I was afraid that the Sox would get swept after watching their performance under Schilling — their star pitcher — during the first game of the series. We got to talking, and the conversation lasted until I got off the train. Quite a friendly guy, he wished me a pleasant night. A couple weeks ago the same thing happened in a cab: we just started talking about the Sox, and off the conversation went for the rest of the 20-minute ride.

Sports in this town make an immediate topic of conversation with anyone. The Sox are somehow over 100% of capacity at Fenway, in contrast with the 85.1%-full Yankees. I think I may just have to start watching football, so that I can start conversations through the winter.

Perl goodness

slaniel | Uncategorized | Wednesday, August 11th, 2004

Perl has its problems, but over time I’m discovering a lot of lovin’ in it. Just today I discovered a few Perl time-savers:

  1. The use of the $/ record separator variable. If you want to read a new quote at random from a file and put in your .signature file every time you email someone, the shortest code I’ve seen thus far to do so is in that link:

    #!/usr/bin/perl -w use strict; srand; my $filename = '/home/slaniel/randsigs'; my @sigsArray = (); open QUOTE, "<$filename" or die "Could not open quote file\n"; { local $/ = "%%\n"; while (<QUOTE>) { chomp; push @sigsArray, $; } } print $sigsArray[rand() * scalar(@sigsArray)]; 

    The line beginning with “local” defines the characters that mark the boundary between quotes in your quote file — e.g., you might have (the example given in the link above)

    This is the definition of my life %% We are far too young and clever %% Stab a sorry heart With your favorite finger 

    The tiny script listed above defines the record separator as “%%\n” (where “\n” indicates the end of a line), then opens a file called /home/slaniel/randsigs, reads each quote and loads it into a list. After all the quotes have been read in, the script picks a quote at random from the list and prints it. It’s probably possible to avoid reading in the entire file, so the script can probably be made even shorter. I’m just impressed that it can be made as short as that link suggested.

    The magic comes from Perl’s internal variables, like $. I can’t pretend to know any more than a few of them, but I believe there are dozens. Knowing which ones to use, and how, probably would lead to significant time savings while coding.

  2. Another page on the infinitely useful perl.com gives an answer to how you can make your programs grammatically correct — e.g., have the program tell you, “You have 1 tab of acid left,” instead of “You have 1 tab(s) of acid left.” Only lazy programmers do the latter, and the typical approach to fixing this is to use the ?: operator:

    print "You have $tabs tab", $tabs == 1 ? " : 's', ' of acid left.\n'; 

    That second link discusses a neat-sounding Perl module called Lingua::EN::Inflect that will pluralize even complicated English nouns like “secretary general”; it provides a scalable solution that won’t require writing hacks with the ?: operator. And I had no idea it existed until now.

  3. Just yesterday, I wrote a little script to send out an email when an IP address changes. The meat of it looks like so:

    if( open( MAILOUT, "|mail $emailAddr" ) ) { print MAILOUT $currIP; close MAILOUT or print "Could not close filehandle intended for ", "emailing $emailAddr\n"; return 1; } 

    It’s neat: I can open a filehandle on a pipe inside Perl just as easily as I can open an actual file. Opening a file and reading in all of its contents is as easy as

    open FILE, 'filename' or print "Could not open filename\n"; my $contents = join ", <FILE>; close FILE or print "Could not close filename\n"; 

    Hence creating a pipeline that does something really complicated — like setting up an email message, writing it out to a file and also mailing it to a mailing list — is also really easy  . . .  once you learn how easy it is.

  4. I discovered today that the dotdot operator allows for ridiculous timesavings. Imagine you have a configuration file that looks like

    <block1> Some stuff </block1> <block2> Some other stuff </block2> 

    The Apache web server uses config files like this. Well, using the dotdot operator you can do things like

    while(<>) { doSomething() if( m{<block1>} .. m{</block1>} ); } 

    which will apply doSomething() against only those lines between and . I imagine this gets a little trickier if you have ’s nested inside of other ’s, but the basic idea saves many lines of code.

There’s a lot to learn about Perl. It seems really hard at first — all those $’s and @’s and so forth. Then it seems easy, and you think you’re really hot shit for writing quick scripts that would have taken a lot more thought in C or C++. Then you get to the point that you realize how little you actually know, and realize that a Perl master could have done the same job in half the lines. Or you discover the number of ways that people actually use Perl, you discover object-oriented Perl, you learn about variables tied to complicated data structures, and on and on. That’s where I am. I’m not sure whether this means I’m back to “Perl is hard,” or if it means that I’ve created a whole new category. It’s kinda cool, anyway, to find all these places where I can make improvements.

Jon’s weekend

slaniel | Uncategorized | Wednesday, August 11th, 2004

You really ought to read my friend Jon’s description of his weekend at the San Diego Comics Con. I know that sounds horribly lame, but Jon wrote a long story (make sure you click through all the pages of the article) that made me laugh and smile. Jon rocks.

Giblets on corruption

slaniel | Uncategorized | Wednesday, August 11th, 2004

I’ve been reading far fewer blogs in recent months, but I just now dropped back in on the Fafblog!. What good lovin’. Giblets writes

The best part is that more people become engaged in politics when they are presented in an entertaining and shallow light. For instance Giblets never cared much about political corruption in say the Reagan Administration because that was most about borin’ ol’ death squads and borin’ ol’ funding of terrorists. But when it was explained to Giblets later on that political corruption was really about naughty things you do with cigars Giblets was all over that shit!

Fafblog! continues to prove that it’s the only news or humor outlet that can engage the Bush Administration at the Administration’s own level.

Folklore

slaniel | Uncategorized | Wednesday, August 11th, 2004

I feel like we could get a long way toward convincing people that various new economic models — say, in music and software production — are sustainable, if we could convince them that much of the world’s intellectual output throughout human history has been “folk production”: not formalized in the sense that there’s a specific place for its production, not codified into one canonical form, not always written down, and so forth. Music production has obviously been like this, and “folk music” used to mean something a lot different from what it means now. Blues music was folk music; “someone with a guitar singing about politics” is not, necessarily. It strikes me that along with folk production comes a belief that your work isn’t necessarily in its perfect form, that others might be able to improve it, and that the community in some sense helped you create it. Linux certainly honors this idea. Whether or not blues musicians explicitly acknowledged it, such was surely the result.

UNIX is folklore in the senses that a) learning how to use it often involves turning to the wisdom of the community, whence you’ll discover some tool that does exactly what you want but which would have been nearly impossible for you to find on your own; and b) that the operating system itself is a community project. UNIX works. In fact it works really well. Companies are investing in its development. Still more companies are using it. I’m hoping that a contemporary example of working folk production will cause a mindshift, convincing people that the model itself is sensible, workable, and ultimately right.

Shadow passwords and cost

slaniel | Uncategorized | Tuesday, August 10th, 2004

Having discovered an easy password cracker, I’m reading more about shadow passwords and so forth, and I came upon this paragraph:

If you think about it, an 8 character password encodes to 4096 * 13 character strings. So a dictionary of say 400,000 common words, names, passwords, and simple variations would easily fit on a 4GB hard drive. The attacker need only sort them, and then check for matches. Since a 4GB hard drive can be had for under $1000.00, this is well within the means of most system crackers.

That’s a fun little anachronism. I recently bought a 200-gig drive for $100, meaning that 4 gigs of space costs about $2. That’s a 500x price reduction in 8 years, or a price halving something like once every 11 months. That outpaces Moore’s Law by about 7 months, at least since 1996.

I just find that really cool. Not sure why, but I do.

An axiom of economic policy?

slaniel | Uncategorized | Tuesday, August 10th, 2004

“No one deserves to be born poor.”

How does that sound as an axiom for policymakers? While we’re at it, how about

“No one deserves to be born rich.”

At a suitable level of generality, this starts to sound like my understanding of A Theory Of Justice: that if you asked people to choose a social ordering that they would have to live under, and they didn’t know where they would lie in the economic order — they didn’t know whether they would be rich or poor, well or poorly educated, black or white, etc. — rational people would choose an ordering that treated the weakest members of society the best. That is, rational people acting purely out of self-interest would want to guarantee as high a standard of living for themselves as possible. And since they’re operating behind the “veil of ignorance,” they can’t say whether they’ll be lucky enough to be born wealthy. Hence they’ll try to guarantee the highest possible minimum.

That synopsis of Rawls wouldn’t seem to say anything about whether people ought to be born wealthy: if no one should be born poor, it doesn’t follow that no one should be born rich. There, I think, it just follows because no one deserves anything at birth: if your parents were poor, that says nothing about whether you ought to be poor. Likewise if your parents were wealthy. Everyone should be able to become a millionaire, but the playing field ought to be leveled again when you die. Your kids shouldn’t be wealthy just because you were. All of this seems fairly intuitive.

I’m curious how well an estate tax helps to rectify economic imbalances at death. Certainly the rich know how to get around the tax laws more than the poor do, so in all likelihood the rich will game the system: they’ll put their money into untaxable vehicles, they’ll give their descendants large gifts, and so forth. Tax laws surely develop in response to this — say, we might tax large gifts at the same rate that we tax estates, and be more vehement in hunting down offshore accounts. Surely the wealthy (and their accountants) respond with still more tricky evasions, and so forth. More to the point, surely the wealthy respond by lobbying Congress, which the poor can’t do. Is there any way to pursue the axiom in the presence of very real political concerns?

« Previous Page | Next Page »