Tag Archive for 'review'

24 hours of Android

After many frustrating delays, I finally managed to get my new G1 handset up and running on my T-Mobile account. It is, in short, a quirky but highly-promising device, and unless some major new deficiency rears its head in the coming days, I will count myself a happy Android user for some time to come.

I’ve been a BlackBerry user for the last year, and have also spent a decent amount of time messing with friends’ iPhones since the original 1st-gen release. In terms of polish and consistency, the Android UI lies somewhere between these two poles: you need to do a bit more context-switching in normal app operation than is required on the iPhone, but 3rd-party apps aren’t the unpredictable crapfest they are on the CrackBerry.

Performance is also somewhere between these two — while the entire system is quite stable, and response to hardware events (button presses, incoming calls, etc.) is good, some of the apps could obviously benefit from further performance optimization, as they tend to get bogged down on screens with a lot of redraw, or fail to offload as much processing into background tasks as they should to maintain UI responsiveness.

The keyboard is an almost-unmixed blessing. I’ve become a bit too accustomed to the layout of my BB Curve, so I’m not quite back to full “touch typing” mode on the G1, but I’m already far more proficient and confident in my typing than I’ve been able to get on the iPhone touchpad. Having the ability to close the keyboard and use the entire screen for text, images, or video is a definite win over the split-face Blackberry layout, as I’m one of those masochists who actually tends to read long-format text (blog posts, Wikipedia entries, and email) on my mobile device on a regular basis.

The Android platform application ecosystem is obviously far less mature and complete than the iPhone App Store. While I have a decent Twitter app (Twidroid) and SSH client (ConnectBot), there aren’t many compelling games or productivity apps available yet. Of course, I’m a coder, so there’s one obvious solution for this: write the damn things myself. Once things settle down a bit with the new job, I’m hoping to have some time to do just that.

Overall, though, I think the most interesting thing about Android is not what it offers in terms of competition for Apple, Microsoft, and Nokia (though that is a compelling argument in and of itself). What I see foreshadowed when poking around in this system is an absolutely kick-ass netbook or non-real-time embedded operating system. Given the performance Android is able to maintain on the ARM-based G1 hardware, I think it would scream on an Atom-based ultraportable like the ones Wind and Asus are manufacturing these days, especially if both a touchscreen and usably-large QWERTY keyboard were available on the system.

Android may not do much to stop Apple’s ascendence to smartphone domination, but it does offer a glimpse of how a truly usable, efficient Linux desktop environment might work.

Programming Collective Intelligence

Programming Collective Intelligence, 1st Ed. (2007)
Author: Toby Segaran, Published by O’Reilly Media Inc.

From the “long-overdue” dept., here’s my review of Programming Collective Intelligence, which I received for free through the O’Reilly user group distribution channel. Opinions are entirely my own, and probably wrong.

I have a weird bias when it comes to reading technical books. I’m a self-taught programmer, but I’ve taken coursework in the formal mathematical basis for computation, and I’ve always enjoyed seeing an elegant proof or clever algebraic formulation of a hairy coding problem.

Given that perspective, my impressions of Programming Collective Intelligence were mixed. If approached as a “cookbook,” with recipes for analysis applied to the data available from popular social networking sites and web services, you can see real results quickly, without having to understanding the underlying mathematics.

Unfortunately, that also means you miss out on a lot of the potential “Eureka!” moments that can come from thinking a little more deeply about an algorithm. This is especially apparent in the last couple of chapters, when active, rich areas of CS research like support vector machines and genetic programming are covered in a few dozen pages each, which often doesn’t offer space to do much more than tease the reader with the potential power a technique offers.

I think there’s a wide gap between the “blog article” and “peer-reviewed journal” levels of formalism, and I admire Segaran’s effort to span that divide and bring some of the fruits of AI research into the pragmatic domain for us 9-5′ers. On the other hand, I don’t think I walked away with any great new perspective on machine learning, so much as I saw some cool examples of how the author had applied it.

Ideally, I think this book, or another like it, should cover fewer real-world services or problems, and apply more of its algorithms and techniques to each data set. Every page spent describing how to interface with a particular web service (or worse yet, scrape a single site’s HTML structure) screamed “planned obsolescence” to me — APIs change, and sites that are popular today may be dead and gone in a few years, but the analytical tools being discussed are far more timeless.

Overall, I’d give the book a B-, at least for my own uses. If the Chapter 12 and Appendix B content were moved into the main body of the text, and the random dating site scraping techniques dropped or themselves demoted to appendices, I would quickly raise it to a B+ or A-.

I would still recommend the book as-is to anyone who was more interested in getting results tomorrow than gaining deep understanding of the problem space, as well as those with less Internet application programming background, for whom the concrete code examples would have more value.