SpaceX just successfully launched a Falcon 1 rocket and achieved payload orbit. This was a test flight, but still it's the first successful flight of a private rocket to orbit. Huge step forward for private spaceflight!
Read moreMore Zune Spam!
Notice what's missing from this email?
That's right, there's no unsubscribe link. And before somebody suggests it, neither the "Privacy" nor the "Terms of Use" link leads to an unsubscribe option.
(You might ask why Zune even has my email address. The answer is for about a year or so Microsoft would tell you to install the Zune software in order to stream media to your 360. And in fact Xbox Live accounts are Zune accounts and vice-versa. Of course, my Xbox contact preferences are set for "don't ever contact me for anything". They still do, but I think they limit to service outages and things where they are charging my credit card.)
So, "zune@email.zune.net" met the "Train as spam" keyboard shortcut. Amateurs.
Read more
OK, that's enough
(sigh) I hate talking about politics, pretty much period. First off, I just don't like talking about politics. Perhaps strange for somebody who actually went to college claiming he wanted a Political Science degree, but that was really always window dressing - it was an employable version of a history or anthropology degree. Blogging about politics is even more fraught because I only have maybe a dozen readers and I know two of them disagree with me on almost every political point you'd care to name. But sometimes I just have to say something before I explode.
First off, if you want to understand this current financial whatever-it-is and you're open-minded enough to believe that NPR isn't a vast conspiracy of whatever sort, let me direct you at the Planet Money podcast (which I saw in a Twitter from Scott Simpson). I've just binged on their last week's worth of podcasts, I guess I was hoping more information would make me less outraged. That didn't work. But I am more informed now.
Let's review.
1 ) Under deregulation, banks were allowed to "leverage" to a what is, in hindsight at least, a ridiculous degree. When all the chickens of the subprime mortgage came home to roost, the banks simply did not have the cash to provide the insurance they had committed to. It's complicated because apparently mutual funds had started providing insurance and a lot of people who had no business guaranteeing mortgages had, through a twisty and complex package of derivatives. But this is still the gist, when all of these ARM mortgages adjust people lose their homes and a lot of people "insured" against that happening but didn't actually set aside any money against that event.
2 ) This was an obvious outcome. I speak as somebody who bought a house in 2004 and found it completely impossible to get anybody in the whole real estate/mortgage cabal to even admit subprime mortgages were bad. (Full disclosure: my current mortgages fall into this category. I finally settled for getting mortgages where I could make real payments without penalties. And yes, my mortgage broker thought I was being silly, but there were mortgages that penalized me for paying any principal in the first five years. I wouldn't take those.) It was immediately obvious that as soon as propery values even went flat the whole sector was going to collapse.
3 ) The Deputy White House Secretary admits people have "had months" to work on this bailout plan. (Hit that link and search in the page for hastily for the good bit.)
4 ) Although the executive branch has had been working this for months, we have to pass it RIGHT NOW OH MY GOD OR WE'LL ALL DIE!. Even though nobody had heard about this "plan" a month ago.
5 ) I've heard that before from this administration. See the Patriot Act, see the authorization for force in Iraq, see the retroactive immunity for telecoms asserting that it's OK for a company to break the law if the executive branch tells them to do so. (! I still can't even think that without adding the exclamation point. What. The. Fuck.) Fool the country once, shame on you. Fool the country twice, shame on the country. Fool the country three times and proverbs fail me. Try the fool country a fourth time and can't we just say the fuck NO for a few months and just give Bush the "OH MY GOD WOULD YOU JUST SHUT UP" hand for a while? I'm pretty much good on calling him a lame duck now and waiting to see who comes next.
6 ) The bailout package gives unprecedented powers to the Treasury Secretary. Specifically at least some drafts of it have said:
Read moreDecisions by the Secretary pursuant to the authority of this Act are non-reviewable and committed to agency discretion, and may not be reviewed by any court of law or any administrative agency.Are you fucking kidding me? We have an administration who has pushed for nigh on to eight years now that it needs unbridled, unlimited power and here we have a bill spelling it out explicitly for once. If Congress passes this clause it's tantamount to cutting their own throat, since they'll be willingly castrating themselves. If it wasn't so goddamn important I'd say let them, but sadly it's too important to remind the executive branch that it's just one of three equal branches and there are checks and balances for good fucking reasons. 7 ) It's so important that McCain has to suspend his campaign, and coincidentally the debate. Well, maybe we could reschedule the Presidential debate over the VP debate. I mean, haven't we heard enough from <Foghorn Leghorn chuckle> that cute little Alaskan governor lady </Foghorn Leghorn chuckle>? Well yes, I've heard enough from her, but as long as a major party is claiming she's qualified to hold high executive office then no, I haven't heard enough. Please go on, I'm fascinated to hear how if "Putin rears his head and comes into the airspace of the US" the Alaskan governor is prepared to handle it. Presumably because we can't find Al Haig anymore? Or perhaps how the fact that one in five jobs are in the trade sector means being the governor of Alaska is substantial foreign policy experience? Hey McCain, you picked her, let her go to the debate. I realize it's a problem since your party doesn't have a whole lot of minorities and that's puzzling. You'd think more women were pro-shotgun weddings, wouldn't you? Maybe declaring everyone who fails off the impossibly narrow ethical tightrope as enemies of the state means your pool of qualified candidates is too narrow? 8 ) Except wait, no McCain can debate after all since the bailout deal didn't fall apart yesterday. Wait, it did fall apart didn't it? I'd ask for the McCain campaign to stay on message, but I guess first I need to ask it to pick no more than one message per week. Once they do that we can work on staying on the message. Remember, he was going to the debate on Tuesday (9/23) had "no intention to going to the debate" on 9/24/08, and on 9/26/08 he's going to debate after all. Because in the timeframe since McCain suspended his campaign the bailout fell apart, and Washington Mutual collapsed in the "biggest banking failure in American history". So either that's a "heckuva job" there, or he's a big flip-flopper. Which is it exactly? Bottom Line: one of the parties is trying to tell us that we have to pass the bailout RIGHT NOW, OH MY GOD DO IT, WE CAN'T EVEN HAVE A NORMAL PRESIDENTIAL CAMPAIGN, PASS IT PASS IT, GIVE ALL THE POWER TO THE TREASURY DEPARTMENT! Which is so far up the ass of the boy who cried wolf that it must be real, because if Saturday Night Live said this shit as satire they would be scoffed at as being ridiculous and unbelievable. Look, when the tinfoil hat capital-L liberals say the Republicans are going to pull some sort of "October Surprise" and postpone or suspend the election we all agree that's ridiculous poppycock and should be mocked right? Well suspending a campaign for two days is the best argument yet that it's plausible. I still don't believe it will happen, but I'd appreciate it if the Republican presidential candidate didn't hand them any more loaded pistols. OKThanksBye!
Could we get an expiration date on this?

