Leaving Android


Twenty months ago I wrote about getting my first smartphone, an Android-based HTC Droid Incredible. At the time the primary reason I had for choosing it over an iPhone (the iPhone 4 announcement was only a couple of weeks away) was the lack of 3G data coverage in my hometown.

I’ve been extremely pleased with my Incredible but I’m ready to switch to an iPhone. What follows are my thoughts about what’s been good and what’s been not so good about Android.

##Crapware Unless you pay full price for your phone (feature or smart) you are benefitting from a subsidy. The visible cost of this subsidy is the two-year contract you are required to sign. With Android-based smartphones there is a somewhat hidden cost in the form of crapware. Your brand new smartphone will come with several carrier-installed apps that you cannot remove from your phone. At least on a new Windows-based computer you can remove the crapware that comes pre-installed.

Having apps you neither want nor can remove on your phone is a minor niggle but it speaks to the tone of your relationship with the cellphone carrier – they really don’t care whether you want those apps or not.

##Lack of Updates In the case of my HTC phone, operating system updates happen only when, and if, HTC devotes energy to updating their custom user interface, called Sense. Over the summer when it appeared that HTC would not be making Gingerbread available to my model of smartphone I took the initiative and rooted my phone and installed CyanogenMod, a 3rd-party ROM. It was a relatively easy process and it gave me Gingerbread on my phone, but it hasn’t been without difficulties. In November after updating from CyanogenMod 7.1 to 7.3 my phone freaked out and it ceased to be stable for any use. I was fortunate enough to have a backup from before the update that still worked.

Honeycomb (Android 3.0) was designed solely for tablet devices so Ice Cream Sandwich (Android 4.0) is the latest and greatest operating system from Google. Unless the ROM community steps up and makes an ICS ROM that will work on my now two-year old hardware, I’ll be trapped at version 2.3 going forward. (Yes, I could buy a new Android phone, but some of those brand new phones don’t come with ICS either. The carriers don’t seem to care as long as they are selling devices.)

The average smartphone buyer has neither the technical chops nor desire (perhaps) to have the latest and greatest OS available for their device. I do have that desire, and while I have the technical ability to keep up in spite of HTC, I no longer want to risk bricking my sole telephone.

##Google Chrome Just today I learned that there is a beta version of Google Chrome for Android. Google Chrome is my browser of choice and I would love to have it on my smartphone. However the beta only works on Ice Cream Sandwich (Android 4.x) and my phone is only running 2.3.x. As I said above, I’m at the mercy of the ROM community to produce a version of Ice Cream Sandwich that will work on my two-year old hardware.

##Browser The stock Android web browser, called “Browser” is horrid. I have never liked it, and compared to mobile Safari on my iPad it is truly lacking. I’ve tried several other browsers with mixed satisfaction. The latest Firefox betas aren’t too bad, but I still find it lacking.

The lack of a decent browser for my phone means I rarely use it to browse web pages.

##Turn-by-turn-navigation The turn-by-turn navigation app is very nice. While I don’t travel often, I have made good use of it at conferences or trainings to find restaurants, lodging, and points of interest. Of course several weeks ago while using it in Kansas City to find our way from hotel to concert hall my phone decided to reboot mid-navigation. To be fair I think the reboot was caused by the ROM on my phone and not the navigation app, but it goes to highlight my situation with Android. Either I run a stock OS and accept being two or more operating system generations behind, or I root my phone and install a ROM hoping that it is stable enough on my hardware to be functional.

##Alternative keyboards The stock Android keyboard is good, but some of the 3rd party ones are outstanding. I’m a huge fan of SwiftKey, which predicts the next word with surprising accuracy. There are some texts that I send often enough, a wake-up text to my wife, for example, where I only need type the “G” in “Good morning” and the poke the space bar to accept the suggested word for the entire rest of the message. In preparation for not having a predictive keyboard I’ve actually turned SwiftKey off and gone back to typing the entire message. Being a nerd is sometimes challenging.

##Camera The camera in my Incredible is just that – incredible. It takes amazingly good pictures for a device that isn’t primarily a camera. The pictures are so good that when we travel I don’t think about taking a digital camera at all. More than once I have told Sibylle that it’s really a camera with a phone built-in.

##Mini USB port My HTC uses a mini-USB port for charging and syncing. Since this is a standard and not proprietary like the 30-pin connection iPhones use, it feels better. With the huge presence i-devices have any more I think 30-pin connectors are easier to come by than they might have been a few years ago.

