Thursday, April 18, 2024

My Adventures in Replacing the Left Joystick on a PS5 DualSense Controller

I don't recommend this for a beginner at soldering, and yes, it involves soldering.  And yes, I'm a beginner.

I didn't think it required soldering to install when I ordered the part.  I thought maybe it snapped in or something.  Most controller analog joystick modules come with a bit of board and a ribbon cable.  You plug it in, screw or snap it in, and you're done.  What really fooled me was that this came with tools to disassemble the PS5 controller: a screwdriver, a couple of pry tools, and hefty tweezers.  

Once I realized I would need to solder, I scoured the listing page for any mention of it, and at the bottom of the description, it says, "The PS5 controller analog stick replacement to replace need to weld".  So there you go.

The analog stick kit I bought [Link]
 

As kits go, this is a good one.  It comes with four joystick modules: three more than I needed, but there were similarly-priced kits with 8 or a dozen modules.  Again, I only needed one and the tools were nice to have, though I already had what I needed to take apart a DualSense, since a few months earlier I had replaced the battery.

Anyway, I get the part, I open up the controller, and I find out it's soldered to the board.  No problem, I think, soldering is perfectly doable.

The joystick modules

Each joystick has 14 solder points, not counting the red and black wires in the middle that go to the haptic motors

I do some Google searching, and read some articles. I open up YouTube and watch some videos.  Everyone says that soldering is great and I should try it.  I should try it!  It's definitely a skill that I would like to have, and it'd be great to have some equipment for it... for future tinkering.

The soldering kit I bought [Link]
 

So I fire up Amazon and buy this kit.  It's cheap, but not the cheapest.  It comes with most of the essentials, and even includes a multimeter so you can verify voltages across your welds (not that that will be helpful for this project, but again... future).

I also posted about my project on social media and did some more reading, and one thing people recommend is Flux.  I watch some videos about flux specifically, and indeed it seems to be very important to dissolve the oxidation layer on the surfaces of metals so they can actually mix. So, I additionally order a tube of the stuff.  The kit, as it turns out, does come with some flux, but it's very gelatinous, stored in an open-ended tiny box.  What I ordered comes in a syringe for easy and precise application.  I was glad that I got this.  I could have managed without it by scooping it on from the little box using tweezers, but it was pretty convenient to use, and not very expensive.

Flux tube [Link]

Finally, everything arrives (I used next-day shipping, so it was pretty fast).  I set myself up outdoors in the carport for good ventilation, plug in my shiny new soldering iron, and settle in to work.  The first thing to come off are those wires for the haptic motors.  They're definitely in the way of accessing all of the other welds, and removing all four wires allows me to work on just the board, without the rest of the controller tagging along.

My soldering setup

I touch my soldering iron to the welds, and they melt like butter.  I take the wires out, and the board is free.  That was so easy.  Now for those welds that hold the joystick module in place.  I liberally apply the flux to all of the welds.  

I touch my soldering iron to one of them, and wait.  And wait.  Nothing is happening.  The flux is vaporizing, but the metal is not melting.  At all.  I turn my soldering iron up to its maximum setting, 450 degrees.  Something is happening, but not much.  I use the solder wick to soak up the melted metal... barely.  The YouTube videos I had watched of people removing this specific component had used a heat gun and melted another metal onto the solder welds.  I don't have a heat gun, but I try melting some of my kit solder onto the welds.  It helps, a little.  I am able to soak up the spare solder with the solder wick, but it is hardly making a difference, especially down below the surface of the board, and after a while I can see that I'm not making much progress.

My progress after the first day

I had read something about Sony using non-lead solder for these components, so I once again did some searching around.  It turns out that for a job like this, you need to melt in a special alloy that lowers the melting point of the existing solder.  

Great, yet another thing to buy.  Would this end up costing more than if I had simply bought a new controller?  I don't want to do the math yet, but it seems to be approaching that point.  It's a sunk cost, though, and the only way out is through.

 