Cocoa collections, an advisory note
Now that I'm doing actual useful iPhone development work I'm running into a few… shall we call them quirks? Talking about the iPhone specific stuff possibly needs to be [redacted] because of what's known on Twitter as the FUCKING NDA, but I think if something is also part of the OS X libraries then it is fair game.
I had cause in my recent application to use a NSDictionary (well a NSMutableDictionary but let's not quibble, shall we?). A NSDictionary is quite straightforward, it stores key-value pairs. Imagine that you have a Person class and you have some other data (not part of the Person directly) that you want to keep on a per-person basis. You might well decide to use a NSDictionary and store (as a value) a NSArray for each Person (as a key). That way you can quickly retrieve the data for any Person. Now the documentation says pretty clearly that it's going to copy the keys but the obvious implication isn't stated: that means you need to implement a copy operator for any class you plan on using as a key.
The thing is, nothing tests to make sure you do that. There's not even a warning if you don't but whatever default copy you get won't pass the comparison function. That means you can never say "Give me Bob's data" because the key for "Bob" won't be the same as the "Bob" object you're using. (And as an aside, yes I realize using the entire Person object as the key is slack. This was a temporary thing I was doing just to get the code running. In the particular case the "Person" object only consisted of a NSString anyway, so it wasn't that terrible.) You can happily stuff data in the Dictionary for "Bob" all day long but you'll get a nil when you try to retrieve the data.
So. If you're going to use a NSDictionary with custom key classes you'll want to implement the NSCopying protocol. I suspect you want to implement the isEqual message, and the documentation for that also mentions you need to implement hash. It's not that this isn't in the documentation exactly, but it's not front and center. If say you're writing code on your laptop in a car while driving to a Hooters where you plan on drinking a lot of beer. Hypothetically speaking.
This is pretty obvious, but I was surprised that I didn't get some sort of compile-time warning or error. Since the fix it make sure that object passed for the key was of a class that implemented NSCopying I still think the compiler could have detected this. (I'll admit it seems a little non-Objective-C-like but in my still newbie opinion Objective-C suffers from two much "try it it a runtime and see if it works" sort of behavior.) But it's just the sort of the thing you need to check yourself.
Read more