California
joelonsoftware.com
joelonsoftware.com
It brings to mind PG's counter-example of the iPod to the "Squalor of the man-made bits of America" (in his Made In USA essay). When I lived in Europe, I noticed that general stereotypes of the "USA" differed dramatically from impressions of "LA", "San Francisco", "New York", "California".
When you say "USA", people around the world often think of an economic and military juggernaut. If you say "California", they often think "surfers, technology, Ahnold, the Golden Gate Bridge," and so forth. Various cities in the US also have their own international reputations.
It's pretty clear that the rest of the world has very negative and very positive impressions of the United States, and these can be triggered by how you present yourself. Perhaps Apple is trying to grab a more positive reaction by claiming California rather than the USA? When Bush refused to ratify the Kyoto treaty, there was some talk in England about boycotting US products (pretty hopeless idea there, but it shows the anger). California did raise its international brand by bucking that trend.
I expect the US will regain some of its stature once the current administration is gone, but even if/when it does, I'd expect more local branding. Cities compete with each other more than countries do. What does it even mean to say it was "Made in the USA" anymore? If it's made in Seattle, Sydney, or Barcelona, it isn't made in San Francisco. We may be moving toward a world economy where that's the only thing that actually matters.
Actually, it shows ignorance. The US president doesn't ratify treaties, the Senate does. And, the Senate voted Kyoto down 95-0 during the Clinton years.
You got played by Clinton, but you can't object too much because you didn't bother to comply either.
But one debating tactic I've noticed in people with a weak argument: they go quickly to detail, identify flaws in phrasing, redefine words, argue over procedural details. Sometimes this is referred to as a "strawman argument", where you take your opponent's argument in its weakest form, and knock it down. I'd like to invite you to take the argument in its strongest form, and actually say something substantive.
So instead of "refused to ratify the Kyoto treaty," let's instead say "actively undermined efforts to take meaningful action against global warming." That would be taking the argument in a stronger form, and would give you an opportunity to explain how the Bush administration does not deserve a reputation for undermining efforts to combat global warming.
So... would you claim that George Bush has nothing to do with the America's rejection of the Kyoto treaty, or America's remarkable inaction on global warming in general? And would you disagree that his administration has repeatedly tried to undermine California's efforts to do something about it?
Before we start arguing about votes and procedures, I'd like to hear your big picture view on this issue.
I'd argue that Bush is actually irrelevant to the US and the climate arguments. Since their rejection predates him, it's hard to argue that he's a cause. And, since no one else bothered, it's hard to argue that the US is especially wrong on this point. (Then again, since the best-case benefits of Kyoto are within the margin of error...)
And no, what I did is not a strawman. I took what you wrote at face value.
My claim is that that California has made efforts that the United States have not made, and I do claim that the Bush administration has been actively undermining these efforts - both nationally and in California.
(edit - oh wait, I get it - I should have said "when the US failed to ratify Kyoto, rather than "when the Bush administration failed to ratify kyoto". I think Bush had a lot to do with it, but he wasn't the only one. If that's your position, fair enough).
And then there's the small matter that the Euros have done much the same wrt Kyoto and the fact that Kyoto doesn't do anything towards the stated goals and ....
That said, the Europeans were irritated with Clinton/Gore about this, and I thought it was somewhat unfair back then as well. When the Kyoto treaty failed the first time, it almost seemed that the Europeans had deliberately constructed a flawed treaty so they could blame us for failing to ratify it.
All the same, I think that Gore would have worked to overcome the negatives of this treaty and get a good agreement through. Whereas I think Bush used it to snuff out any action on Global warming.
California's actions can actually be used to refute some of this international criticism: California was willing to go against its own national government to get global warming legislation through - surely Australia, France, and Germancy can find a way to act without US leadership (or in spite of US opposition).
But my very first post was really about branding - that California may have a better international brand than the US does, partly because of this type of legislation. I really didn't want to spin off a long debate about global warming.
Opposition? How is the US forcing anyone to burn hydrocarbons? (France is going nuke in a big way so Germany may end up dependent.)
Euros are constantly saying how they're the economic equal of the US. If that's true, "US leadership" isn't all that relevant. Moreover, if the claims about a carbon free economy are true, doing so would be incredibly lucrative.
When someone insists that something is incredibly profitable but they're not trying to get as much of that profit as possible, their actions refute their words.
California and the US are both brands whose impression, like many brands, often has nothing to do with reality. Suggesting otherwise, especially with bogus arguments, is foolish.
Your last post seemed scattershot to me, but I do want to respond to what I think was a very peculiar argument in your first sentence.
The US isn't forcing anyone to burn hydrocarbons, of course. But a treaty is still important, because many smaller nations will conclude that if the huge emitters aren't going to change, there's no real point in sacrificing themselves (to some extent, this was Australia's rational for rejecting Kyoto).
There's an article in this week's economist about applying prisoner's dilemna to global warming action - where it pays to defect (let other people do the heavy lifting on reducing emissions). If the rest of the world gets it together on global warming, then you'll get a free ride. If the rest of the world doesn't - well then we're all going to hell in a bucket anyway, so why bother with sacrifices? But if everyone acts this way, we'll all be much worse off than if we had cooperated.
The economist article also points out that while defections pay off in single-run games, they don't necessarily pay in repeat games, where subsequent punishment for previous defections may cost more than the benefit of the original defection. In this context, the community of nations who do cooperate may be able to punish defectors severely enough that they prefer to come on board.
I suspect that California is trying to signal to the world that it is cooperating, not defecting, on global warming - by making a very big and public break with national policy. This, along with other policies, is part of the california "brand." While California needs to do more (and an editorial in the SF Chronicle comparing California's policy to New Zealand's shows that we are in no position to get smug), this is no bogus fabrication.
> But a treaty is still important, because many smaller nations will conclude that if the huge emitters aren't going to change, there's no real point in sacrificing themselves (to some extent, this was Australia's rational for rejecting Kyoto).
What sacrifice? The low-carbon folks claim that it will be cheaper. If they're correct, how will hydrocarbons be an issue?
> If the rest of the world gets it together on global warming, then you'll get a free ride.
That's assuming that the IP rights are worthless. I'm prettty sure that they'll be worth quite a lot, arguably far more than the development costs, and a lot of that money will come from latecomers, or if you prefer, "evil deniers". The relevant metaphor is "land grab", not "free rider".
Of course, the low-carbon folks could be wrong, but if they're correct, they make huge amounts of money and do good. Why are they trying to avoid the former?
As for your question: is Bush undermining the rejection of the Kyoto Protocol? I'll point this out: The US has neither ratified to nor withdrawn from the Kyoto Protocol. Maybe the question you should be asking is: why isn't the US ratifying to the Kyoto Protocol.
HackerNews is an ad for yc, pg's articles and talks are for publicising yc. I think the real difference b/w blatant advertising and the type Joel and pg (Buchheit, Greenspun, Yegge, maybe 37Sigs) is they impart knowledge, useful knowledge. If they did not entertain, inform and question readers wouldn't bother reading their pieces.
But I do understand the continuous 'Fogbugz' references. Maybe it's the geek in you rejecting someone telling you need something when you don't.
Maybe nickb is right. The page design also sucks making it hard to read and possibly needs some attention?
I don't think so. PG was writing essays and giving talks about startups before YC.
Of course this were insights he had accumulated through many years, its hard to keep churning out great insights on a regular basis, so I think people just get disappointed.
Also, his insights are mostly related to business and high-level decisions. When he writes about coding, his opinions seem slightly curious: exceptions suck, Hungarian notation rules and so on.
Have you actually read his article on this? I think it's very good.
http://www.joelonsoftware.com/articles/Wrong.html
Joel doesn't say that you should prefix integer variables with 'i' or use -1 as an error code (he prefers returning multiple values). He only says that every line of code should indicate as clearly as possible what it's doing so that you can still understand it six months later.
Exceptions eliminate one problem (a function can only return one value) but introduce another: it's impossible to tell by looking at a block of code where it will exit. If a series of statements might get interrupted halfway through, there needs to be an indication of this or else it's very easy to create bugs. I know this from experience.
He could solve the tainting problem by just wrapping the unsafe string in an object. This would be safer even in a dynamically typed language. His example is only relevant to very early versions of VBScript that didn't support classes.
Regarding exceptions, they are NOT supposed to be used for returning multiple values. They supposed to be used for exceptional results that cannot be handled locally. They don't have to be "invisible", e.g. in Java you have to either explicitly handle an exception or explicitly declare that you may propagate it. Using return values OTOH you may forget to handle a return value, and the compiler will not complain. His complaint is more valid wrt. C# where exceptions are indeed not checked by the compiler. But since he don't even seem to be aware of this difference, I'm pretty sure he knows about neither.
The point is that there is no such thing. Exceptional situations should always be handled locally, and by locally I mean on the very next line. If they can't be, then the program should stop running.
Writing code with exceptions is very hard to get right. Not checking return values is just stupid.
Consider a module that does some IO. The module might be used in different kinds of apps, both GUI apps, services and command line apps. How should this module handle a "disk is full"-error? Should it show a dialog with a warning, or write the message to the console and die? The appropriate action would be completely different depending on the type of app and the context wherein the module is invoked.
Exceptions allows the module to delegate the error handling to the right level of abstraction.
You need to do the explicit propagation after every single line that might generate an error. That seems to me to lead to a lot of boilerplate code, and it would be easy to forget or mess up one of these lines.
I kind of see Joels point though, that if you write:
openFile();
doSomething();
closeFile();
Then it is not obvious by just looking at these lines in isolation, that the file may not be released. If you already have the throws clause in the signature for some other reason, you might miss this.
I don't think boilerplate error handling is the right solution for this though. Boilerplate just gives you boilerplate-blindness.A language for programming nuclear devices like Joel hints at, might make the throws clause explicit on every method call:
openFile();
doSomething() throws IOErrors;
closeFile();
(Don't know if any language has this syntax, but at least it makes the throw obvious in a much safer way.)However I prefer something like the using pattern in C#:
using (file) {
doSomething();
}
(Same as "with" in python.)
I find this the ideal solution, since you don't have to worry about whether the method may throw exceptions at all, the file will always close correctly. And regardless of exceptions, the syntax guarantees that you don't forget to close the file. Say you write a function that takes input given by the user, inserts it into a list, and then sends the action across the network. Every item has an ID, so when the function finishes, the current ID number needs to be incremented.
add_item (item) {
var item_id = current_id;
insert_item(item, item_id);
update_current_id();
send_item(item, item_id);
}
You write the function, and it works, and no one has any problems with it.Two months later, you come back to the function and think, "That's messy. I should clean that up." So you do.
add_item (item) {
insert_item(item, current_id);
send_item(item, current_id);
update_current_id();
}
Do you see a problem with this code? No, you don't. You even run the program and try it out, and everything seems to work fine.What if the function header had said "throws NetworkException"? You might have been more careful, but I wouldn't count on it. If the function were longer, which it would be in real life, you probably wouldn't catch your mistake.
On the other hand, what if the code looked like this?
add_item (item) {
if (insert_item(item, current_id) == INSERT_ERROR) {
return INSERT_ERROR;
}
if (send_item(item, current_id) == SEND_ERROR) {
return SEND_ERROR;
}
update_current_id();
return SUCCESS;
}
Do you see the problem now? Of course. It's staring you in the face: current_id won't get updated if the network goes down. The result is that you could have two items in your list with the same ID.This isn't "nuclear power plant" paranoia. What I'm describing is a real bug I had recently. It wasn't the first time that I've done something like this, either.
I like your idea of putting the throws clause next to the function call. I'd like to see something like that for checked exceptions, and eliminate unchecked exceptions completely.
I still prefer to write exception-based code, but I understand how you could prefer to use return values.
You can mitigate this by relying more on return values and less on side-effects. If the higher-level code depends on some side-effect, why not place the side-effect in the higher-level code after the function returns?
-Joel Fanboy
Still is.
Sunny beaches and summer fun are one thing... Reality, I'm afraid, is much different.
And I've lived here my whole life.
I grew up in San Diego, never appreciated it fully until I left.
I lived in Pasadena for about a year. Between having to drive forever to get anywhere in dense traffic, the intense smog, and the lack of a cultural core - it made for a terrible experience.
San Francisco, on the other hand, is hard to beat.