Category Archives: Uncategorized

The real meaning of 10^9

I recently bought a 128GB USB mass storage device from Amazon here in Germany. The price I paid for this unbelievable amount of storage in my pocket? Just 22 Euros.

As you maybe know from a previous article, I’m never exactly pleased when I buy a storage device and find out that the manufacturer is actually selling less capacity than they’re advertising. Rather than turn this into another rant, I’d like to start a discussion with storage manufacturers about what 10^9 means.

First, some definitions:

Gigabyte: 1,000,000,000 bytes is the actual number of bytes in a “gigabyte” which has historically had the acronym “GB” shown.

And when you think about it, it makes sense. Recall your SI units, where you have kilo (1,000), mega (1,000,000), giga (1,000,000,000), tera (1,000,000,000,000), peta (1,000,000,000,000,000)… you get the point.

Gibibyte: 1,073,741,824 bytes. This is the number of bytes in “GiB” which is what computers typically operate in, because it’s a power of 2 (2^30).

So, why the confusion? Well, when you buy a computer with 8 “GB” of RAM, you’re actually buying a computer with 8 GiB of RAM. But, for historical reasons, it’s much more common to see electronics advertised with “GB” instead of “GiB” (although in recent years things seem to be changing, at least on the software side).

Some smart executive at a storage company long ago figured out that if they were advertising products as having 1 GB of capacity, that was actually 10^9 bytes, not 2^30 bytes, and they could increase profits if they started selling devices which were only 1,000,000,000 bytes instead of 1,073,741,824 bytes. That’s like 7% less storage!

https://commons.wikimedia.org/wiki/File:High_five!!.jpg

The celebration probably looked something like this

And in fact, storage manufacturers have been quite clear about this for a long time. They state quite clearly, in small print, on the back of the box or at the bottom of their product webpage, that the actual size of a Gigabyte is really 1,000,000,000 bytes. So, when you plug that shiny new storage device into your computer, and see 119.2GiB, well that’s just you failing to do the math to account for the difference between 10^9 and 2^30.

In fact, many manufacturers have support pages dedicated to outraged people who buy a device and haven’t read the fine print. Here is the SanDisk website explaining device capacity:
http://kb.sandisk.com/app/answers/detail/a_id/46/kw/capacity

I am not here trying to argue that electronics manufacturers should advertise storage devices advertised in GiB. They’re correctly advertising the capacity of the devices in Gigabytes, the SI unit. It would probably help SanDisk even more if on their website they used the appropriate definition for 2^30, which is Gibibyte. But as I said, consumers have gotten used to reading “GB” so when they see “GiB” they don’t understand what the difference is.

I know, I can hear you thinking right now “Okay, so what? Get to the point already, you’ve been droning on for over 400 words. Hey, are you paid by the word?”

First, I make no money from this website. And second, I said this was a discussion, not a rant. In a discussion, you must provide context and frame the problem. Otherwise it’s just blatent complaining.

Remember that SanDisk page (pictured above) where they helpfully explained the difference between a Gigabyte and Gibibyte for us? Well, I didn’t show you the whole page. Here is what is written directly after the screenshot pictured above explaining a gibibyte:
sandisk_capacity_explanation_revealed

So, basically what SanDisk is telling us here is that the actual size of the device isn’t even the advertised capacity multiplied by 10^9 bytes, it’s actually less. This is basically the legal equivalent of them saying “trust us, it really has 128,000,000,000 bytes inside, but you can’t use them all.”

Somehow, our governments have decided that this kind of advertising is legal.

I went back and looked at the Amazon.de page where I bought the product. It might shock you, dear reader, but there was no fine bullet point in the specifications saying “actual user storage less”:
amazon_de_128GB_cruzer_blade

This is understandable. If people saw “actual user storage less” mentioned in the product advertisement, they would probably be suspicious of the amount of storage they were actually buying, and sales would suffer.

I thought I would go look at other retailers to see if “actual user storage less” was mentioned anywhere on their websites. Here is the same product listed on Amazon.com:
amazon_com_128GB_cruzer_blade

What about NewEgg.com?
newegg_com_128GB_cruzer_blade

Okay, so the companies selling these devices aren’t overly eager to include this fine print, which SanDisk actually includes on their website. In small text, at the bottom of the page:
sandisk_com_128GB_cruzer_blade

