24.10.08

Shame on you Apple

A story recently ran out in the local bloggosphere that Apple has donated $100K to Anti-Prop 8 groups. I won't honor the blogs with a link, so you'll have to go to a search engine to find the story. Google also opposes the proposition - think about that when you choose your search engine.

I'm not advocating a boycott of Apple or Google, but I do believe that this takes "corporate responsibility" too far. Corporations do not need to support or oppose these types of initiatives. As an Apple stockholder, I do not want the company I invested in to make controversial political statements. I want them to focus on product, sales, margin and revenue. Prop 8 has no bearing on this whatsoever for Apple.

In short summary, in 2000 61% of voting Californians passed Proposition 22, which defined marriage as being between a man and a woman. In May 2008, the California Supreme Court narrowly held that the will of the people was unconstitutional, and overturned the law, stating that it violated the equal protection clause of the California Constitution.

Their actions were fine, until they took a step further, dictating a law from the bench that gays have a constitutional right to marry. Regardless of the benefit the courts do not and should not make laws.

Religious beliefs aside, I support Proposition 8 simply because I do not believe the court should have the right to dictate legislation. The correct procedure would have been to present a law defining marriage as a union between any two people, not to have the court decide what the law should be.

Please vote yes on Prop 8.

13.10.08

The Case of the Missing Gigabytes

Today I saw another complaint from someone who purchased a 500 GB hard drive, but was baffled/confused/annoyed/outraged that the drive formatted to only 465 GB of available space. What bothered me is that the complaint came from someone who claimed to be a technical user. I thought a technical user would understand that humans and computers count differently.

If you don't know what I mean, I'll sum it up, break it down, then sum it up again - just to be clear.

To sum it up: Humans count using the decimal system computers count using the binary system.

So? What does that mean? Decimal? Binary? Base-2 or base-10? Hold on, who said anything about bases?

Here's the breakdown. Humans count using the decimal system (a.k.a. denary or base 10). Fundamentally, this means that we use 10 symbols to represent our numbers = 0,1,2,3,4,5,6,7,8 and 9. As we begin counting, we have to increase the order of magnitude each time we run out of symbols. That means, when you hit 9, you have to add another symbol and start over. That's how we arrive at 10. This system is particularly useful because we have 10 fingers and tends to allow us to represent fairly large numbers in a small amount of space. Decimal is also ridiculously easy because we all learned to count that way.

Computers, however, don't have fingers. They have transistors. Transistors (basically) have two states: off and on, or 0 and 1. When scientists were creating computers, they realized that base 2 uses only two symbols for counting, 0 and 1! How convenient.

This presents a problem for counting, because numbers require a large amount of space to be fully represented. Look at the following chart, for example:
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1111
15 10000
16 10001
17 10010
18 10011
19 10100
20 10101

Humans use symbols in two places to represent all the values between 10 and 99. Seven places are required to represent 99 in binary = 1100011. It's hard counting in binary! (well,not really, here's a video on how to count in binary with your fingers. Watch out for the numbers "4" and "132" - I'd hate to see what your friends do if you ran up to them, showed them 132, and shouted "I'm counting in binary!") Did you know you can count to 1,023 on your fingers in binary! It's over a million if you can use your toes, too!

'Big deal,' half of you say. 'My head hurts,' says the other half. The resounding chorus, 'What does it mean?'

I'm getting there. Well, each time you add a place to your line of symbols, you increase by an order of magnitude. Orders of magnitude are a convenient way to represent very large numbers. In decimal we have large spaces between each increase in magnitude. Binary does not. These orders of magnitude are important for the way we represent the values of hundred, thousand, million, billion, etc.

It's easy to write the words. We even use prefixes (which can get confusing if you use the long scale versus the short scale, but that's another post) like kilo-, mega-, and giga- to save us from having to write all those zeroes. If I wrote one gigabyte, I assume you would know what I meant.

Or would you?

See, the orders of magnitude map pretty nicely to the prefixes we use to represent them. 10^3 equals 1,000 or kilo; 10^6 equals 1,000,000 or mega; and 10^9 equals 1,000,000,000 or giga. But what about binary? 2^10 equals kilo, or 1,024; 2^20 equals mega, or 1,048,576; and giga is 2^30 or 1,073,741,824. Hang on a sec, this can be confusing.

Because the prefixes don't equal the exact same amount, there is a movement used among geeks and other sciency types to differentiate between the prefixes which you can read about here.


It boils down to this. Hard drives are manufactured for machines, machines count in binary, and operating systems (that run the machines) convert large binary numbers using the prefixes respective to the order of magnitude they need to represent. Hard drives are made by humans, marketeers are humans (really!), and they didn't want to explain everything I just did, so they decided to decree "One Gigabyte Equals 1,000,000,000 Bytes!" And they do, at least most do on the box. Buy how do we apply this knowledge?

Hard drives are sold under the 1,000,000,000 bytes/gigabyte measurement. So your brand new hard drive came with 500,000,000,000 bytes of storage. Yay! Why, then, does the OS show 'only' 465 GB?

Jump back to the order of magnitude/prefix paragraph: the OS represents 1,073,741,824 bytes as a gigabyte, which means we've got some math to do. Luckily, we've laid it all out so far.

500,000,000,000 bytes / 1,073,741,824 bytes = 465.66128 Gigabytes. Lo and behold, that's where your 465 GB came from.

So that was a long way to get here, no?

In summary, it pays to understand the way things you buy are being accounted for. In the case of the hard drive, the manufacturer says that they're selling you a drive with 500,000,000,000 bytes of storage, it's just that the OS counts differently. This picture sums it up (look at the capacity line):


Hey, I got a few more bytes than I paid for!