Leading up to the release of the HTC One, I was quite excited. From the early photos I'd seen of it, the production quality and attention to detail on the industrial design seemed to rival that of Apple's iPhone. Of course, I was pleased by the hardware specs, but that wasn't really the main selling point for me:


Hardware is becoming commoditized, at least relatively to the software running on it. Two years ago, all the OEMs were blazing a trail, obsoleting their own products within a matter months. This is quite similar to the PC era circa 10-15 years ago, where every manufacturer was vying to have more megahertz and gigabits. Now, most consumers probably don't even care about the specs on their PC so much as the price point. For every day user needs, even the slowest PC is fast enough.

Hardware innovation outpacing software complexity is following suit on mobile devices-- even mid tier phones can run the Android OS and apps just fine. And the hardware differentiation at the top end of the mobile phone spectrum is minimal as well. Going forward, software and services will become the value add on top of a OEM's offering.

The point being, I don't feel the hardware specs really differentiate the top end phones. Battery life, call quality, etc all seemed to be around the norm. That said, the HTC One still manages to set itself apart from the other offerings currently on the market by boasting a shiny 1080p display and front facing speakers that sound surprisingly great. It's the sharpest display I've seen on a phone to date. I've also been geeking out with the on board TV Remote (powered by Peel, which comes with a full fledged API available via the HTCDev website.

I won't be doing any benchmarks in this review, because they are silly. The only users that care about benchmarks are the users running benchmarks.

In short, the hardware is incredible, and easily the best of breed on the market. It is an iterative improvement over the Nexus 4 and nearly exactly the same as the Samsung Galaxy S4. In The Future, software will matter more than hardware.

No SD Card?

This may be a "deal breaker" for some people, but I don't even take this into consideration when buying a phone anymore. SD Cards are clunky. Internal phone storage has plenty of space, and cloud storage makes your data capacity effectively unlimited.

Industrial Design

I've alluded to what I think matters to the end user: software and industrial design (and brute force marketing). These pieces of carved aluminum and glass are status symbols, they are fashion accessories. They should be beautiful and feel expensive. Phones are luxury items. They are jewelry. They are the new rims you put on your car. Functionally, the aesthetics serve no purpose, yet they matter nonetheless.

Vain, I know, but such is reality. Take a look at the chart below. I wouldn't say that Apple makes better phones anymore, but they command a larger market share at the higher income brackets.

That said, the HTC One is the most beautiful phone on the market. It's prettier than my iPhone. You can tell that somewhere, a design team worked around the clock to get every edge, angle, and surface perfect.

The phone is seamless. Literally. I can't figure out how to open it. Not that I care to.


I haven't used Sense for a couple versions. Earlier iterations were bulky and clunky, the phone would barely chug along. I can't believe I'm saying this, but Sense 5 is Not That Bad. I think that having such a higher resolution display allowed the design team to no longer limit themselves to device constraints, and allow their visions as prototyped in Photoshop to become a reality.

The Sense Home widgets and feeds are nice, and surprisingly usable. Everything feels smooth and snappy. The animations are subtle, not overdone. HTC Zoe lets you create decently cool video snippets in a fraction of the time it would take a user to do it themselves. It wasn't really my bag, but I can see users enjoying and using it.

And then there's the Sense App Drawer...

The Sense home screen is not bad, but as mentioned in other reviews, the app drawer renders it nearly unusable... it only houses a 3x3 (4x3 after the first page) grid of icons. That isn't nearly enough being shown on the page to actually find an app once you start getting past more than what is installed out of the box. And for some odd reason, the app tray also contains the enormous clock and weather widgets, which is also affixed to the default home screen.

Update: you can change the grid size to 5x4 via somewhat difficult to find setting.

There's also a strange persistent "Power Saver" notification that I can't seem to make go away either. But besides those two issues I actually found myself enjoying Sense.


The camera image quality has been hit or miss for me. Videos come out great, but photos seem to be inconsistent (color issues, not sure). I haven't ruled out user error yet. But taking shots with my iPhone, on average, results in better photos. But the images that do come out well, look incredible. I've shared an album on Google+ with a bunch of my HTC One photos.

Carrier Bloat

I'm not sure how long this has been around, but HTC has kindly provided users with a way to disable apps, including the ones preinstalled by the carrier. It took me a few minutes, but I was able to disable all the AT&T bloatware, so I could get down to a clean/minimal experience.


I'm going to talk about this, because it matters to me. But if we're being honest, how hackable a phone is, and whether the bootloader is unlocked has no impact on the actual sales of the phones. It just makes a small, very vocal, minority of users upset. Though, arguably, alienating a population of developers is probably not the best way to garner developer adoption either.

The high level takeaway is that the unlock behaves just like any other Nexus device. This is awesome.

I was incredibly surprised to find that the HTCDev unlock even worked on the AT&T variant of the HTC One. AT&T and Verizon have both been pushing OEMs harder to completely lock down their phones, and remove all unlock mechanisms altogether. For example, the Samsung Galaxy S4 will be shipping locked on both Verizon and AT&T. Whether this was a mistake, or an oversight, remains to be seen.

Futhermore, the HTCDev Unlock has been improved since the previous iterations. Earlier versions would not allow the boot image to be flashed by recovery. This had the ill effect of not allowing custom ROMs to send OTA updates that would update the boot partition. Essentially, it broke untethered ROM upgrades (fastboot would still work). This improvement in the unlock mechanism was completely unexpected, and a much needed and welcome improvement.

On the CyanogenMod side of things, this is an 8064 chipset (Qualcomm). Qualcomm has been the easiest SoC to work with, since it has the best open source support via the Code Aurora forums. I'm tentatively hopeful about the future of CyanogenMod support on the HTC One.


It's in my pocket. Sorry Nexus 4.

HTC One Review<p><center><img alt="" src="/post-content/one-review/title.jpg"/></center></p><p><a href="/post/one-review" title="Read more of HTC One Review">read more</a></p>

UrlImageViewHelper will fill an ImageView with an image that is found at a URL. Loading image from a url into and showing it in a ImageView is nearly ubiquitous amongst Android apps. For example, most social media clients have this functionality for profile pictures, photos, etc. This library makes the download and display easy.

How you normally load a url into an ImageView with the library:

More polished apps will show a simple animation, generally a scale or pop in, as the image finishes loading. It's a nice touch and users will appreciate it. Here's how you can do that with the UrlImageViewHelper project.

The Code

The Result

The Library

Head on over to the download page to grab the library. The included sample has been updated to demonstrate the scale in animation.

Loading and Animating an Android ImageView from a URL<p><a href="/UrlImageViewHelper">UrlImageViewHelper</a> will fill an ImageView with an image that is found at a URL. Loading image from a url</p><p><a href="/post/urlimageviewhelper-pop-in-animation" title="Read more of Loading and Animating an Android ImageView from a URL">read more</a></p>

I stopped blogging a while ago, mostly because I started using Google+ a lot more. But, Google+ isn't the greatest place to write about code or technical posts. The formatting options are quite limited, and code formatting is nonexistent.

My old website is hosted by Blogger, is a throwback to my time as a Windows developer. Windows Live Writer is a pretty fantastic tool, and was what I'd use to publish my posts. Along comes Android, spurring my switch to a Mac desktop environment. I'd run Windows in a VM to write to my blog. That workflow was fairly painful. Not to mention that the templates and customization options for blogger are quite lackluster anyways.

I've been in love with node.js, and found a lightweight blogging platform called Poet. After some minor tweaking, it supports the main/minimal features I wanted:

File based posts and Markdown

I like being able to go to Github, create a new file at koush.com, and edit it using their Markdown editor. You can view/fork/edit this post on Github.

Code snippets

I blog about code fairly often, so I need code snippets that look good. For example:

Simple Scripting

Furthermore, static sites are limited. Sometimes I want to do some server side scripting in my posts. This gives me the flexibility of being able to hack on the site and easily add dynamic content.


Expect more posts here. I hope.

I'm Back.<p>I stopped blogging a while ago, mostly because I started using <a href="https://plus.google.com/103583939320326217147/posts">Google+</a> a lot more.</p><p><a href="/post/first" title="Read more of I'm Back.">read more</a></p>