rc3.org

Strong opinions, weakly held

Month: June 2009 (page 1 of 3)

Explaining the iPhone’s success

Every time a new iPhone is released, there’s a spate of articles that analyze the its success as a product. My friend Stephen O’Grady puts the success of the iPhone down to the apps. He’s got a point — the applications available for the iPhone are great. But the truth is that when the iPhone launched, the only opportunity for developers was to create Web sites that were optimized for the iPhone’s Web browser, and Apple was still selling a ton of phones.

Why? Because of usability. The iPhone offered a better experience than any other phone for making phone calls. Checking voice mail, conducting three way calls, and managing contacts are all light years better than they are anywhere else. The iPhone offered better Web browsing than any other mobile phone. Blackberry email is better than iPhone email, but the iPhone’s email experience is better than every other phone on the market.

That was the real secret to the iPhone’s early success, in my opinion. Apple spent a lot of time not only adding capabilities not available in other phones, but also perfecting the things that people were already using their phones to do. It made the wait for real applications tolerable.

Disparate impact

Since judge Sonia Sotomayor was nominated to the Supreme Court by President Obama, one case in particular has captured people’s attention — Ricci v. New Haven. Judge Sotomayor joined a 7-6 majority in ruling in favor of the city of New Haven at the appellate level. Yesterday the Supreme Court ruled 5-4 in favor of the firefighters.

The case is easy to describe. New Haven, Connecticut created a test to determine which firefighters should be promoted. Few minority candidates scored high enough on the test to be eligible for promotion, and New Haven declined to certify the test results. Rather than promoting anyone, the city decided to come up with an alternative test. This seems patently unfair, but things become more complicated when the applicable laws are taken into account.

The city of New Haven decertified the test results because they felt accepting the results would expose them to legal liability under Title VII of the Civil Rights Act of 1964. That law forbids any hiring standards that have a disparate impact on people of different races. In this case the suit was brought under the “disparate treatment” part of the statute, which outlaws making hiring or promotion decisions based on race. The argument was that by decertifying the test results, the city was using race as a criteria for promotion.

Yesterday I read all of the opinions in the case, and if you’re really interested, you should read them as well. The statute in question is easy to understand, and it’s interesting to see how the justices on both sides interpret it.

The way Title VII works is easy to explain with a hypothetical. Let’s say I create a test for employment, and the entire test is written in Chinese. I administer the test to applicants and find that all of the applicants who are not Chinese fail to pass the test. Under the law, this would qualify as “disparate impact” — it favors Chinese applicants over those who are not Chinese. So I am required to evaluate whether business necessity justifies presenting the test in Chinese. If the test was for people who would be teaching the Chinese language, the disparate impact would most likely be justified. If the test was for would-be accountants, then it would most likely not be.

The example in the New Haven case is less absurd than my example, but the thinking was the same. After presenting the test, the results suggested a disparate impact. The reasons for the disparate impact were examined and there was reason to believe a better approach could be devised that would have created less disparate impact, so the city voted not to certify the results.

In reading all of the opinions, I think that a vote that certified the results would have been justified as well. The city took a number of measures to insure that the original test was neutral. However, it seems certain that had the test been certified, a suit would have been filed against the city under the disparate impact section of the statute.

The core disagreement between the majority and minority on the Supreme Court is whether the vote not to certify the results of the tests constitutes “disparate treatment” under Title VII. The majority argues that the city made an intentional decision to discriminate based on race in its efforts to avoid unintentional discrimination, and that absent “strong evidence” of disparate impact, such discrimination is illegal. However, I found these two sentences from the dissent persuasive:

In codifying the Griggs and Albemarle instructions, Congress declared unambiguously that selection criteria operating to the disadvantage of minority group members can be retained only if justified by business necessity. In keeping with Congress’ design, employers who reject such criteria due to reasonable doubts about their reliability can hardly be held to have engaged in discrimination “because of” race.

