Does this make me an advanced Android user?

So I finally took the plunge and rooted my HTC Desire Z.

All the goodies – perm-root, S-OFF, engineering hboot, clockwork recovery – in addition to the SIM-unlock I already had.  Probably SuperCID as well.

You may be asking – why, oh why would you do such a thing?!?

Two reasons.

First –

Google recently p’d me off and made some unwelcome changes to two of their core products. Ever since v2.3.5, Gmail has had its database locked to other apps, meaning that things like my handy Missed Reminders app (no longer supported or available on the Market 😦 ) wouldn’t give me repeating alarms for unread Gmail email.  This meant reverting to the version of Gmail that came up on my phone, and suffice it to say that – although functional – I found myself missing some of the newer features.  To get around this, I visited a 3rd-party site to download v2.3.4 of Gmail, but I never felt comfortable running that binary from the untrusted source.

In the same vein, Google Maps post-v5.10 features useless traffic condition colours in Navigation.  I use this feature almost daily during my commutes, so again I went to a 3rd-party site to upgrade my stock version of Maps to 5.10.x.  Same concerns as above.

Rooting allowed me to do some interesting things with Gmail, where you take the official .apk and modify it to restore the database permissions that existed pre-v2.3.5.  So that’s cool.  It does mean that I have to do the same trick on each new version of Gmail that gets released, but at least I can keep up-to-date with an official (though modified) binary.

No solution yet for Google Maps, but this thread has me holding out hope that Google is aware they messed up and will issue a fix in the next release.

And on the subject of security, I figured it best to get ahead of the curve and root my phone myself rather than have some dastardly 3rd-party app do it stealthily without my knowledge.  With Superuser installed I get a notification whenever an app requests root access.

Second –

I’m running the stock Froyo 2.2 ROM that came with this phone.  I’m mostly okay with that, because so far I like the HTC customizations (although I’m using ADW Launcher vs. HTC’s Sense launcher) and I’m not pining for Gingerbread – I’ll most likely go straight to Ice Cream Sandwich some time after CM9 becomes available on the Z.  However, the stock ROM contains bloatware that I really wanted to do without.

Rooting allowed me to remove the bloatware (courtesy of Titanium Backup, although other adb-ish methods exist).  It also allowed me to add some additional functionality, like being able to power-on the screen by pressing the touchpad button vs. pressing the power button.

So that’s all well and good.  But does that alone make me an advanced Android user?

Not exactly, but having delved into adb and manually restoring my SMS history and various app prefs via the adb shell – yes, I think I’m more advanced than your average user, and probably half-way to being as advanced as the guys who wear a different ROM every day and like to flash radios.

A nice side-effect in this adventure is that my phone is running faster than before.  Same ROM, but I ended up having to wipe data and perform a factory reset after the root process left my phone in a constant boot-loop.  Blessing in disguise that was.  Hopefully it offsets the 5-hours-of-sleep price that I had to pay.

My future is (apparently) here; HP TouchPad added to the stable [updated 02/25/12]

As the title says, my WiFi network is now playing host to a 16GB HP TouchPad. And maybe it’s just my tablet newbie-ness, but I’m not getting what all the fuss is about re: thickness.

Granted, my Fujitsu pen computer (whose location is now unknown…) is probably closing in on 1-inch of girth. But looking at the TouchPad, I’m convinced that a thinner device might still be comfortable to hold but I can’t imagine that it would be any more comfortable to hold.

Now I know that HP wrote off the TouchPad hardware for a number of reasons – not just an inability to compete with iPad on the thickness front – but personally I think that the “thin-is-in” mantra is just more good marketing being thrown our way.

Anyhow, on the software front I can say that webOS isn’t as smooth as Android, and most definitely can’t hold a candle to iOS. But if you read a previous article you’ll discover what I find most alluring about webOS, performance issues aside. I’m currently in the process of adding patches to make the interface that much more snappy, and the major project at present is to enable streaming of my network video and TV shows. DLNA (or uPnP) is the name of the game here, and it’s requiring a certain amount of synergy between client and server that I haven’t quite mastered yet.

But so far I’m relatively content. More later.

[update 2011/12/16]

So I’ve had the TouchPad running for almost two months now.  And like most people’s TouchPad experiences, the road hasn’t been entirely smooth.