Removal Alloy [Link]

After more research, I bought some removal alloy.  Was this the last step?  Would I be able to melt away enough to remove all 14 pins at once?  Would I need to use a heat gun, or get some sort of mechanism to clip the board in place?  Time would tell.  Not much time, though, thanks to overnight shipping.

The next day, removal alloy in hand, I jury-rigged a binder clip to a semi-flattened aluminum can to hold the board in place.  This freed my hands so that I had better control over what I was doing, and my fingers could also be further away from the hot tip of the soldering iron.

Board clipped in place, I once again applied the flux, then melted the removal alloy onto the contacts.  It melted readily, and I was able to use the spring-loaded suction tool to get a significant amount of solder out of most of the pins.  There are four big, hefty-looking pins that look like they are for structure rather than connectivity, and these were more stubborn.

It took a few applications of the flux, the alloy, and wicking, but I could see I was making progress.  The smaller pins I could get to wiggle, but the larger structural ones took a bit more work.  I went and got a vice grip to assist in pulling the component free.  Finally I got enough of the solder off that I was able to pull it out.

Yanked out like a tooth.  Not that I've ever used vice grips on a tooth.

The site was pretty gunky with flux, and I wanted to make sure it was clean, and also free of the residue of the removal alloy.  A quick raid in my wife's our medical supplies yielded some 91% isopropyl alcohol and q-tip cotton swabs.  The video I had watched recommended 99%, but I was not about to buy yet another thing if I could avoid it.  The flux gunk and metal residue came off easily enough with a few alcohol soaked q-tips.

All cleaned up

During the desoldering process, I had made a mistake that would later come to bite me:  I nicked the corner of one of the plastic pieces sticking out of the board, and it melted a little bit (the black piece in the center of the right edge in the photo above).