Here’s how the majority opinion describes Title VII:

The Civil Rights Act of 1964 did not include an express prohibition on policies or practices that produce a dispa- rate impact. But in Griggs v. Duke Power Co., 401 U. S. 424 (1971), the Court interpreted the Act to prohibit, in some cases, employers’ facially neutral practices that, in fact, are “discriminatory in operation.” Id., at 431. The Griggs Court stated that the “touchstone” for disparate- impact liability is the lack of “business necessity”: “If an employment practice which operates to exclude [minori- ties] cannot be shown to be related to job performance, the practice is prohibited.”

This prohibition was added to the text of the law by Congress in 1991. How does one tell if a “facially neutral” practice is discriminatory in operation? By looking at the results. If the results indicate an impact, the next step is to evaluate whether another process would lead to less disparate impact. That’s the procedure New Haven followed.

As for the practical effects of the case, the disputed test was administered in 2003. I’m curious to know what kind of testing system the city of New Haven now uses in evaluating which firefighters should be considered for promotion.

For more on the case, see this discussion at Slate. I hadn’t read it when I wrote up my opinions on the case.

More on Say Everything

I’ve finished Scott Rosenberg’s history of blogging, Say Everything, and wanted to finish writing up my thoughts. The other day I wrote about the first half, now I’m adding my impression on the whole thing.

As I mentioned in the earlier post, Scott does a truly outstanding job of capturing the essence of events as they occurred. The toughest job for a historian or journalist is making the events recognizable to those who observed them closely, and Scott succeeds admirably on that front.

There are also pieces of analysis in the book that really impressed me. There’s a discussion of sincerity and authenticity that I found illuminating. I never really considered the differences between the two, but they are important and meaningful. I’d classify this blog as a “sincere” blog, but not an “authentic” one, by Scott’s definition.

He draws a distinction between “professional” bloggers and “traditional” bloggers that never occurred to me but that defines things perfectly — the pros write about what they think will interest their audience. The traditionalists write about what interests them. The difference is profound. I read all sorts of amateur blogs but very few professional ones. And what’s interesting to me is that the line is not whether the author gets paid or not — it’s the sensibility they bring to their work.

I also want to note that Scott incorporates quotations from blogs throughout the book, and the quotes are very well selected. The quotations not only underscore the points he’s trying to make, but are also almost always important in their own right. There are very few quotations from blogs in the book that were new to me.

This is a book about blogs that any blogger would enjoy reading. It’d also be great for people who have never gotten what blogging is all about. It’s really a fine book.

On health care

Good links on the topic of health care are coming fast and furious this week.

New Yorker writer Atul Gawande has written another piece on health care to follow up on his widely read article on disparities in health care expenditures and the reasons for them. In his new article, he lays out his prescription for health care policy.

The article is really a pep talk on the necessity of health care reform. As he points out, there are many health care systems around the world, and all of them are products of the time and circumstances within which they were instituted. Gawande recommends a mandate for universal coverage as they have in Massachusetts combined with greater measures to control costs, which brings me to my next reading recommendation.

Abraham Verghese writes in the Wall Street Journal about high health care costs, and making the argument that doctors being paid on a per-treatment basis is the fundamental problem with the system. Doctors make more when they order more procedures, and they don’t get paid at all for practices that would save money and increase patient health. Have you ever waited two hours to talk to a doctor for a minute or two about something that could have been handled over the phone? It’s because they can bill the insurance company for the office visit but not the phone call. This is how nationalized systems and single-payer systems save money: doctors are paid a salary and the economic incentives for doctors are completely different. This is, I think, the toughest problem we’re going to have to overcome, because with multiple insurers and doctors in private practice, there’s no easy way to change the incentives built into the system.

Nate Silver explains why the government should theoretically be able to provide health insurance in a more economically efficient way than private insurers. Robert Reich explains why the arguments against a public option are wrong.