It all started when I tried to do the initial setup of the TouchPad while tethered to my phone’s WiFi hotspot. The tablet kept complaining that it couldn’t reach the HP servers.  Not knowing if this was an HP issue or a carrier issue or what, I didn’t think much else of it.

I had the same problem using my main WiFi network at home, but again, I figured maybe the HP servers were overloaded.

Many attempts later, I finally completed the setup.  And my main problem was spotty WiFi performance.

I posted a thread over at forums.precentral.net (now webosnation.com) detailing the problem, so you can head over if you want the juicy details (and an idea of how many other TP users have comm. issues).  The Coles Notes version: I had no problem accessing my intranet resources over WiFi, but browsing the interwebs at-large was a hit-or-miss affair.

As a result I finally settled on setting up an Apache forward proxy instance, and considering that the TP tends to “live” at home, this solution has proven acceptable.

So what’s my almost-two-months impression of the tablet?

Truthfully it’s getting the intended job done.  I have to admit that there are some usability issues related to the browser (which, in general, I knew to have some issues before ever joining the webOS camp) – most notably, accessing Hotmail requires some patience. But for the most part it’s quite enjoyable, and having Flash makes things very nice indeed.  That I’ve had no issues with Flash videos running fullscreen up to 720p – added bonus.

So I tend to use the tablet mainly for browsing, and this may involve logging into my Google account via the browser and catching up on Google Reader news.  Or I may surf Engadget.  Or CNN.  Or whatever.  It works, and it works well.

I’ve also taken to setting up a Google account specifically for family use, and this account is in fact linked to the TouchPad.  Now, you may recall some concerns I had about a house guest being able to pick up the tablet and read personal information.  But I figured… the main point of this “family” Google account is to setup a synced calendar.  This is no more private or public to a house guest than the calendar hanging on the fridge that we (attempt) to use to track events of relevance to the family.  So the privacy concerns are somewhat moot.  Add in the ability for said Google calendar to sync across the TouchPad, my phone, and Shelly’s phone – automagically – and you have an appealing organizational tool.

Granted, Shelly has asked me more than once about these calendar entries I keep inserting into her calendar… but that’s beside the point 🙂

So for web browsing and family organization, the TouchPad is useful.  Whatever about media consumption then?

I talked previously about DLNA, and I’m happy to say that the combination of bHome and TouchPlayer and PS3 Media Server results in a (mostly) enjoyable experience of viewing network-stored videos on the TouchPad.  I say “mostly”, because sometimes it takes a few finger-taps in bHome for TouchPlayer to actually start playing the video, but usually it just works.  TouchPlayer has some kinks that need to be worked out – most notable a less-than stellar scrub feature – but the ability to play my MPEG2, Windows Media Video and DivX vids on the TouchPad without real-time transcoding?  Priceless 🙂

So am I pining for an ICS port on the TouchPad?  It would be nice to play with, but from what I’ve seen of ICS, it looks a lot like the Honeycomb experience that I already pooh-pooh’d on a tablet form-factor.  Sure, the apps must be fantastically wicked awesome, but I’m quite happy with the fact that I can pick up the TouchPad, get a specific task done, then put it down without feeling obliged to interact with apps just for the sake of interacting with apps.

The web is the OG “app” my friends.  You bettah ask somebody!

[update 2012/02/25]

Just wanted to say that I’m now rocking ICS on ye olde TouchPad. O still think that WebOS wipes the floor with Google’s offering, but I just can’t deny the: polished state of ICS vs. WebOS; the mountain of apps that is Google Market.

Yes yes yes… I know that I wrote previously stating that the web is a great alternative to mobile apps. But there are just some things that a website simply can’t do (at least on a tablet) – like connect to my servers using RDP.

I still think the card metaphor of WebOS is light-years ahead of what any other tablet OS has to offer (save perhaps Blackberry’s PlayBook OS, but we all know where that got its inspiration from…). But… WebOS is struggling for developer attention, Android isn’t. And it shows, both in the available app catalog as well as in the OS itself.

It’s a shame really 😦

Me <3 Opera Mobile