Next I put the joystick component in place, making sure the pins all came through (one of them was bent down, so I gently unbent it with pliers.  First I welded two of the structural pins diagonal from one another, and in doing so I found out why they had been so difficult to desolder:  they are indeed structural, and in heating them up to the melting point of solder, they take quite a bit longer than the other pins.  This is because they are connected to all the other structural metal in the component, which acts as a big heat sink.  I think it was less than 15 seconds, but it was significantly longer than any of the other pins, which heated up to the point of melting my solder in two to three seconds.

My beautiful solder welds

The joystick component in place

Nubs on, reassembling the controller.

Melted ribbon cable plug, fixed enough to work.

Here is where I discovered the gravity of my melting mistake earlier.  This is where one of the ribbon cables plugs in.  My nick with the soldering iron had deformed the opening and the ribbon cable would not insert.  Thankfully, I was able to heat up the tip of the pointy pliers and bend the edge back out enough to make room for the ribbon to go in.  Crisis averted.

Haptic wires re-soldered, board screwed down, and battery compartment in.

With the controller re-assembled, it was time for the testing!  I powered on the PlayStation 5 using the controller, opened Assassin's Creed Mirage, and observed the stick movement, or rather, the lack of controller stick drift.  It worked!  My reticle is no longer constantly pulled to the left, and Basim doesn't dive to the left out of the bush he's squatting in to avoid the guards he's about to murder (seriously, he kills a lot of guards in this game).


The cursor is not moving when I don't move the joystick (yay!)  It also does move when I move it (double yay!)
 

Basim is now free to move about Baghdad without randomly veering to the left.

So, what have we learned?  How to solder, and various pitfalls thereof.  

I shied away from adding up the cost earlier, but I would like to know how it came out:

  • Joystick kit: 11.99
  • Soldering iron kit: 17.99
  • Extra flux tube: 7.99
  • Removal alloy: 14.95
    • Total price of components: $52.92 + tax
  • Doing it yourself: priceless?

Was it worth spending all of that money, and all of that struggle, and potentially being exposed to dangerous metals and fumes to get a working PS5 controller?

I mean, I could have bought a new DualSense controller for $69 MSRP (less, if it's on sale), and if you include the replacement battery I bought for it a few months ago, if I had just bought a new controller instead, I would have spent the $69 instead of the $67.04 I spent replacing both the battery and the joystick component.  It wasn't drifting that bad in February, at least not so consistently as recently.

But it's not like I got nothing out of the deal.  The next soldering I do I basically have everything I need (except maybe a heat gun--and those heat shield strips to go with it...).  I just don't know when that'll be.  I've made it to the ripe old age of 43 without soldering anything, who knows when the occasion will arise again?  Of course, now I'll be looking for opportunities.

And hey, I do have three more analog stick modules for a PlayStation 5 controller.  Is your controller drifting?

Saturday, June 25, 2016

Moving on from Gentoo to Ubuntu


When I started running Linux, Gentoo was a good fit for me because I wanted to learn what was going on under the covers.  Gentoo (at least, eleven years ago) forced you to edit every config file manually, and the default install had you configuring and compiling your own kernel.

It was a great learning experience, and I'm glad I did it.

But at this point in my life, I have better things to do than to babysit weekly "emerge --avuDN world".  I let my Gentoo box get out of date, I didn't want to bother learning how to set up my own systemd services, and when some update's dependency tree decided I was switching, it stopped booting.

I was able to recover it at the time, but then this week (and I had been putting off rebooting for months) my Linux machine (frodo) took a nose dive and kernel panicked.  When I rebooted it, it was in such a state that I considered my OS installation 'totaled.'

For a while I've been running certain things off of my Linux box.  I've got a couple of RSS feeds which trigger IFTTT events, but I also have @twooshbot now, and any more than a few of hours of downtime results in missed data. (I need to add some functionality to read more tweets at startup, which will help with that.)

Anyway, on Friday evening, I found myself in the position of needing to pick and install a new distro, and fast.

A quick trip to DistroWatch, and I decided on Ubuntu.  It was dead simple, there are spoon-fed answers to almost any question online, and it's based on RedHat, which I am familiar with.

I was able to get @twooshbot back up and running that evening, and I've been slowly adding services and scripts to get back the functionality I'm used to (Dropbox, apache2, samba, vim, screen, etc.)

Anyway, I look forward to LTS support and dead simple updates.

Saturday, January 10, 2015

Gentoo is not ready for systemd

This is mostly just a rant into the aetherwebs, and it won't make a lick of sense to someone who doesn't manage a Gentoo Linux system.

You have been warned.  Move along.

Yeah, I know systemd is optional (for now) on Gentoo.  The thing is, unless you take specific steps to avoid it, it just happens to your system.  This is a bad way to introduce such a fundamental change.

Several months (a year?) ago, my emerges simply stopped working.  There were package conflicts all over the place, and I didn't have time to untangle everything and get to the bottom of it.  So, I just stopped updating.  Obviously, as a Gentoo user, I hated this.

Now, months later, I decided to build up a new system on my newly-obsoleted laptop.  It looks to me like systemd is the future, so I go that route.

Here's what doesn't work, out of the proverbial box:
  • Service configurations usually adjusted in /etc/conf.d/
  • DHCP
  • crons
  • webalizer
  • Dropbox (at least, the way I use it)
I was able to figure out how to get dhcp working via NetworkManager, and that got me to the point of a functional-ish system at boot.  That was the easy part.  Next, I transitioned what system cron jobs would fit into cron.hourly and such.

I still haven't figured out how to set up user-specific timer jobs that run on a schedule (say, every 15 minutes).  The file formats are simple enough for services and timers, but I can't get ssytemctl to recognize the files I place in ~/.local/share/systemd/user/.  In theory, though, that should all work, and it would be worth figuring out and moving forward.

It's also worth noting that the Gentoo Handbook and other documentation has thus far not been updated to support users building with systemd by default.

Here's what is flat-out broken for me, that I had working in my previous system:
  • Dropbox running in the background, launched the first time my user logs in.  Since Gentoo completely disables running anything out of /etc/init.d, I would need to write my own service file, which I'm not prepared to do.
  • Webalizer running just before the apache log gets zipped up by systemd.  This is probably as simple as specifying "run this task just before you rotate the apache log", but I don't know enough about the guts of systemd's log rotation for that.
For now, I think I'm going to revert my new system back to OpenRC.  It's the path of least pain, now that I know how to exorcise systemd from a box.  During this whole process, I got my old system's portage tree untangled.  I basically had to move the world file to a temporary location, untangle the system dependencies, depclean everything, restore the world file, and re-emerge it all. 

See, most of what my Linux system does is act as a web server, and a Dropbox client.  I have several cron jobs that rename files in Dropbox which get uploaded via IFTTT and other automated means, and sometimes these files have characters in their names that aren't valid on Windows.

Suffice to say that right now a systemd-based Gentoo system significantly fails to meet my specific needs.  If it was just a desktop workstation, and I wanted the latest version of Gnome I would probably stick with that.

Hopefully these issues will get resolved in the future.  Maybe I'll even help that to happen.  In the meantime, my main Gentoo system is dropping systemd. I have other priorities.

Saturday, June 15, 2013

Three Weeks with the Helix: My Thoughts on Windows 8 and Hardware

A couple of months ago, my laptop's charger died, and I suddenly found myself in a computer crisis.  (At the time I thought it was the battery (again--this machine has killed 2 batteries so far), hence my frantic search for a new machine, but it turned out to only be the charger--it turns out I have access another one I can use in the meantime.)  I needed a dependable machine; one that was good for every-day tasks such as browsing, e-mail, documents, and of course blogging, but also good for programming and other tweaking I like to do.

I had been keeping my eye on the market for about a year, and so I decided that then was the time (even though I knew Haswell was just around the corner--silly me).  I was very interested in Windows 8's new touchscreen features.  I tested the beta builds of Windows 8 on my laptop, and I found them to be very fast and stable, but I determined that the "Modern" interface (a.k.a. "Metro") was pretty much useless without a touchscreen.

Nevertheless, touchscreen is the future of computing interfaces, but by the same token, keyboards and mice/trackpads are also the present state of computing interfaces in Windows.  I definitely needed both, without compromise.  The Microsoft Surface Pro was too inflexible as a laptop device--the "Touch" keyboard is worthless to me, and even with the "Type" keyboard, the screen is only supported at one angle, and then only when it's on a flat, stable surface.  No, thank you.

I really liked what I saw coming out of Lenovo lately.  The Lenovo Yoga 13 looked pretty awesome (I had tried it at the store), and the Helix looked amazing, but it wasn't out in the U.S. yet--or was it?  It wasn't for sale on Lenovo's website, but I was able to find it from small sellers at Amazon and elsewhere.

After looking around for the best price at a somewhat reputable retailer (as far as I could tell) I found a site with a coupon code that was out of state (no tax), and bought it.

I was very happy with the touchscreen interface, for the apps that were available.  I found the selection of touchscreen apps barely adequate, but that situation will improve with time and consumer adoption.  There were a few kids games that Shoshana in particular loved to play, and the tablet form factor (and tent mode, and stand mode) is a great feature for kids.

In daily use, switching between touchscreen input and keyboard/trackpad input was as natural as switching between mouse/trackpad and keyboard input on a 'traditional' machine: I was able to use whatever seemed appropriate and convenient to the task at hand.  I didn't find myself using trackpad gestures, since the screen itself was a more intuitive place.  Trackpad gestures will probably be more useful to someone with Windows 8 and no touchscreen (which I don't recommend).  Similarly, I completely ignored the "hot corners" functions of Windows 8, since those are built as a way for mouse users with no touchscreen to do tasks built for a touchscreen.

Keyboard replacement (left), and base unit (right)
To make a long story short regarding my ownership of the Helix, I was sent a unit with a French AZERTY keyboard dock.  I opened a support case with the retailer, and with Lenovo.  I was sent the QUERTY keyboard part, but with no way to open up the base unit and install it (without breaking anything), I had no choice but to simply send the keyboard back to the manufacturer, and send the Helix back to the retailer.

I was issued a full refund for my troubles, so I'm not out any money, and I have gained a lot of perspective on what I value in a computer.  Here are my notes from the Helix experience:
The detachable screen form factor was pretty awesome, though I did end up taking the base with me everywhere even if I wasn't using it.
  • "Stand mode" is great for using the touchscreen at an angle on the lap or a table.
  • In laptop mode it seemed top-heavy due to the "behind-the-glass" design, but this was never a real problem.
  • The 1080p screen was simply too small for the Desktop interface at 11 inches.  This is a fault of Windows 8, not the hardware.  DPI settings are simply ignored by too many apps.  The text was too small to read comfortably. The 13" Yoga is looking pretty good in that regard.
  • The stylus was nice to have, but with a trackpad not really necessary.
  • The Windows 8 Modern UI app ecosystem is lacking.  This may improve with time. BlueStacks is too cumbersome to really use for touchscreen apps.
  • Using the mouse buttons on the bottom corners of the rocking touchpad was wonky, and never worked the way I expected.
  • The function keys F1-F12 were toggled to their auxiliary functions by default. I had to hold the function key down to get them to work as themselves.
  • The function key was located where I expected the control key to be and vice versa.
One thing that surprised me was that I didn't like the pixel density.  I have pretty good eyes, and I have always sprung for the highest resolution displays that I can get on my laptops.  I have been very put off by all of the new computers these days with 1366x768 displays.  768 vertical pixels is equivalent to those 1024x768 displays we all had with Windows 95 on our 11" 3x4 monitors.  It's worthless for multitasking, or for reading text, and especially for editing code.  It simply will not do.

I was surprised, then, that 1920x1080 pixels was too small for me to find useful.  Yes, I could see everything, but I had to concentrate to actually read it one line at a time.  This also would not do.  So no longer can I simply say "increase the pixels"; I must find the right balance between screen size and pixel density.

To that end, here are some pixel density data points I have collected:

My Dell Inspiron E1505 has:
  • 1680x1050 at 15.4" 16x10 = 128.645 ppi
  • Equivalent size at 1080p 16x9 128.6 ppi would be 17.1"
Lenovo Yoga 13 has:
  • 1600x900 at 13.3" 16x9 = 138.0 ppi
  • Very similar to my E1505, and quite useable
Lenovo Helix has:
  • 1080p at 11.6" 16x9 = 189.9 ppi
  • Not useable
Dell Precision M4700 (encountered at work) has:
  • 1080p at 15.6" 16x9 = 141.2 ppi
  • Looked usable
The best pixel density per inch seems to be in the 140 range, not the 190 range.  If I want a 1080p screen, I'll need to go with something larger, like the 15.6".  If I want something smaller, I will need to sacrifice some screen real estate.  Suddenly the Yoga 13's screen resolution transforms from a disappointing spec to a sound product design decision.

I definitely like the Yoga 13, but I'm not sold on it.  My current machine is bulky, but it has suited my needs very well for over 6 years.  It's definitely on the way out, and has its problems:
  • Broken charger
  • Broken hinge 
  • Hot
  • If it gets jostled the wrong way, the screen goes dark and everything is unresponsive (ever since the hinge broke).
  • Battery life is down to about 40 minutes on a full charge.
  • Not to mention its 6-year-old specs.
...but I'm hoping it will hang on until I see what the new Haswell chips can do in a transformable laptop in the 15" range.  I don't want to feel like my new computer is a downgrade.  With the Helix's small screen, that was definitely the case, even with the increased pixel count.

Saturday, March 30, 2013

Coming Around to the Kindle Paperwhite

I like to make my buying choices intentionally.  I support the ecosystems that I think are best for the user, usually in terms of user rights and flexibility.  Not just for myself; I want ecosystems that respect the users' interests over centralized control to exist and be well supported.  This is why I initially bought HD DVD over Blu-ray, and refrained from buying iPhone (and every other Apple product).

This is also the reason I chose to avoid the Kindle.  Amazon has their own proprietary format and DRM for e-books; they don't support other vendors' books on their readers, nor their books on other company's readers.  I have found, however, that this restriction is easy to get around, with the right software.  I am free to buy e-books from any vendor and load them on a device from any vendor, Amazon included. 

In the 11 months since I bought my Nook Simple Touch, the market has evolved.  Both Barnes & Noble and Amazon have come out with lighted e-ink readers.  Both companies have tablet-style readers.  Barnes & Noble is spinning off their Nook division to a separate company.  An antitrust lawsuit has resulted in actual price differentiation in the e-book market once again, and Amazon once again clearly has the lower prices and best promotions.  In fact despite my owning a Nook, most of my e-book purchases have been from Amazon.  I have only purchased one (non-free) e-book from the Nook store.  The rest have been from Kobo, StoryBundle, and the Humble Bundle (and also one from Google for 25 cents).

I got a $25 Barnes & Noble gift card for Christmas from my parents.  I have loaded it onto my account, but I haven't spent any of it yet.  Every e-book purchase I want to make, it's never the best price.  I will probably use it to get the next installment in the Game of Thrones series (whenever that eventually comes out), since new releases tend to have the same price in most places.

There is also the issue of Amazon Prime.  Last summer, I switched from Netflix to Amazon Prime for streaming video.  Our Blu-ray player has built-in support for both.  The selection of free streaming movies isn't nearly as good, but they do have an excellent selection of TV shows, including all of Star Trek, Firefly, and several other sci-fi series.  The free two-day shipping from Amazon with no minimum order (which I was able to extend to four additional friends' accounts) makes it an excellent deal.  I'm hooked.