I emailed SanDisk about this to ask why the “actual user storage less” wasn’t mentioned on any retailers website, and they responded:
sandisk_reply_1

While I disagree with their reply, I understand that retailers have some freedoms in how they advertise a product. However, with this in mind, I am sure that a small army of SanDisk lawyers would co-sign a cease and desist letter if I started advertising their products in any way which they determined was harming their brand value. But then something curious happened…

sandisk_reply_2

SanDisk claims that they don’t have any control over how retailers advertise their product, but then they state that these companies are “authorised distributors and resellers.”

Given the incredibly high percentage of counterfeit products being sold these days under the label of a well known brand, it’s clear that manufacturers need a trustworthy outlet to sell their goods, or consumers might begin to doubt the quality of their brand. That’s the economic impact of “electronics priacy” [PDF].

Managing your supply chain and maintaining your brand image costs companies millions, if not billions, of dollars every year. It’s serious business. People go to jail for importing and selling counterfeit products.

So, when a company claims that they have no control over how their product is advertised, I find that a bit difficult to believe. Legally they may not have an obligation to require retailers mention “actual user storage less” but morally and ethically they should ensure that their retailers do not advertise their product in a misleading way.

SanDisk is selling a “128GB” USB stick, which has a raw capacity of ~125GB (116GiB):
sandisk_cruzer_128GB_fdisk

They also mention in small text, on the back of the package, that “actual user storage less.” Too bad they didn’t state this anywhere on the actual retail page.

At this point, anyone who is sane will do the math and ask the question “You received 2.2% less capacity than was advertised. Why have you wasted your time writing about this?” and that’s because I’m scared of the precedent this is setting.

It’s true, it’s seemingly pointless to sit here and discuss the missing 2.2%. But 10 years ago, you would spend a lot of money to buy a USB stick which was 2GB. Even now, most people pay phone companies tens of dollars per month to transfer 3GB over 3G or LTE, or $90 per month if you’re unlucky enough to own a smartphone in Canada:
canadian_cell_plans

So even though as a percentage, it’s relatively small, it a not-insignificant amount of capacity that’s missing. If this was a 1TB device, you would be missing 23GB, and this is even before we get into Giga versus Gibi and formatting…

When I buy a device where the primary function is storage, I expect to be buying a device which can contain $CAPACITY * 10^9 bytes of data. This is important for things like data recovery. If I need to make an exact duplicate of the data on a storage device which is 128GB, I don’t want to have to worry about buying a device from a specific manufacturer, model, or serial number range to be able to store the data. This isn’t swapping the PCB on a broken hard drive, it’s just buying a simple storage device!

I’m scared of what message we’re sending to manufacturers when we allow them to sell us products with vague statements like “actual user storage less” and what it means for the future of the industry.

If I buy a smartphone which has 16GB of space, I expect to be able to use less, because the primary function of a smartphone is to be a pocket computer. I understand that capacity is required for the operating system, and that the actual capacity available to me will be less than the advertised amount.

But to buy a device whose sole purpose is to store data, and have that device provide less capacity than advertised. That’s scary, not for the 2.2% that I can’t use today, but because tomorrow it might be 5%, and in 10 years 20%.

Why is the capacity less? Perhaps they’re using NAND which doesn’t have space over provisioned for error correction and wear levelling, allowing them to fit a few more on a wafer. Or maybe the chips have bad regions which they’ve mapped around, meaning you get a slightly smaller capacity. I doubt we’ll ever get an explanation apart from “actual user storage less.”

SanDisk isn’t the only manufacturer doing this, but they’re certainly the worst offender that I’ve found. Recently I purchased some 16GB micro SDHC cards from Transcend, and they’re 0.5% under capacity as well. Luckily I have found that Samsung’s EVO line appears to at least provide the advertised capacity in 10^9 bytes. But, how much longer until everyone clues in to the get out of jail free card that is “actual user storage less” and starts selling devices under the 10^9 capacity?

The moral of the story here is: complaining on the internet is useless. Vote with your wallet. Return anything which is not actually 10^9 bytes of capacity, and rate it accordingly to warn other users. I’m not going to support a brand which, in my opinion, allows retailers to advertise their products in misleading ways. Besides, the performance sucked (4.5MB/s sequential write). You get what you pay for.

From Amazon with love: not quite 32GB micro SD cards