##Removable battery I can take the back off my Incredible and remove the battery. This could easily go in the “Cons” column as I need to do this with surprising frequency as the phone does become unresponsive at times. I don’t know if this is due to my having added a 3rd-party ROM to the phone or if it would have the same behavior with the stock HTC ROM. Regardless, I can force it to reboot if I need.


Bike Fit


I own three bicycles, two of which are in riding condition. The oldest, and currently not in working order bike, is built around a Trek frameset I bought while a freshman in college some 33 years ago. I added some custom wheels, and bought or repurposed parts to finish the bicycle. I rode it from 1979 until about 1988 when I bought my current road bike, a fat-tube aluminum framed Cannondale SR 900. At $900 in 1988 this was a serious purchase and I’m glad I still have this bike. It’ll be an antique next year at 25 years of age. Two years ago Sibylle and I bought a pair of Giant cross bikes and have enjoyed riding them in and around our neighborhoods since then.

In an effort to get into better shape I bought a magnetic trainer last winter and stuck my Cannondale on it and tried to ride several days a week. I’m heavier than I every was 25 years ago and some of my joints have been injured since then making riding far less comfortable than it used to be. Within minutes of starting to ride my groin is numb and I seem to be developing a rather persistent saddle sore. After reading about the potential long term effects of sitting on one’s perineum I decided I needed to make some changes to bikes or stop riding.

I went to the local bicycle store with the idea of getting a dual platform seat, hoping that it would eliminate the cause of the numbness and saddle sores. What I learned was that most people find these seats uncomfortable as with out a nose you constantly feel like you are falling off the seat and have to hold your self on them. They suggested that I try a bike fitting session, which would make adjustments to my bike that might also improve riding comfort.

This morning over the course of an hour and quarter I had my bike fit session and I am hugely encouraged by the results already. We made several adjustments all aimed at relaxing my riding posture.

##Handlebars Clint started by rolling my handlebars up a few degrees. This made an immediate improvement as I didn’t have to lean quite as far forward to grab the top of the brake hoods.

##Leg angle Next we measured the angle of my knee with my foot at the bottom of the pedal stroke. The optimal range is 25 to 35 degrees. With my original setup I was at 20 degrees on both legs. By lowering my seat a little bit we reached a very comfortable 30 degrees.

##Seat Positioning We next measured the location of my knees in relation to the ball of my feet and the pedal axel. Ideally the knee should be over the ball of the foot which is over the pedal axel. In my case my knees were slightly behind that ideal position, moving the saddle forward a bit corrected this. Clint also adjusted the cleat on my left foot a bit to better align the ball of my foot and the pedal axel.

##Handlebar Stem The final adjustment we made was to change the handlebar stem. The original Cannondale stem had what Clint referred to as “negative angle”. By putting one with a positive angle in its place we raised the bars a bit. Along with the new stem I’m getting new brake cables (the raised height will make the old cables too short) and new handlebar tape (the old likely won’t come off easily after being there for so long).

##Geometry The result of all these changes is an entirely new riding posture. The new geometry felt immediately more comfortable. In a normal training session on my fixed trainer 25 minutes was enough to cause me total numbness and quite a bit of discomfort. This morning I was on the saddle for the better part of an hour with no numbness and my saddle sore wasn’t aggravated. For these reasons I think the new posture will be a huge improvement. I am now looking forward to my next training session and to rides outside later this spring.


The Ranger


{{ “0399157484” | amazon_mediumleft_image }}

The reviews on the back cover compare Quinn Colson to the likes of Elvis Cole. While I didn’t find this book as enthralling as a good Elvis Cole story, it was good. It will be interesting to see where the author, Ace Atkins, takes the character and story line next.


A Corpse in the Koryo


{{ “0312374313” | amazon_mediumleft_image }}

I learned about James Church and his Inspector O novels through @timbray on Twitter. The novels are all set in North Korea and they paint an interesting picture of life there. Just as novels offering a glimpse inside the Soviet Union were fascinating to me before that regime fell, novels about the secretive North Korea are also interesting.


The Upside of Dyslexia


It is fascinating what we can learn when we look beyond the accepted understanding of something.


An Unmitigated Ass