The value of Amazon's streaming would definitely be increased if I had a Kindle Fire.  Thus far, Amazon has not released their Instant Video player for Android.  This despite the facts that Kindles are built on Android, and they have a player for iOS.  Their excuse is that Android isn't secure enough, and their video partners wouldn't let them stream their content if they had an Android player.  This doesn't seem to have stopped Netflix, Flixster, RedBox, the Google Play store and several others from offering streaming players on Android. The transparent artificiality of this restriction alone makes me not want to buy a Kindle Fire.  It's simply a bad way to treat your customers, and it makes me want to look elsewhere.  The Kindle Fire devices aren't that good when compared to other tablets.  If I'm going to spend money on a dedicated tablet, I would much prefer a Nexus device.  All things considered, my actual plan for tablet functionality is to get a touchscreen Windows 8 convertible laptop/tablet.  My current laptop is nearing the end of its life, and I'm keeping my eyes open for devices like Lenovo's Yoga and Helix lines, which are full PCs, but also have tablet functionality and form factor, and a tablet app ecosystem that I believe will do well over time.

The other benefit of owning a Kindle device is access to the Kindle Lending Library.  The best way to take advantage of this would be with an e-ink reader, which is definitely my preferred reading medium.  If I were to get a Kindle Fire, I would want to keep my Nook around for most actual reading.  That's another reason I'm not very interested in the Fire.

