Wednesday, November 28, 2012

Humble Bundle Data - Android 4

I did it again.  This time, the bundle was a games bundle (The Humble Bundle for Android 4), which is Humble's normal fare.  Also this time, I was able to collect data from the very beginning.  There was a period of 7 hours where my server got turned off and no data was collected, but that time slot was in the middle of the data collection with no major events occurring near it.  I patched it up with a little bit of linear interpolation.  It shows up on the Marginal Average Price as a plateau, but is otherwise unremarkable.


One thing about this graph that I was not able to capture last time is that the average price was actually highest at the beginning, before sinking to a low, and then slowly rising.  The "event" in the middle is when games from the previous Android bundle were added as an additional bonus.  Interestingly, I was able to purchase at the point of lowest average price though I did beat it by making my purchase price a nice round number, thereby contributing to the bounce-back of the average price from its initial fall.

The initial fall is probably due to a bunch of people paying $0, or $1 immediately just to get the basic games and/or Steam keys.





The ramp-up of initial purchases is quite high, as you can see.

In this case at least, the initial "bump" was much more significant than the subsequent "blip" produced by adding more bonus content.  A lot of people already have the previous bundle games, so this is somewhat expected.



Here again is the raw data, for those who might be interested:

Thursday, November 01, 2012

Humble Bundle Data - Results

In my previous post, I said I was going to finish collecting data for the rest of the Humble eBook Bundle at humblebundle.com and post the results here.  

The results are in.  This was probably the most successful Humble Bundle to date, based on the ending average price.  Let's look at the data for the Average Price over Time.

Average Price over Time
You may notice that bump in the middle of the graph.  That is the point in time when several PDF comic books were added to the Humble eBook Bundle.  This had the effect of pushing a lot of fence-sitters over the edge to purchase the bundle, as well as increase the margin by which purchasers were willing to "beat" the average price.

Total Purchases over Time
You may notice that the Total Purchases graph has some missing data at the beginning.  This is because initially I only collected the Average Price (and I was over an hour late in starting that collection).  The bundle started at 10:00 AM PDT; I started recording the average price at 11:30 AM, and I started collecting the total number of purchases at 5:30 PM. 

Total Revenue over Time
With those two numbers, I was able to calculate the total revenue collected.  Later, I added direct collection of this figure.

As you can see from the graph.  At no point did the average price go down much at all (there were a few times it went down a penny or two).  This answers the question I was initially asking, at least for this bundle:  should I wait for a lower price?  The answer is of course emphatically no.  If I was going to beat the average price, the time to do it was as early as possible.

I do seem to recall bundle average prices going down in past bundles, but this may have been due to abuse by people pumping the system for free and/or very cheap Steam keys.  That practice seems to have been cracked down upon with CAPTCHAs (remember: only use your scripting powers for good), and the momentum of the price and interest in the bundle seems to have been maintained by the addition of the bonus content.  I would expect similar measures in the future.

As it turned out, I when the extra bonus content was added, it was also added to the account of everyone who had previously purchased the bundle, whether they beat the average or not, so I ended up with all but the initial two bonus books.

These marginal rates were all calculated from the previous values.  It would be interesting to have better data at the beginning of the data set.  I'm curious to know how the profile of the initial wave compares to the second bump.  You can't really tell with the first seven hours missing, unfortunately.  My suspicion is that the secondary bump was sharper than the initial wave, mostly because I believe that the secondary wave was largely fence-sitters who had not bought because they thought the price was too high for the content offered.  When more content was offered (and considering the content), they immediately jumped on it.

Marginal Purchases (every 15 minutes)

Marginal Revenue (every 15 minutes)

Marginal Average Price (every 15 minutes)
It should be noted that the website data is far from perfect.  The totals sometimes went down from one reading to the next, and after the bundle had ended, the numbers were still in flux for several hours, but at the scale of these graphs, the fluctuations are insignificant.

If you would like to look at my raw data, I will provide it for download in its unprocessed CSV format generated by my script, as well as the Excel spreadsheet that I used to calculate the missing values and create these fancy graphs.

Here is the data:
Here is the final form of the script I used to create this data:
Enjoy!

Wednesday, October 10, 2012

Humble Bundle Data - Collection

Today was the launch of the Humble eBook Bundle.  The way that Humble Bundles work is that the site lists a collection of downloadable items (traditionally games, but lately they have branched out into music, and now books).  You can pay any price (including free, if you choose) for the bundle, and it's yours.  You can even tweak how much of your purchase price goes (directly) to the content creators, the Humble Bundle site, and a few charities.

Well, not all of the bundle is yours at any price.  There are bonus items, which are typically the best of the bunch.  To get these items, you are required to beat the average price of the bundle so far. 