So I’ve been doing some work off-and-on on a mobile version of the site I use to browse/play music on my home network. I’ve wanted a mobile-optimized version of the site for some time, and a recent development with my SHOUTcast streaming client of choice has made this project more of a necessity than a curiosity.

Critical to the operation of the site is the ability to touch-scroll various regions in the page. That, and the ability of the browser to support HTML5 Audio in the MP3 format. And so far, I’ve only found Opera Mobile to be worthy of solving the HTML5 Audio part of the equation while also remaining my mobile browser of choice.

However, I was having no luck with the touch-scrolling part of the equation. Many mobile browsers seem to have a problem handling straight-up overflow:scroll, and even the iScroll Javascript library wasn’t solving my particular flavour of problem. And what was working was working at a horrible pace.

Then I happened to notice that a manual update for Opera Mobile was sitting in my Android Market queue. Among reported changes was an update to the core (or engine) that the Android version of the browser was using. And wouldn’t you know it – upgrading to this version solved all of my touch-scroll issues, and performance is about as snappy as it is on the desktop Opera Mobile emulator.

So colour me happy. Now that the site is functional, I can work on prettying it up and adding gee-whiz features 🙂

Me <3 jQuery

I’m one to scoff at development tools/libraries which purport to make my like easier. Call me a masochist, but something in my head associates “easy” with “anybody can do it”.

I’m also one to get predictions horribly wrong, and the camps that I choose to align with (most notably in the TV sci-fi genre…) have been been known to get beat down by a difference of opinion or a lack of general interest on the part of society at large.

So it was that I heard of Javascript libraries like Prototype and jQuery, but I never paid them any mind. Big mistake. Having seen the latter library mentioned on all sorts of career-development sites, I decided to take a closer look.  And the result, I’m glad to say, is that I’m quite impressed and very likely to rely heavily on jQuery in the future.

It’s not that jQuery lets me do things in Javascript that I couldn’t do otherwise. Rather, jQuery lets me take mountains of code that performs some function and replace it with one or two lines which perform the same function. It really amounts to a shorthand version of Javascript, such that you still have to know what you’re doing in JS before you can use the shorthand.

Admittedly jQuery also lets you do cool things like perform animations. But from somebody who has written my fair share of Javascript animation functions, take it from me when I say that making a simple jQuery call to animate an element is a welcome relief, particularly when you have to consider browser inconsistencies.

So that’s it then – I’m adding jQuery to my recent spate of new undertakings.

OAuth 2.0 and Latitude API [update: it works!]

So my smart thermostat has been doing its homework and keeping itself abreast of new developments.  I’ve been tweaking the automation code and adding bits of logic to accommodate my particular nuances.

You may recall that one of the most important features of my setup is an ability for the system to automatically determine home/away status.  This is based on Bluetooth detection; and while I’ve still to add a large antenna to extend the detection range, I’m also acutely aware that this method of determining home/away status will always be reactionary vs. predictive.

As usual, the Wifey Factor(tm) is playing a critical role here.  A comment was made recently – well, a question actually – as to whether the HVAC system knows when we’re on the way home so that it can start heating/cooling the house automatically.

Admittedly, such a usage of the system leans more on the side of comfort than efficiency.  And I’ve already made a concession to comfort by setting a small(er) offset between home/away temps.  (IIRC, it’s something like 1C in cooling mode and 1.5C in heating mode).  I’ve also approximated a “should be getting home soon” decision process by setting evening programs which differ from the daytime programs; ideally, you’d really only need an overnight program and a not-overnight program, and the occupant detection would determine the home/away offset.