When I purchased my Nook, I was aware that a GlowLight version was coming down the pike.  I chose not to wait and spend the extra money just for that one extra feature. Looking at the landscape now, the Kindle Paperwhite offers several advantages over my Nook Simple Touch:

  • Higher resolution, higher contrast e-ink screen
  • Built-in illumination - at the time I bought my Nook, I didn't want to be doing a lot of reading in bed.  These days, mostly because of how Shoshana's condition has effected our lives, I have been doing a lot of reading in bed when Elizabeth and I have different sleep schedules, and in darkened hospital rooms while Shoshana sleeps.
  • Access to the Kindle Lending Library
  • Kindle-specific features, such as "X-Ray", Whispersync, Time to Read, and upcoming Goodreads integration (Amazon is buying Goodreads). 
I don't regret buying my Nook.  It was a good decision at the time, and it was fun to root it and customize it. Managing the rooted environment has become somewhat of a chore, and it is a definite drain on battery life.  If I buy the Kindle Paperwhite, I will be able to sell my Nook Simple Touch for at least $50.  Including the skin and case (and the option of root or not) should increase that price.  I have some birthday money still burning a hole in my pocket.

I will miss the Nook's physical page turn buttons and wide grip.  I will miss the ability to supply my own screensaver images.  I will not miss the Nook ecosystem.
My folder of Nook screensavers.  Definitely preferable to Kindle's ads.

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.

