Wednesday, April 04, 2012

If Tax Prep Options Were Airlines

1040EZ Airlines
Upon your arrival at the airport, you are given a red Radio Flyer wagon with the airline logo on the side, and a bag of peanuts.

Private CPA / Accountant Airlines
You book your own private jet.  The pilot meets with you and then decides how you are going to get where you are going.  Because of a ton of transportation regulations, the route ends up going half way around the world, and stops at 18 airports before you finally arrive back at the place you actually started from.  All of the ticket price is refunded, and you walk away bewildered and empty handed.

H&R Block Airlines
You line up with other passengers at the front door of the aircraft.  Eventually the flight attendant comes the door, and directs you to a seat.  The seat is a perfectly square box with only enough room for an average size man or woman.  Depending on your luck, the pilot is either a seasoned, ex-NASA aeronautics expert, or a nervous young pilot fresh out of flight school.  When the plane takes off, it goes directly to Kansas City, MO, regardless of where you bought your ticket for or how much you paid for it.  When you land, you're told that you owe thousands of dollars for your ticket, with no explanation given as to why.  Everyone is given a folder, business card, and a mint as they deplane.

TurboTax Airlines
You walk down the jetway and are shown into the cockpit of your own plane.  You are told you will be flying the plane yourself, however, instead of touching any of the actual controls, you will be just be interviewed by a computer program written by an ex-pilot.  As you fly, the computer program asks questions like "Where did you fly last year?", "what does the gauge labeled 'airspeed' read right now?", and "do you see any other planes in the sky?".  As the flight progresses, the altimeter reading varies all over the place from -10,000 to 30,000 feet, seemingly without any regard for what's actually happening to the aircraft.  Finally, either you safely land at the airport and are given thousands of dollars for reasons you don't fully understand, or the plane runs into the side of a mountain.

Sunday, April 01, 2012

Unleash Your Galaxy Nexus Screen: Tweak Auto Brightness

When I was shopping for my next phone, one of the main selling points of the Galaxy Nexus was its beautiful SuperAMOLED screen.  Because the screen pixels are actually light sources (as opposed to a more traditional LCD in which a backlight is filtered by an LCD screen), the contrast ratio and color vibrance are theoretically unmatched.  So why is it that, weeks after getting my long awaited gem, my assessment of the screen is that it is more lackluster than my 3 year old Moto Droid?

The answer lies in the combination of two factors:
  1. Different colored LEDs respond differently to various power levels, in terms of their brightness.
  2. The default screen-brightness-to-ambient-light mapping offered by Ice Cream Sandwich on the Galaxy Nexus (in auto brightness mode), is inadequate.
Here's the proof:  Turn your display brightness all the way up instead of using auto mode.  The screen looks beautiful, the colors are vibrant, and the promise of the SuperAMOLED screen is realized (not to mention that you can actually see the screen reasonably well in sunlight).  Ok, so it's probably not appropriate to leave your brightness cranked all the time, for a lot of reasons, but it's clear enough that there is a different world. 

So what's going on here?  Let's look at item #1 first.  Different colored LEDs respond differently to various power levels.  The reason for this is that different materials are used to create each color, and each respective material has a fairly unique, non-linear brightness curve.  So lowering the power going into the screen means that the colors will not be dimmed uniformly, causing color distortion.

#2, the auto brightness mapping just doesn't seem to cut it.  This is a complaint I have had with all of my Android phones, but this one is especially pronounced, perhaps because of the LED display.  The screen is very often too dim for a given situation.  The ambient light sensor is extremely directional, and if you are standing outside on a bright day, the display will very often switch down to around 50%!  This is unacceptable.  The other symptom this creates specifically on the Galaxy Nexus, is a dull and unremarkable screen color (greenish or yellowish tint, with reds and blues being very subdued).  In practice, it very rarely, if ever, actually gets to full screen brightness, which I found quite annoying.

My theory is that Google errs on the side of conservation in order to protect battery life.  However, in the face of some of the other battery drainers, and the rate at which they can consume energy, this seems like a drop in the bucket.  For me at least, I will take this small hit so that I can appreciate my phone when I am using it.  Let's talk about options.

Option 1: Leave your screen on full brightness all the time.  While this is certainly an option, this will have an unnecessary impact on battery life. Furthermore, this would be obnoxious when it is actually dark out. 

Option 2: Remap the brightness the way it should be.  This is possible with a custom ROM, such as Codename Android.  Codename Android's MO is to start out with all of its customizations the way they would be in stock ICS.  After that, the ROM allows you tweak lots of things, including the auto brightness mapping.  This does mean you will need to backup your phone, unlock it, root it, and install a custom ROM.  That's more than I want to get into on this blog post, but there are plenty of resources out there to get you started.

What I will offer is a brightness mapping that I have created, tested, and found to be very reasonable.   It's much simpler than the stock mapping, which has something like 20 discreet levels (which just seems like nonsense to me). 

First, you need to turn on the features of Codename Android to better manage the brightness.  Go to Settings->Interface (under CODENAME)->Automatic Backlight.  Enable the first checkbox, under "LIGHT SENSOR FILTER".  This will provide a moving average of the light level, which will help with the highly directional nature of the ambient light sensor (ideally, an actual ambient light sensor would be omnidirectional, but that's difficult to design into a device that is flat.  A better design would have a small semi-spherical protrusion, but I digress).   Change window length to 30 s.  This means that it will take 30 s before the light level perceived by the device is what the senor reports, assuming it stays the same for that long.  Until then, it will ramp up or down slowly to meet it.  Change the sample interval to 2 s, since it really doesn't need to be faster.

Next, let's edit the mapping.  Go to "Edit Other Levels..." and you will see a map of lower, upper, screen, and brightness.  This may look a little intimidating, but it's really simple.  At the very top, you can see what the sensor is actually reporting (raw), what the current average is (filtered), and what the resulting screen brightness is.  I believe "buttons" is reserved for devices that have separate backlit hardware buttons, as opposed to the onscreen ones that the Galaxy Nexus has.  We'll leave those alone. 

Push "set number of levels" and change to 7.  Now push each button for "lower" on the left side, and enter the numbers as shown above.  Then select the screen levels for each range and, again, enter the numbers as shown above.

Don't forget to push "Save and apply".  You may wish to make tweaks to the suggested levels, which you can do at anytime by coming back to this screen.  My advice is to note the sensor reading under "raw" when the screen brightness is something other than what you would prefer, and then you can modify the brightness for that range, or adjust the ranges themselves as necessary.

Now enjoy your Galaxy Nexus screen, the way everyone should have been able to from the factory!