Friday, July 20, 2007

Google to US Government: Open The Airwaves Or We'll Buy Them. All of Them.

Google demanded today that the US Government agree that use of the public wireless spectrum be subject to the following four rules, meant to require the airwaves be "open".

  • Open applications: consumers should be able to download and utilize any software applications, content, or services they desire;
  • Open devices: consumers should be able to utilize their handheld communications device with whatever wireless network they prefer;
  • Open services: third parties (resellers) should be able to acquire wireless services from a 700 MHz licensee on a wholesale basis, based on reasonably nondiscriminatory commercial terms; and
  • Open networks: third parties (like Internet service providers) should be able to interconnect at any technically feasible point in a 700 MHz licensee's wireless network.

Fair enough. Google isn't a phone company, is sad that the phone and cable companies want to charge for their networks, so they want Uncle Sam to demand that Google be allowed to play with the big boys. Since Uncle Sam granted the monopolies the phone and cable companies are abusing, I say this is all good.

But the kicker, and it's an amazing kicker, is that Google is willing to pay the government $4.6 billion if they agree to its terms.

That's why our CEO Eric Schmidt today sent a letter to FCC Chairman Kevin Martin, saying that, should the FCC adopt all four license conditions requested above, Google intends to commit at least $4.6 billion to bidding for spectrum in the upcoming 700 Mhz auction.

Why $4.6 billion? While we think that a robust and competitive auction based on these four principles will likely produce much higher bids, and we are eager to see a diverse set of bidders competing, $4.6 billion is the reserve price that FCC has proposed for the auction. With any concerns about revenue to the U.S. Treasury being satisfied, we hope the FCC can return its attention to adopting openness principles for the benefit of consumers.

I think the obvious question is as follows: If Google is willing to spend $4.6b to encourage the government to adopt its standards, what is it willing to spend to buy the whole spectrum and force its way if the government disagrees? And will it—can it—outspend the phone companies to get its way? And if they do get their way, will they still "do no evil?"

It's a bold move. That's a lot of money, even for Google. But it doesn't seem quite subtle enough to work. Would the commissioners FCC rather do the "right" thing under such naked, public threats by such an arrogant company, or slide a deal in the backdoor while receiving some nice golfing trips, fine meals, cash in a freezer, and evening entertainment?

Tuesday, July 17, 2007

Locked Out of My File!

Too many applications hold file locks unnecessarily by design. Nonetheless, for many purposes I often want to read those files and assume I'll be "lucky" and not get inconsistent data. Or perhaps I want to read some data (e.g. a magic cookie header to test format) that I know won't change even if the file is being written. For some reason the way to open a .NET FileStream for reading a locked file has always eluded me. If you want to read a file and are getting the following error

Unhandled Exception: System.IO.IOException: The process cannot access the file 'blah.txt' because it is being used by another process. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access) ...

You just need to indicate explicitly that you're willing to share your file handle. In other words, you're feeling lucky, punk.

using (FileStream fs = new FileStream(@"blah.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) Console.Out.WriteLine(fs.ReadByte());

The FileShare.ReadWrite indicates you're willing to share this file with people who are reading and writing to it. Once you think about it that way, it's obvious. For some reason, I kept looking for flags that indicated how little I wanted to touch the file, and this flag didn't jump out at me.