Friday, August 26, 2011

Checking In On Checking In

It's been a few months since I did my write-up on location-based check-in services.  I've been checking in pretty consistently, and the three main services that I covered have each recently announced changes.

First, my experience:  I chose Gowalla as my check-in app of choice, mostly because I like the colorful and attractive graphics that each category (and often individual spot) has.  Gowalla also has the added benefit of being able to check in to Facebook and Foursquare, and show my friends' check-ins from those services.

Gowalla Items
At each check-in, especially since I auto-post them to Twitter and Facebook, I try to make the post interesting by taking a picture if appropriate, and always adding some sort of comment to give it context and personality.  This works pretty well, but the pictures uploaded to Gowalla are tiny.  I would prefer to be able to take and upload higher-resolution shots.  I would also like to be able to post pictures not taken from the Gowalla app at the time of check-in.  Often it takes a while to find the correct spot, and by that time, the moment I want to capture may have passed.  It would be nice to be able to whip out the phone, take a picture, and then use that with my check-in.  I know you can do this with Foursquare, but Gowalla likes to provide more assurances that you are actually at the place where you check in (though anything can be faked).  I've considered creating a fake camera app that would simply allow you to choose an image to "take" from the existing Gallery images.

Another thing I've gotten into has been Item collecting.  Occasionally when you check in, Gowalla awards you a virtual item, which can be "donated" to a spot that doesn't have too many items, or traded for an item at a spot, after you check in.  This aspect of checking in appeals to the collector in me.  What I ended up doing was keeping those items that had had the greatest number of owners, and trading the others, in hopes of accumulating items with long and interesting histories.  I was doing OK plodding along, but the items don't come too quickly, which is frustrating, and they aren't a very intuitive feature, which means that most of Gowalla's already small user base doesn't do any trading with their items.