I needed more space in my tablet and phone, so I went to everyone’s favourite online merchant, Amazon, and purchased two SanDisk 32GB Class 10 micro SDHC cards.

Now, if you haven’t bought SanDisk micro SD cards lately, let me warn you now, the silk screen looks horrible. At first I thought they were counterfeit, it’s that bad. I wonder if the guys at SanDisk did some research to see how shitty they could make the silk screen and not have it appear in cell phone photos. My potato camera phone has just enough noise that it’s difficult to tell just how bad the SanDisk logo looks, but it’s awful.

My camera phone isn't the greatest, but these cards look just blurry and noisy in reality

My camera phone isn’t the greatest, but these cards look just as blurry and noisy in reality

But a bad silk screen can be overlooked if the cards themselves still function, which brings me to my next point:

[38853.623229] scsi 9:0:0:0: Direct-Access     Generic- SD/MMC           1.00 PQ: 0 ANSI: 0 CCS
[38854.311664] sd 9:0:0:0: [sdb] 60367872 512-byte logical blocks: (30.9 GB/28.7 GiB)
[38854.312801] sd 9:0:0:0: [sdb] Write Protect is off
[38854.312812] sd 9:0:0:0: [sdb] Mode Sense: 03 00 00 00
[38854.313898] sd 9:0:0:0: [sdb] No Caching mode page found
[38854.313917] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[38854.329950]  sdb: sdb1
[38854.333772] sd 9:0:0:0: [sdb] Attached SCSI removable disk

Disk /dev/sdb: 28.8 GiB, 30908350464 bytes, 60367872 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1        8192 60367871 60359680 28.8G  c W95 FAT32 (LBA)

28.7GiB?! What the hell? I know storage manufacturers have redefined a gigabyte to be 1,000,000,000 bytes (1 billion bytes) instead of 1,073,741,824 bytes (1024^3) but this is some next level math happening here.

For comparison, here is a Transcend 32GB Class 10 micro SDHC card:

[38782.491351] scsi 7:0:0:0: Direct-Access     Generic- SD/MMC           1.00 PQ: 0 ANSI: 0 CCS
[38783.265974] sd 7:0:0:0: [sdb] 61831168 512-byte logical blocks: (31.6 GB/29.4 GiB)
[38783.267091] sd 7:0:0:0: [sdb] Write Protect is off
[38783.267099] sd 7:0:0:0: [sdb] Mode Sense: 03 00 00 00
[38783.268192] sd 7:0:0:0: [sdb] No Caching mode page found
[38783.268197] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[38783.273707]  sdb: sdb1
[38783.277183] sd 7:0:0:0: [sdb] Attached SCSI removable disk

Disk /dev/sdb: 29.5 GiB, 31657558016 bytes, 61831168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000db221

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1        2048 61831167 61829120 29.5G  c W95 FAT32 (LBA)

29.4GiB is a lot closer to what we expect from a 32GB (32,000,000,000 byte) card. The precise number is 29.80232GiB, but okay, it’s not much less.

So the SanDisk card is a about 700MB smaller than the Transcend. That alone was enough to make me apply for an RMA…

but-wait-theres-myrrh

A Class 10 SD card is defined as having at least 10MB/s sequential write performance. Since we already know these cards over-advertise their capacity, what is the performance like?

Card 1

Card 1

Card 1 makes it past the Class 10 specification, averaging a sequential write speed of 11.7MB/s using H2testw with a fresh FAT filesystem. Not great, but at least it’s within specifications.

Card 2

Card 2

Card 2 however, barely makes it past Class 4. With an average write speed of only 5.55MB/s, this card is just abysmal.

What about read speeds? Well, Amazon claims up to 48MB/s (megabytes per second) reading speed:

sandisk_48MBs_read

Card 1 managed a semi-respectable 18.2MB/s read speed. Card 2 however, was just awful and couldn’t give more than 7.2MB/s read speed.

Verdict:
Back to Amazon you go, shitty SanDisk SD cards. Next time I am going to buy Transcend, and from now on I’ll be testing any cards I buy to make sure they:
A) Are actually the advertised capacity
B) Meet the minimum specifications for their advertised Class
C) Can be read in all my devices, unlike these cards which wouldn’t read at all in my MacBook Pro

Testing method:
Both cards were tested in a Dell Venue 8 Pro running Windows 8.1.