I don’t have an ideological dog in the fight over health insurance, but what I do know is that the arc of my adult life would have been different if any American could go out and buy health insurance from a company or the government without regard to previous employment or preexisting conditions. I’ve taken jobs in the past for the sole reason that they offered health insurance. I’d ask everyone to think about how different their life would be if they didn’t have to worry about health insurance.

Practicing Test Driven Development

Tim Bray posts on the actual practice of Test Driven Development.

Here’s my thesis: As a profession, we do a lot more software maintenance than we do greenfield development. And it’s at the maintenance end where TDD really pays off. I’m starting to see lapses from the TDD credo as more and more forgivable the closer you are to the beginning of a project. And conversely, entirely abhorrent while in maintenance mode.

I am definitely not an orthodox member of the TDD tribe. I write code before I write the tests. On a good day, I build out the tests and the features simultaneously. On a not so good day, I don’t do as well. But my main goal with TDD is to have a skeleton of tests for every feature so that when bugs crop up, I can add in the tests that confirm the fixes and expand the regression test suite. So I’m on Tim Bray’s side — the key is to have enough tests initially to make writing tests an essential part of your maintenance process.

Iranian soccer players banned for life

On the subject of risks undertaken by dissenting Iranians the other day, I wrote:

If these protests fail, the people who are identified as having participated are likely to be discriminated against in every way possible until some other effort to change the regime succeeds.

Today I read that the Iranian soccer players who expressed solidarity with the protesters have been banned for life.

Notes on Say Everything

I’ve plowed into Scott Rosenberg‘s new history of blogging, Say Everything and finished the first half of the book today. It’s pretty clear to me that this book will be seen one day as incredibly important. This is the first history book I’ve ever read (and could very well be the last) that describes events that I observed very closely. Scott does a great job of filling in the backstories for those events. Nothing in the book rings patently false or wrong to me, and that’s the highest compliment I can pay.

A few random impressions from the first few chapters:

  • I appreciated the chapter on Justin Hall. He was one of the most interesting characters on the early web. Rosenberg mentions Electric Minds in the context of Justin working there. That was a site that I really, really loved — it was probably the most stimulating forum for online conversation that I ever encountered.
  • The second and third chapters cover Dave Winer and Jorn Barger. Both of them were huge inspirations to me and were very influential in terms of how I built this site, and both of them are in some ways controversial characters. I thought he told both their stories fairly and well.
  • Suck.com gets a big mention. There is no site that inspired me more to write online than Suck. I originally wanted to write essays for Suck, and settled for trying to write essays in the style of Suck.
  • I knew a big chunk of the Pyra/Blogger story, but not all of it. Now I feel like some of the gaps have been filled.
  • Scott discusses the influx of “warbloggers” immediately after September 11, 2001. Reading that part of the book made me really sad, so much so that I almost wanted to put the book down. I felt like those people took something from the people who were blogging before, and I still resent them for it.

A few things I was sad to see go unmentioned:

  • Noah Grey. Noah wrote an open source blogging tool called Greymatter that was released after Blogger and before Movable Type. These days it’s hard to find a good link to link to for him. Greymatter was (I think) the first open source server-based blogging application as far as I know. It was also written in the most inscrutable style you can imagine. I’d hate to see his contributions be lost completely.
  • Brigitte Eaton. In the early days of weblogging, Brigitte made a herculean effort to catalog all of the weblogs that existed. Eventually the growth of weblogs made that task impossible, but she maintained the most comprehensive list for a really long time, and she did it by hand. Scott mentions the first blogroll, but doesn’t mentions Brigitte’s work on that front.
  • Me. Not because I was omitted, but because I feel like I didn’t make the contributions I could have back in the olden days. I was there to bear witness but didn’t take advantage of the opportunities to make a bigger impact. Fortunately it’s not as though I’m out of chances.

On the Iranian protests