Social Apps
Gowalla just announced via their blog that they are going to do away with the item feature entirely in the coming months.  This makes me sad, but I'm hoping that this means they have a clear and innovative vision that would clash with the item system.  The post seems to imply that they have something big to offer in place of item swapping that they are not yet prepared to announce, so I'm hopeful, but I don't know whether anything they do will drastically increase their user base.  Perhaps they have something in mind that will increase existing user engagement; something to do when checking in that they would prefer we do over item swapping.

Perhaps Gowalla could pick up some users from Facebook Places, which is apparently becoming less of a check-in service, and more of a way to tack your location on to an existing post.  I actually think this is a good idea, since most Facebook check-ins are simply a person-place-time data point, and have no user-generated content to make them interesting.

Speaking of making check-ins more interesting, Foursquare recently announced that they are adding events to places, and they aren't relying on users to generate and update the schedules: they're turning to the pros.  This is good news.  Whereas before a typical foursquare user would check in at a movie theater or a concert hall without comment or commenting simply to mention the event, now the app presents them with a list of movies or acts that are currently showing where they are checking in, and they have the option to pick one.  Hopefully this will encourage users to add details other than what they're there for, like what they think of it, or who they're with.

I actually use Foursquare through Gowalla, but this feature isn't available to me, since Gowalla only maps its spots to Foursquare's venues, not the new events.  If Gowalla fails to deliver on their new vision, I might find myself simply using the Foursquare app to check in.  Foursquare allows you to post any picture with your checkin, including one you already took, and the Foursquare user base is much larger than Gowalla, so I have many more friends who use it.  Switching would be very simple for me to do, but I would definitely miss Gowalla's colorful and cartoony icons.