By his explanation, my childless marriage shouldn’t earn the privilege of marriage either, since my wife and I aren’t benefiting society by producing children.


Why We Bought a Treadmill


This. This is why we bought a treadmill. (via: Swiss Miss)


Flickr Photo Gallery


A couple of years ago I set up a Flickr photo gallery on Sibylle’s studio site. I had seen nettuts tutorial on creating a slick Flickr gallery with SimplePie.

SimplePie is an RSS feed reader, and the tutorial showed how to incorporate it into your site, along with some JQuery JavaScript and the Thickbox style sheet, to create a photo gallery. Once I had the gallery working all Sibylle had to do was add or remove photos from a particular set on her Flickr account to alter the pictures on her website. It seemed like a good solution at the time but has proven to be cumbersome in actual use.

Today, quite by happenstance I observed Jon Hicks ask on Twitter about a “clean-looking non-Flash way of embedding a Flickr set into a blog post. Much to my delight he soon posted the best response.

Flickrshow

Flickrshow produces a very elegant slide show using a Flickr set. There’s a single JavaScript file to link to (or download and refer to on your own host), and a few lines of script to embed in your site to produce the gallery. Compared the RSS-feed method I had used before Flickrshow is lightweight and dirt-simple to setup and use.

It only took me about 5 minutes to cobble together a new photo gallery page for Sibylle’s site use Flickrshow. Sibylle was delighted with the appearance and so this evening I made the switch. You can see it in action for yourself.

Even after all the years I’ve been online I am still astounded by how quickly and completely a single reference to something can change your life.


How to Set TextMate 2 Properties


I’ve been using the TextMate 2 Alpha since its release in December. For the work I do (largely Markdown editing and some minor scripting) it has been stable and a joy to use. TextMate 2 introduces a properties file where you can specify global or project specific properties. Every time I start a new markdown file I get part way through before I remember to visit Edit | Spelling | Check spelling as you type. Today I decided it was time to learn how to set that option once and for all.

A little Googling led me to this TextMate 2 .tm_properties gist. After reading through it a couple times, and through all the comments, I cobbled together the beginnings of a .tm_properties file for my use.

# .tm_properties file from http://gist.github.com/1478685
# ---------------------------------------------------------

# ---------------------------------------------------------
# Display the name of the home directory
# ---------------------------------------------------------
windowTitle    = "$TM_DISPLAYNAME - ${CWD/^.*\///}"

# ---------------------------------------------------------
# Omit .tm_properties so it doesn't show in the browser
# ---------------------------------------------------------
include        = ".htaccess"

# ---------------------------------------------------------
# Exclude old *.tmproj files
# ---------------------------------------------------------
exclude        = "{$exclude,*.tmproj}"

# ---------------------------------------------------------
# Variables
# ---------------------------------------------------------
TM_FULLNAME   = "Mark H. Nichols"
TM_ORGANIZATION = "zanshin.net"
TM_GIT        = "/usr/local/bin/git"
TM_HG         = "/usr/local/bin/hg"

# ---------------------------------------------------------
# General Settings
# ---------------------------------------------------------
showInvisibles = true
spellChecking  = true

[ text ]
softWrap       = false
wrapColumn     = 80
softTabs       = true
tabSize        = 2

[ text.html.markdown ]
softWrap       = true
wrapColumn     = "Use Window Frame"
softTabs       = false
tabSize        = 4

[ text.plain ]
softWrap       = true
wrapColumn     = "Use Window Frame"
softTabs       = false
tabSize        = 4

[ source ]
softWrap       = false
wrapColumn     = 80
softTabs       = true
tabSize        = 2

[ source.plist ]
softTabs       = false
tabSize        = 4

[ source.tm-properties ]
spellChecking  = false

Most of the options I’m setting here are self-explanatory. The windowTitle setting at the top causes the TextMate window title to display the current working directory (CWD) in the title - helpful when you have multiple project windows open at once.

This properties file is stored at the root of my home directory, making it global to all TextMate sessions. You can also have project specific .tm_properties files stored at the root of any given project. Here’s the very simple template I’m using for my projects. It just appends my project name to the window title.

projectDirectory = "$CWD"
windowTitle      = "$TM_DISPLAYNAME - Zanshin"

You can clone or fork my global .tm_properties file, along with many of my other dot files on Github.


Letters of Note: To My Old Master


Transcript of a letter written by a former slave to his former master. Politely pointed.