Install this theme
Silly article about AT&T’s data prices

Slashdot ran an article today, titled “AT&T Caps Netflix Streaming Costs At $68K/Yr”. The title immediately reaches for net neutrality fiends, but really, they’re not capping anything.

The summary says that streaming Netflix for 24 hours straight will consume 2.81GB. I’m not about to dispute that. However, it also says that can result in charges as large as $68,376. In my last post, I figured that the cost per megabyte on the 300MB plan is $0.067, and 2810 megabytes times $0.067 per megabyte times 365 days is pretty close to their figure. But there’s a third variable they forgot.

How stupid does someone have to be to pay their cell phone bill 12 months in a row, each for over $5000, and never think to upgrade to the $30 plan for a rate of $0.01 per megabyte? Forgetting stupidity, if you’re anyone I know, your cell phone would be shut off long before then because you don’t even have enough money, so you’d end your experiment in big numbers. Assuming you started the year on the $30 plan, your end result would actually be 2810 megabytes times $0.01 per megabyte times 365 days, or $10,256.50.

To ice the cake, the summary proposes an analogy, that you walk into a gym and are told that your bill will be between $360 and $68,376. This analogy doesn’t hold true at all, because if I walk into an AT&T store and kick and scream all day, I’ll never be offered a $30/month unlimited plan. They haven’t offered those in almost two years. Please quit comparing to it. You don’t see anyone saying “Ivy Bridge processors are so much faster than an i386!”

Mobile data is expensive, but not nearly as expensive as some crazy with a calculator would have you believe. If you want to stream Netflix 24/7/365, do it on your home internet at fixed rates.

You guys will get mad at anything, won’t you?

AT&T announced new data plans for smartphones. You can read the story on MacRumors.

The new data plans are:

  • 250MB for $15 (iPad only, $0.06 / MB)
  • 300MB for $20 ($0.067 / MB)
  • 3GB for $30 ($0.01 / MB)
  • 5GB for $50, plus tethering ($0.01 / MB)

The old plans were:

  • 200MB for $15 ($0.075 / MB)
  • 250MB for $15 (iPad only, $0.06 / MB)
  • 2GB for $25 ($0.0125 / MB)

Reading the discussion threads on MacRumors, you would think that AT&T just announced they’re planning to double data prices, not institute price reductions across the board. The cheapest data previously was $12.50 per gigabyte ($22.50 if you wanted tethering), and it is now $10.00 per gigabyte with free tethering on the 5GB plan.

If you have AT&T right now and don’t want to switch from your current plan, then don’t, and while you’re at it, go outside and quit complaining. Don’t even try to compare this to the $30 unlimited plan they haven’t offered for nearly two years.

popchartlab:

Santa explained via Venn Diagram.
(via Stephen Wildish)

popchartlab:

Santa explained via Venn Diagram.

(via Stephen Wildish)

Clean install of Ruby on Rails on Mac OS X

I’m going to buy a Mac Mini today, and this is the process I’m going to follow to make a clean install of Ruby on Rails. I’ll refine these instructions as I walk through them.

  1. Install Xcode from the Mac App Store. If you have Lion, it’s a free download. Xcode comes with all of the code compiling utilities that allow us to build our rubies (“rubies” are a specific version of ruby) and gems (ruby frameworks). It can also be installed from Apple Developer Connection, but that’s the hard way. If you download it from the Mac App Store, you’ve actually only downloaded the installer, so go ahead and install it.
  2. Open Terminal.app, and visit Begin Rescue End and copy their one-liner to install RVM, the Ruby Version Manager. Pasting this line into a terminal will run RVM’s installer.
  3. Read the instructions on your screen. There will be a line of “shell script” you need. Copy this line (just as you would in any Mac app), and then type open -a TextEdit .bash_profile , paste it, and save.
  4. Close your terminal and re-open it to make sure your environment is up-to-date.
  5. Type time rvm install 1.9.3 --with-gcc=clang to install Ruby 1.9.3, the latest and greatest version of Ruby. I like to use the time command to tell me how long it took, but you don’t have to.
  6. You don’t usually need the with-gcc argument, but at the time of this writing, the 1.9.3 packaging is behaving weird on Lion. Normally, you could just do rvm install 1.9.2. That ruby is still rather popular, so you should install that now.
  7. Type rvm use 1.9.3 --default to make Ruby 1.9.3 your default ruby, and the one that will be used when you type ruby .
  8. Type gem install bundler . A lot of tutorials will say to type ‘sudo before ‘gem. If you do this, the gem will be installed for use with your “system ruby”, which you do not want to use, and won’t be visible to your RVM ruby.
  9. Type gem install rails. Rails is actually a gem, just another framework on Ruby.
  10. Gem is pretty smart about handling dependencies, and right now you’re set to start Rails development. There are a few more gems that aren’t explicit dependencies of Rails, but that you’ll still need. To install the remaining essential gems, start a new project. rails new my_awesome_project; cd my_awesome_project. The last command Rails runs when making a new project is bundle install, which is the command to install all the gems your project requires. You’re now completely installed.
  11. Enjoy! You should now follow Michael Hartl’s Rails Tutorial and find web development enjoyable again.