Friday, July 08, 2011

Google+: Impressions So Far

I was able to get an invitation to join Google's new social network, Google+, a few days ago, and I thought I would give my initial impressions.

First of all, it's a social network, which means that you can post content which others you specify can see, and you can see others' content that they have allowed you to see.  In that way it is much like Facebook.  I think you all get the idea, so I'm going to focus on what's different and new.

Google+ Android app
The first thing you'll notice when you sign up is that instead of simply "Friends", Google wants you to categorize your contacts into "Circles", which are sets of contacts.  The purpose of this is so that you can easily share different things with "Family" than "Work"; "Acquaintances" than "Friends" (your real friends), and of course you can create as many custom circles as you wish.

Of course, Facebook has Friends Lists which lets you do the exact same thing, but not many people use them, and almost no one picks and chooses which Friends Lists to share things with on Facebook, whereas the idea is that with Google+, that will be the norm.

I think the most compelling features of Google+ are as follows:
  • Hangouts - You can flip on your webcam and start a Hangout, which you can invite your circles to or post to your profile.  Others who see you're hanging out can join you, and what results is a very easy multi-way video chat.  When someone starts talking, the big video switches to them. 
  • Automatic mobile photo/video upload - People like to take pictures and videos on their phone, and it can be quite a hassle to get those photos and videos off.  You can either plug your phone in to your computer, or you can manually select pictures and videos for upload using an app.  Google+ offers set-it-and-forget-it convenience:  with the Google+ app, you have the option to have everything automatically uploaded to your own private space, from which you can easily share selected photos and videos.  You can select whether to upload over the network, only over WiFi, or only over WiFi while charging, so it doesn't eat up your data plan or drain your battery if you don't want it to.  The online backup feature alone is worth installing the app, even if you never share anything, but once it's already online, why not use it?
  • It's Google - and therefore very conveniently integrated with all of your Google sites, like Gmail, Google Reader, Picasa, and Google Calendar.  Those of us who use these services will see a notification counter and "share" button in the top right hand corner of the page.  It will just be "there" for us to use.
I find it interesting that, at least as yet, there is no way to publicly post a message to another person.  On Facebook, this would be like posting to someone's wall.  On Twitter, it would be @ mentions and replies.  This makes it significantly less social in my opinion:  basically everyone is simply publishing things and sharing and commenting on things that others publish.  You can publish all you want, but no one interacts with your posts unless they follow you.  Even when you mention someone else, only that person gets a notification, not their friends.  The only serendipity is in comments.

I predict that this will make Google+ much less of a content generation space than Facebook.  People will tend more to import their existing streams of content to Google+, rather than using Google+ to initiate the conversation.

I could be wrong.  I hope so.  Then again, I personally almost never post on other people's Facebook walls.  All of my content on Facebook originates on other services, such as Twitter, Gowalla, Posterous, and Blogger.  This makes it easy for me to check a box on those services and send the content to Google+ as well as Facebook, and thus Facebook is not the exclusive holder of my content (this is by design).  But I wonder what the designers of Google+ are intending to do by not implementing such a seemingly basic feature.

They may not have been able to come up with a way to make it work with circles.  After all, if all of your content gets published only to the circles that you pick each time, how can you trust your contacts to pick the appropriate circles with which to share their posts to your profile?  (On the other hand, anyone who can see a post can republish it to anyone else, unless sharing is disabled.)

I don't think Google+ will die or be as obscure as Orkut (or as hated as Buzz), but I also don't think it will become as popular a place to spend time and interact with all of your friends as Facebook.  Google+ is a great personal publishing platform, and it has some useful tools for connecting with friends and colleagues, but it is definitely not a Facebook clone, nor, I fear, a Facebook killer.