But I digress. In an effort to solve this little problem while also furthering my understanding of web-based technologies (ie, the Cross-Pollination(tm) effect, search the blog 🙂 I decided that the answer may lie in utiliizing the Google Latitude API.

We already use Latitude for tracking purposes, so the privacy concerns have been addressed already.  The premise, then, is simple – my automation system polls Google, gets our locations as reported by Latitude, and then does some calculations to determine if we’re on the way home.

Simple in practice, yes.  More difficult in execution, but only marginally.  One of the unknowns here was OAuth, which serves as Google’s (and many web services’) API authentication/authorization method.  I’d heard about OAuth, but never had a need to look into it – either for work or personal means.

And that’s a shame, really. Anyhoo, OAuth is done and done and now I’ve got my automation system pinging Latitude, calculating distances, and producing raw-ish data that I’ll later analyze to determine the most suitable “peeps are on the way home” algorithm.  I may even use it to supplement the Bluetooth detection method, which is sometimes hit-or-miss in lieu of that big antenna…

One of the more challenging aspects has been deciding what to do with outlier data points.  Latitude has this habit of sending you off 100’s of kilometers in some random direction for no apparent reason; we certainly don’t want the automation system going bonkers by thinking we’re flying in at Mach 5 from some random city in the US. And while I’m sure that there are many statistical methods that one can use to clean a data-set, such an endeavour would be secondary to the purpose of this project.

So to that end I’m currently using a “line of best-fit” (aka the Least Square Method) to fit a straight line to my Latitude data points.  It doesn’t completely solve the outlier problem, but it lessens the impact somewhat.  Anyhow I’ll pore over the resultant distance calcs over the next few days and…

… I’ll post back when I’ve got useful performance data.

[update 2011/09/15] Seems to be working well!  Check out the thermostat post for info.

The Big Social Three ( != Facebook+Twitter+”Google+” )

On the way into work this morning, while stopped at a red light, a billboard inexplicably caught my attention.  It wasn’t particularly creative, and I could say that it was even a little elementary in its design and message.  Nonetheless I read it, and my eyes finally rested on two little images appended to the bottom of the ad:

One image was the Facebook icon.  The other, the Twitter icon.

As a recent inductee into the Google+ membership, I wondered if the day would ever really come when the little “g+” icon gets added to that ubiquitous twosome.  And on further thought, I decided that it probably would not – at least not to the same degree – and that it probably wouldn’t want to be either.

Facebook and Twitter had a definite head-start on Google+ in the Social Media space.  Now, you can look at Apple’s iPod, and probably Microsoft’s Windows Phone 7 (in a few years) and say that they were behind the curve but quickly rose to relevance (or dominance, in the case of Apple).  The primary contributors to their success: innovation and creativity in the case of Apple, and deep pockets and existing horizontal market penetration (XBox Live, Office, Windows) in the case of Microsoft.

Certainly one can argue that Google has some amount of innovation, creativity, market penetration and deep pockets at its disposal as well.  Even so, I would bet that the absence of a pervasive “g+” icon is all but guaranteed in the physical world.

Firstly, I think that Google+ is intended to target a different demographic than Twitter, and certainly Facebook.  While Facebook is garish and narcissistic, and Twitter is a sea of homogenous 140-character posts, Google+ appears to be positioned far more modestly. It’s a tool for an online presence, yes, but a public/private one – much like we have public and private lives.  Then, it’s a tool for organization and managing that presence – exemplified by the “Circles” feature – as well as seamless links into other properties like Picassa.

In my estimation, the result is that you’re more likely to cultivate your Google+ presence than you would Facebook or Twitter.  I mean, let’s face it – the type of person who’s amassed an army of “friends” on Facebook isn’t likely to make the jump to Google+ just to re-amass the same army.  But.. anybody who’s tried to sort the wheat from the chaff of never-ending wall posts and status updates will likely appreciate Google+’s organizational features, and would make the jump to Google+ if only to get down to the business of bringing order to chaos.  The best analogy that I can think of is: Facebook/Twitter = raves and clubs, while Google+ = dinner, Starbucks, cocktail lounge, family gathering, etc.

The second reason why the g+ icon will never become ubiquitous in meatspace is because, well, Google already owns online search and advertising.  Chances are that somebody reading a billboard will be more apt to “google” the company before they ever go directly to Facebook or Twitter and look for the company.  They may even use Google search to find the company on Facebook and Twitter.  And if you’re using a Google product to perform the search, why does Google need to dilute its Google+ brand by playing also-ran to Facebook and Twitter?  It can continue to do what it does best – offer relevant alternate search results and splash advertising beside the results.  In this sense Google has the lead and Facebook/Twitter are playing catchup: that is, Google is the one that’s synomous with “online web” and Google is the one that’s setting about the task of organizing it (and critically, monetizing it).  Facebook in particular is still cultivating a walled garden, and Twitter – while supremely useful in the worlds of trending topics and celebrity gossip – has design limitations which limit its usefulness for much else.

Google apparently has the bit between its teeth with regards to social media, such that Google+ has become an important product within the Googleplex. But it’s not trying to build a Facebook clone, as the cordoned-off nature of Facebook runs contrary to Google’s core business practices.  Rather, I think Google+ is a big player in the evolution of Google’s strategy – which is to make the online world navigable, relevant, and to bring it closer to home.  They’re not trying to own the web, building some alternate ala Facebook’s strategy.  Facebook needs to plaster its blue “f” all over the place in order to drive traffic to itself.  Meanwhile, Google’s doing the driving – to Facebook and Twitter, yes, but crucially to the rest of the resources strewn across the web – not least important of which are the authoritative sites for many of the companies that have a mere shadow presence on Facebook.

A word of caution for Google though: don’t push too hard with Google+.  Google is great at getting its products “to market” without really advertising them.  And because of this, Google rarely seems desperate and they rarely seem as though they’re trying to sell you something.  Any company is capable of being agressive (and enjoying the fruits of that labor, like antitrust investigations and privacy lawsuits) but few are capable of being truly innovative and sticking to a philosophy that resonates with human nature.  Google is uniquely positioned to do the latter.  Don’t blow it.

What. The. Heck. (aka Power Gremlins)

There’s some kind of laptop voodoo going on in this house.

My Acer netbook has been deader than a doorknob for the past 2 or 3 months. Shelly was using it and, apparently it just turned itself off and that was that. I tried everything that I could think of: tried running it without the battery installed, running without any accessible internal cards removed, running with the hard drive removed… nada. Absolutely no lights would illuminate on the thing, not even the battery-charging LED.

And the likely culprit given these symptoms – the mainboard – would be as much to replace as the computer was worth.

Now, I don’t know if I ever wrote about it, but my previous Dell laptop also suffered a similar power-related illness, only to revive itself after some time. That laptop got itself to a point where it shut itself off, and trying to power it back on would illuminate the power LED for a few seconds, followed by an audible click, and the LED would extinguish. What followed was a complete teardown and rebuild, but the problem persisted until…

…one day the laptop just started working again of its own accord.

Eventually it started acting up again with its old shenanigans, but the point is that it too exhibited power issues long before this netbook was ever conceived.

Also of interest is that, around the time of this first odd behaviour of my Dell laptop, my alarm clock also had interesting fits of display hieroglyphics… only to go back to normal around the time the Dell “fixed” itself.

Now, my immediate thought at the time was some sort of voltage issue with the house mains. And yet, nothing else was exhibiting problems. And even with the most recent incident involving the netbook, the power was disconnected when Shelly was using it.

Which isn’t to say that there wasn’t some previous power-related damage which finally caused the machine to give up the ghost. But… how do you explain its current resurrection?

So I’m at a loss. And the next question is, will the netbook give up the ghost again? Time will tell I suppose.

DP and HTML5 – strange bedfellows

So a few days back I got my hands a bit dirty with HTML5’s CANVAS tag.  And some number of weeks ago I got into the history object and HTML5’s improvements to that.  Today I got my feet a little wet with the AUDIO tag.

It’s an interesting concept, really.  This most recent journey has been within the context of the home audio system, and I was just just just remarking to myself that development was at a virtual standstill for a number of months – and here it is that HTML5 is enabling a new coding push with real-world usability.

Well, that’s the theory.

The truth is that HTML5 and embedded media consumption are themselves strange bedfellows, and as a result, I find myself in the same position in my relationship with HTML5.

So forget about the abstracts.  My music collection is overwhelmingly encoded in the MP3 format.  And when I say overwhelmingly, I really mean completely – with the exception of perhaps 20 tracks, vs. the other 35,064 which are MP3’s.  The problem with MP3 – besides its lossy, yesteryear compression – is that it’s not in the public domain.  This doesn’t really mesh well with HTML5 – specifically, the AUDIO tag of HTML5 – which wants to work with open standards and hence is at odds with MP3.

So how does this affect me and my home audio system?  Glad you asked.

You may recall that the system consists of 2 physical zones, 4 general-purpose streaming zones and one special-purpose streaming zone.  It’s the general-purpose streaming zones that I use extensively when I’m not at home – ie, at work or in the car.  And despite advancements in the manner by which my intranet resources are made publicly “available”, the real truth is that using the streaming zones has always been a two-part affair; part one is to interact with the system using a browser, part two is to connect to the zone using a program on the client device.

Granted, quite often I can eschew part one, as the zone is loaded and good-to-go as soon as the client connects.  But one thing that really dogged me incessantly – besides security considerations that I won’t go into here – is the absence of any ability to play a single track without having to leave the web browser.

Yes, I’m talking about a desire to implement an audio client within the browser itself.

Now, Flash is capable of doing this.  And while Shelly’s phone doesn’t support Flash (argh), the truth is that Flash isn’t completely suited to the next logical step in this thought process – which is, replacing the streaming zones with a webpage and embedded player.  I mean, I could code a Flash app, but trust me when I say that that’s not going to happen.

But would could happen – and indeed, what I really, really, really want to happen – is to code an HTML5 “app” that can do this.  This would actually solve all sorts of niggling problems, like the issue of transport control that I talked about here.  The truth is that it could actually serve as a bonafied mobile music app, optimally designed for the small screen.

It could, if… MP3 and HTML5 played nicely together in all modern browsers.

And that’s the problem I’m having right now.  I’ve worked out the interaction, I’ve figured out that the current home audio system can easily support the types of XHR calls I’d need to make, I’ve got some working knowledge of JSON… heck, I’ve even got a working implementation now of an embedded player for playing single tracks.  But to make this all work I need HTML5 and it’s DOM-accessible AUDIO element, and I need cross-browser support of MP3 files via that same AUDIO element.

Desktop support is sketchy – as is mobile support.  I find it strange that Opera on Windows doesn’t support MP3 but Opera on Android does…?  And the native Android browser is supposed to support MP3 but it actually doesn’t.  <sigh>  The truth is that there’s no point burning the proverbial midnight oil on an HTML5 music player app for my audio system if support is hit-and-miss – across the devices that I actually use.

So as much as I’d love to cuddle up close to HTML5, the unfortunate truth is that it’s playing hard to get.

Leave it to Apple

I’m waiting for the first company to come along and seamlessly integrate all of your mobile and media devices. And while I still think that Apple’s living room play needs some work, I have to admit that they made big strides in the direction of data ubiquity with today’s iOS5 and iCloud announcements.

Truthfully – I have to agree with Steve’s comments about obliterating the notion of a filesystem from the average user’s lexicon. Such a thing really should be the domain of power users and server administrators.

Although… I’d prefer a standards-compliant solution rather than entrusting Apple with all of my personal data, but that’s beside the point here. Again, it’s the seamless movement and  availability of data across multiple devices that I think is kewlio.

But… yes, there’s always a but… I see one glaring problem.

While it’s great that I may have multiple devices that can all access the same data such that that data appears to be saved locally, I think that my perspective as a family man (or at least, a person in a relationship) leaves me wanting more.

One of the questions that I get asked often by the Mrs. is “why she doesn’t have the latest photos that I’ve just taken?”. Now, at first glance, it would appear that Apple has a potential solution to this problem; put us both on iPhones (sorry DSLR) and Bob’s your uncle (cloned Apple ID issues notwithstanding).

But that’s a fairly large caveat, having to exclude my DSLR… and any non-Apple product for that matter. Even more of an issue is, does Apple allow me to determine what flies into my iCloud photostream, instantly appearing on the wifey’s phone?

And even if they did, I’m then back to having to introduce some semblance of micro-managing my photos. That’s a large part of the seamless equation that just got cancelled out.

As a family man, you quickly realize that the notion of “me” takes a back seat to the notion of “us”, such that pretty much all of the memory-gathering that you do is for the benefit of the family unit and not your own personal (nefarious?) means. Even issues of music become group debates, at least with the significant other, unless you make a point of walking around your abode rocking white earbuds. In which case one has to wonder what the value is in being able to seamlessly share your iTunes library across 10 other devices, when only one of them is likely to serve as you portable music provider.

The case for Apple’s iCloud services is certainly stronger when you start talking about the stuff that falls under the traditional domain of the cloud – namely, office productivity and document management. But the media part of the puzzle is fraught with more variables and I just don’t think that Apple has solved that equation yet.

It may be that that particular equation has no solution.