XML is like violence. It doesn’t solve anything and shouldn’t be used.
Inspired by: “XML is like violence. If it doesn’t solve your problem, you’re not using enough of it.”
Reorganizing and installing hardwood flooring.

Reorganizing and installing hardwood flooring.

Loki is a fanboi.

Loki is a fanboi.

Fixing World of WarCraft’s legacy set item storage

With every World of WarCraft expansion, they introduce new storage bags that allow characters to store more items. These are generally two or four slots bigger, and if a character has six bank slots and four person slots, that’s 20 or 40 more items. But with the introduction of Void Storage, it seems like they’re looking for ways to save on database storage. I say this because when you store an item in Void Storage, they remove any enchantments and customization, so it’s clearly being stored as just an item ID, and the actual record for that specific item GUID is being removed from the database.

I was looking at Void Storage on the public test realms, and although it’s a great new feature, it doesn’t really serve me as a legacy tier packrat. I like to run old raids to collect my old item tiers, just for the sake of looking cool. With transmogrification being introduced, this is obviously intended behavior. So, where should we store our stuff?

I think that a feature for storing old sets should be allowed. It becomes unlocked when you have a single item from a set. You can store that item in there, Void Storage style. There’s a database table for the sets:

CREATE TABLE EQUIPMENT_SET (
  set_id int PRIMARY_KEY,
  name varchar2 NOT NULL,
  head_id int,
  shoulder_id int,
  chest_id int,
  wrist_id int,
  hand_id int,
  waist_id int,
  leg_id int,
  foot_id int,
  weapon_id int,
  weapon2_id int,
  ranged_id int,
  ring1_id int,
  ring2_id int,
  trinket1_id int,
  trinket2_id int
);

Also, a table for a character possessing a set:

CREATE TABLE CHARACTER_SET_STORAGE (
  character_id int NOT NULL,
  set_id int NOT NULL,
  head int,
  shoulder int,
  chest int,
  wrist int,
  hand int,
  waist int,
  leg int,
  foot int,
  weapon int,
  weapon2 int,
  ranged int,
  ring1 int,
  ring2 int,
  trinket1 int,
  trinket2 int
);

This allows that there’s no storage for characters who don’t have any items from a set, like my paladin doesn’t have a piece of tier 3 Redemption Armor. However, if I have a few piece of Judgement Armor, it’ll look like this:

INSERT INTO EQUIPMENT_SET (set_id, name,              head_id, shoulder_id, chest_id, wrist_id, hand_id, waist_id, leg_id, foot_id, weapon_id, weapon2_id, ranged_id, ring1_id, ring2_id, trinket1_id, trinket2_id)
                   VALUES (217,    "Judgement Armor", 16955,   16953,       16958,    16951,    16956,   16952,    16954,  16957,   0,         0,          0,         0,        0,        0,           0);
INSERT INTO CHARACTER_SET_STORAGE (character_id, set_id, head, shoulder, chest, wrist, hand, waist, leg, foot, weapon, weapon2, ranged, ring1, ring2, trinket1, trinket2)
                           VALUES (1234567890,   217,    1,    1,        1,     1,     0,    0,     0,   0,    0,      0,       0,      0,     0,     0,        0);

So, since item sets are already stored in the database (they have to be for set bonuses), this only really adds one table. I’m sure there’s already extensive triggering when an item is looted, so checking if the set storage should be unlocked won’t be significantly more processing, or perhaps that should be processed when a character visits the set storage vendor. But, this would allow more serious players to store all 12 tiers of their gear plus their millions of dungeon and PvP sets, and be an added reward for those who farmed the real items instead of the lookalikes for Transmogrification.

Re-launching my blog

Amazon EC2 has hosted my blog for the past year or so. It’s been an enjoyable experience, and I liked having my own virtual private server in case I needed to do some Linuxy stuff, but it cost $17 per month and I wasn’t really interested in paying for that anymore. It looks like Tumblr is pretty simple to use, and bringing my domain name over here wasn’t too much of a pain, so that’s where I am now.