I would have liked to have tested their raw speed using dd in Linux, but unfortunately my MacBook Pro would not read the cards at all! dmesg was full of SD sector and command errors when I put the cards in the reader.

Edit (26.07.2015): I bought Transcend cards from Amazon, and again they were not true 32GB cards. My old Transcend card was made in Taiwan, whereas all the “32GB” cards I have gotten from Amazon this year are made in China.

It makes me wonder if SanDisk and Transcend have licensed an ODM to produce cards for them, and then stuck their silk screen on the cards. I suspect this because both the SanDisk and Transcend cards I received identified themselves as SL32G cards, whereas my Taiwan manufactured Transcend identifies as USD.

For the time being, I have ceased to purchase 32GB microSDHC cards from Amazon until I can find a brand that sells a card that is actually 32GB.

From SATURN with love: a bad USB power supply

Recently I needed another USB charger for my devices. I went to Saturn and picked up this Innergie adapter, which is rated for 10W (2A at 5V).

innergie_front

innergie_rear

But, it doesn’t work. Sure, it can put out 2.5A, if you short it. I managed to get 0.6A out of it charging a 24Wh lithium-polymer battery, but at that current the voltage drops to 4.5V, which is outside of the USB specification and will not charge a mobile phone or tablet.

innergie_fluke_voltage_current

When I did plug in a mobile phone, it drew about 0.3A (1.5W) but the charging light did not turn on. The Innergie cannot even hold up at 1.5W, it dropped to 4.75V!

I lost the receipt, otherwise I would return it for my money back. So into the junk pile this goes… Lesson learned, next time save the receipt!

Your company is using Twitter wrong

It’s 2014; if your company sells users a service and doesn’t already have a social media presence then you should stop reading this and fix that. Right now.

Okay, now you have a social media team. However, I would bet that they aren’t helping your brand image when the sh*t hits the fan. I’m going to cite examples of bad and good responses from companies I follow on Twitter:

Recently WIND Mobile (@WINDmobile) suffered from a service interruption on their network. Here’s how they responded to annoyed customers:

WIND Mobile Twitter responses to annoyed users during the service disruption

WIND Mobile Twitter responses to annoyed users during the service disruption

I’m not sure if this was a Twitter bot posting replies to users, or a CSR who just really likes to copy and paste things. Either way, it provides users with no information whatsoever on the cause of the disruption (ie., why they’re annoyed and Tweeting at WIND Mobile) and it reeks of a form letter beginning with “Dear VALUED CUSTOMER,”

Users want information on a disruption, they don’t want to feel like a wallet that is forced to give your company money every month and only gets form letters in response. The more information you supply to users, the happier they will be. Selfnet e.V. (@Selfnet_eV) is an ISP at a German university. Their twitter feed is perhaps a little more casual than that of a large corporation, but I think it still provides a good example of what kind of feedback a company should be providing users:

Selfnet eV Twitter response to a service disruption

Selfnet eV Twitter response to a service disruption

Teksavvy (@TeksavvyCSR) suffered from a network disruption, and here’s how they dealt with it:

Teksavvy Twitter response to an outage

Teksavvy Twitter response to a service disruption

Notice the difference between the response from Teksavvy and Selfnet e.V., and the response from WINDmobile? Teksavvy made a limited number of replies to people, and posted a link to their website where users could see status updates on the outage. As another user noted, their customer service representatives were also posting updates to Reddit on the progress being made toward restoring service:

UPDATE. Looks like a MUX card issue at 151. Rogers just tried to re-seat it but no luck. They are currently working on alternatives.

My point here isn’t to bash WINDmobile. Service providers have a tough job, users have an expectation that the availability of the network will be 100% and when things aren’t working they quickly become annoyed. But, there is a huge difference between giving users canned responses and no details about an outage or the progress toward restoring service, and actively working to update users, even if doing so doesn’t shorten the time to resolution.

If you notice that your company is giving users canned responses, it’s time to re-think how you are approaching social media platforms. Users come to platforms like Twitter and Facebook to get answers, if they want canned responses they’ll call your customer support line and listen to the phone menu and hold messages that endlessly repeat “Due to higher than normal call volume, all customer service representatives are currently busy. Your call is important to us, please continue to hold.”

I would like to clarify that I am not currently a customer of any of the companies mentioned above. I was formally a customer of Teksavvy and WINDmobile. I am no longer a customer because I moved out of their service region.