Like many, I’ve been obsessively following the news out of Iran since the elections last Friday. What I haven’t done is cheer on the protesters in Iran.

First, let me say that I wish for Iranians what I wish for everyone — a government that is accountable to the people and that protects the rights of all its citizens. And I hope that they can put a decent, democratic government in place with as little bloodshed as possible. Regardless of whether or not the election was rigged, the actions of the Iranian government since the election have been those of the authoritarian dictatorship. The Iranian government lacks the legitimacy in the eyes of its people to conduct a fair election, and that’s true regardless of the real vote totals, which are unlikely to ever be known.

But here’s the thing. Nobody who’s not in Iran can ask a single thing of the protesters in Iran. I have difficulty even offering them encouragement. In 1953, the Shah of Iran was kept in power by a military coup openly backed by the United States and United Kingdom. In 1979, Iran became an Islamic Republic by way of a popular revolution. The chaos that followed led to the Iraq to invade Iran — leading to a war that lasted most of the eighties and resulted in the deaths of over 1 million Iranians. The United States openly backed the Iraqis in that war. And now, thirty years after the revolution that led to the Islamic Republic, Iran is in the same place as it was in 1978, with an authoritarian leader attempting to put down a popular uprising through the use of violence and brutality.

Every Iranian has to make a personal choice about whether or not they’re going to take to the streets to demand a better government. They must know the real risk being beaten, arrested, disappeared, or killed. If these protests fail, the people who are identified as having participated are likely to be discriminated against in every way possible until some other effort to change the regime succeeds. What right do I, or any non-Iranian, have to encourage people to take such risks? The Iranians who did so in 1978 must surely look back now and see that that the revolution was a failure in terms of improving the lives of their fellow countrymen. Today’s government is as bad as the government they deposed back then. There’s no guarantee that the next government will be any better.

The only question left is which side will blink. Either the government will lose so much support that it can’t sustain itself, or it will commit enough barbaric acts to stop the protests. The only thing we can do is promise to watch what happens and to remember.

The twentieth anniversary of the brutal crackdown on the Tienanmen Square protests passed just two weeks ago. The Communist Party is still in charge in China, and last year they played hosts to the world in the Summer Olympics. That’s what the support of Americans amounted to then.

So I hope for the best for the Iranian people, and I deeply respect the risks that everyday Iranians are taking in an effort to change their country for the better. But I also understand that it’s all about them, not about us.

Determining whether to hide a report filter

Let’s say you have a report that has some filter controls on top that let you narrow the scope of the report. When the report loads, the filter is collapsed. The user opens the filter, changes some of the settings, and submits the form. What is the preferred method for determining whether the filter should be displayed? A related question is whether you should detect the filter’s visibility status in JavaScript or you should check on the server side and use the style attribute to control visibility.

Here are some options:

  • Always leave the filter collapsed initially. I hate this option, though, because it hides important information from the user. If the report is in some non-default state, the user should be able see when it loads what that state is.
  • Check to see whether any form parameters were submitted. If there were, add the appropriate style attribute to the form on the server side.
  • Assuming the GET method was used, check for a query string in JavaScript and hide the form using JavaScript if no query string is present. (Indicating that the filter is in its default state.)
  • Using JavaScript, check the values of all of the fields on the form to see whether they are in their default state. If not, display the form.
  • Use a hidden form field set on the server side to indicate that the filter should be displayed. In JavaScript, check that field to determine whether or not the filter should be displayed.

There are probably other options as well, and all of them will work. Choosing from among them is a matter of ease of maintenance, mostly. Ideas?

Disinformation on Twitter

The Iranian government (or its supporters) are starting to use Twitter to spread disinformation. ABC News reports on a Twitter user who is retweeting items from their correspondent that he didn’t write. Marc Ambinder’s suggestion that people think like a CIA analyst is worth remembering.

Older posts

© 2024 rc3.org

Theme by Anders NorenUp ↑