Well, I like bundles, and I like e-books, so I decided to get the bundle.  But I wasn't prepared to pay the price at the time to get the two bonus books.  They looked good, but the average price was then just over $9, and I thought that if I was going to spend that much money on an e-book, did I really want the ones offered?  I would be willing to bite--but only if the price went down.  Humble Bundles typically hover around the $5-7 range for unlocking the bonus content, which for my money is a better impulse purchase for content I didn't get to pick out myself.

Funny thing about having to beat the average price:  a lot of people do it, and that will have a tendency to create a constant upward trend in the price to unlock the bonus content.  It got me wondering, though.  I fully expected the price to trend up for the first couple of days, but then does it dip down again?  My gut told me that there would be an initial spike, a dip, and then a spike at the end of the two-week window when the bundle was offered.

But I couldn't find any data on the subject.  There are several websites where data on the various Humble Bundles can be found, but a graph of average price over time was nowhere to be found.  "Well," I thought, "I'll make one then."

So I did.  Or rather, am.

My data collected at the end of day 1, showing average price and total purchases over time.
I whipped up a quick script on my Linux box that uses links -dump to grab a text-only version of the web page.  It then successively greps this page for the data I'm after, and appends a line of data to a CSV file.  Initially, I only collected the timestamp and average price, but I decided that the total quantity sold at that time would also be a valuable and relevant piece of data.

I added a line in my crontab file to run the script every 15 mninutes (which is plenty of granularity over two weeks, and also very reasonable to the remote server), and viola:  data!

It will be interesting to see how this little experiment turns out.  It may be that the price will almost always trend upward.  I know that with certain past gaming bundles, games from previous bundles were added to the current bundle as bonus items in order to motivate people to pay the higher price and keep the average up.  I suspect that these items were added at times when the average price was dipping in order to bring it back up.  I don't know that there are any books in reserve for this bundle, so that may not be an option.

If it does happen, that will be interesting to watch in the data.

Side note:
  • Another bundle site of note that just got started specifically for e-books is StoryBundle.  StoryBundle is slightly different, in that they set a minimum price ($1), and the bonus books can be unlocked at a constant price ($7). 

I will post an update to this blog when the bundle is over with the full results of the data I collect. 

Update: Here are the results.
Enjoy!

Wednesday, August 22, 2012

Upgrading to the Galaxy S III for free (basically)

Last March for my birthday I shelled out around $150 for the latest and greatest cell phone available on my carrier: the Motorola Atrix 4G.  This time around, I wanted to get the new latest and greatest: the Samsung Galaxy S III, but I didn't want to spend any money on it.

Here's how I pulled it off (largely adapted from this Lifehacker post):


First of all, I have kept my Atrix in immaculate condition.  I immediately bought a hard-shell case (Incipio Feather) and screen covers.  I have replaced the screen cover several times, and the case has suffered a few falls and been cracked, and replaced, but the phone itself is in perfect condition.

There are two main markets for off-contract phones.  One is people whose phones break mid-contract, or who want an early upgrade without renewing their contract.  The second is pre-paid customers, or customers of MVNOs that don't get contract subsidies, and therefore don't pay the monthly "subsidy tax" that we on-contract folks pay (and continue to pay, even if our contract expires).  The second group of phone buyers require the phones to be unlocked in order to use them.

For reasons beyond my fathoming, cell phone carriers are allowed to sell you a device, but still retain control over it.  They have disabled its ability to work on any carrier other than themselves.  Of course, they will allow you to redeem this ability for a fee, and there are also websites out there that will sell you the unlock code for your device.  I obtained an unlock code for my Atrix online for $15.  I may have been able to ask AT&T to unlock it for free once my contract was up, but my contract didn't expire for another few months.  They allow you to renew early, so that you never have a good opportunity to ditch them for another company.


The first step was to get the best price for the Galaxy S III.  I checked several online retailers, and also the ads from different local stores (many can be found online here).  The best price I found was at Radio Shack.  They advertised it for $150, and also featured a deal where they would give you at least $30 for any trade-in phone in good condition.  I traded in an ancient Nokia Qwest phone that had been Elizabeth's before we added her to my family plan on AT&T.  After tax and the $30 credit, the total for the phone was  $134.24.


AT&T, of course, sticks their fork in the offering.  They now charge $36 in what is known as a "because-we-can" upgrade fee.

So, with the $134.24 Galaxy S III, $15 unlock code and $36 upgrade fee, I was out $186 for the new phone.  Now to get it back.  As I mentioned before, unlocking a phone makes it more valuable.  Keeping it covered and cased makes it more valuable.  It also helps to keep the original box.  I also happened to have bought a car dock specifically for this phone.  I did so after going through several generic docks, and coming to the conclusion that having one that was convenient and easy to use would be worth the money.

I created a thorough post listing my phone and its accessories for $180 on craigslist (I used craigslist rather than e-bay because there are no transaction fees or shipping, and I was not in a hurry).  I included a detailed description of the condition of the phone, and which accessories were included.  I also posted clear photos of each item, so that there would be no doubt as to what they were getting.  I also mentioned that I had upgraded, so that buyers would know that there was nothing wrong with the phone, other than being out-dated.

It took a week or so from when I listed it, and I had several nibbles from people who wanted to pay much less, or who eventually bugged out, even though I offered to lower the price.  Today, though, I got a buyer who was interested.  We met, and after booting up the phone with her card, she paid full price.

So, I pulled it off (basically).  Here's to next time.

Sunday, April 29, 2012

Rooting my Nook Simple Touch

Note: This post is mostly about my technical experience of rooting the Nook.  I'm planning to write a less technical post about actually having and using the device on my main blog sometime soon.

I recently got a Nook Simple Touch.  This device is running on Android 2.1 (Eclair) under the covers, and I wasted no time getting control of my device so that I could install my own apps and customize to my heart's content.
 First, I backed up the internal memory.  You should always back things up if you plan to mess with their innards in ways that could turn them into a brick.  In fact, that's exactly what I ended up doing.  Read on.

Here's a guide to backing up your Nook Simple Touch.

I ended up doing a Linux dd to write the nookie image to the MicroSD card, because I kept getting an error whenever I tried to do it from Windows 7 or Windows 8 preview, regardless of which tool I was using. 

Also of note:  the disk images produced by this backup method are 1.82 GB in size.  While you're not actively using the backup images, I recommend compressing them, since they're mostly empty space.  I was able to get the factory fresh image down to 237 MB by Zipping it up with 7-Zip.  I also tried the 7z format instead of ZIP, which got it down to 207 MB, but I just got 25 GB of free SkyDrive space to play with, and the compression took a lot longer to process.  As you add files to the Nook, the compressed size of the images will go up.

I'm going to say this again: BACK UP!  And back up your backup!

I had created my initial backup, and rooted it following this guide.  I had to track down my own copy of uRamdisk_rooted, since the link they provide is dead.  This method only gets you root, however; it doesn't install the Market or anything else, so this wasn't what I wanted. 

I then found this thread, which was exactly what I had been looking for.  I was at the step where it says to follow the on-screen instructions.  The instructions said to wait until the screen flashed black, remove the SD card, and reboot.  I did that, or at least, I did what I thought that meant.  It was really quick--too quick:  the screen immediately flashed black and back to white, and then it sat there for a while doing nothing.  This looked like a normal screen refresh, but was that it?  Spoiler: no. 

I had just bricked my shiny new Nook. 

Not to worry!  I had a backup.  I then proceeded to restore it to its factory-fresh state.  I booted the Nook to the nookie-flashed SD card, fired up Roadkil's Disk Image, and pointed it at the backup file and the Nook's drive, and clicked "Start".  All appeared to be going smoothly, until I realized that I was overwriting my only good backup with an image of a corrupted system!

Thankfully, that file was sitting in my Dropbox folder at the time, and had been there long enough for its 1.82 GB to have uploaded to the cloud.  As fast as I could, I moved the file out of my Dropbox folder, and then went online and restored the deleted file, and re-downloaded it.  I then copied it to my Linux box, and used that to copy the image back to the device using the dd command (since, as I mentioned, hitting "Start" with the correct settings in Windows only resulted in an error.).  (Actually, since my current Linux box only has USB 1.1, It was faster to copy the file to the media PC, boot that to a Linux LiveCD, and dd the image from that environment.)

After that, I re-initialized the device, updated its firmware from Barnes & Noble, and correctly followed the instructions to root it, creating several backup images along the way.  One annoying thing about creating backups is that in order to do so, you need to boot from the nookie-imaged SD card (which is different from the touchnooter image used to root it, and also different from the way the Nook sets up files on it during normal operation).  I only have three MicroSD cards: two of them are in Liz and my phones (and are therefore in use), and the remaining one is for the Nook.  There are no extras, so whenever I need to make a backup, I have to somehow preserve what's on the card (if it's valuable), flash it with the nookie image, create the backup, and then restore it to a semblance of its previous state.  I've considered getting another microSD card.  I've got my eye on a 32GB one for my phone, thus freeing up the current 8GB card and giving me lots more space for pictures, video, and music.  This has the disadvantage of being unnecessary in the strict sense, and possibly more trouble than its worth at the moment since I would need to wait for it to arrive, and so I'll still need to use the old method "this time".  That, and they keep getting cheaper, so I want to hold off.