Jan 12 2010

10 Things I Love to Hate about Android

My latest article for developer.com.

Put on your favorite self-pitying emo music and get ready for some developer frustration. I’m running down the top 10 things I love to hate about Android.

Link


Nov 15 2009

Announcing the Android AR Kit

At long last, I’m happy to announce that the Android Augmented Reality kit is available on github.  Included in the code is a sample application using an API provided by the fantastic guys at foursquare.  The demo is set-up for the screen on the G1/MyTouch.  If you’re running at a different resolution you’ll need to modify some code and build it yourself.

Please feel free to clone, fork, and make it better.  Right now, at least on HTC’s MyTouch, the cpu only has enough power to run the numbers on 10 points at a given time.  I’m in the process of writing up a tutorial about using it.

Stay tuned here for more.


Oct 24 2009

A Rational Argument Against FCC Regulated Net Neutrality

I’ve largely tried to keep my somewhat conservative politics out of this blog.  Net Neutrality, however, is a topic that I think safely crosses the lines.  This topic has hit the discussion boards with a vengeance thanks to John McCain’s recent stupid, and probably lobbyist driven, bill.

Without further qualification let me just come right out and say it:  I’m a professional software engineer and I don’t support laws regulating Network Neutrality.  Before you call me an idiot, corporate shill, or anti-free speech Nazi (all things I’ve been called on message boards in the past) let me explain why.

The Idea of Net Neutrality

The concept of network neutrality is a good one.  Companies should not be able to set up a ‘fast lane’ for traffic that benefits their own business over others’.  For example, Comcast shouldn’t slow the packets coming from Hulu.com.  This concept is a fantastic one.  The Internet has thrived over the past few decades precisely because it hasn’t been controlled, prioritized, or regulated in any meaningful way. Anti-competitive monopolies are bad for everyone, this is a no-brainer. So to be clear, I fully support the concept of Network Neutrality.  How we implement this vision, on the other hand, is where the advocates and I disagree.

The Road to Poor Regulation is Paved with Good Ideas

Really, the disagreement I have with the Net Neutrality zealots is one of theory vs. practice.  We all agree that network neutrality is a good thing, we just disagree with how it should be practically applied.  Most NN folks want to hand regulation of this aspect over to the FCC.  So, to look past the immediate, lets look at the communication channels the FCC currently regulates…

Cellular Spectrum: The United States has, hands down, some of the worst cellular coverage of any first world country.  A near monopoly is maintained by AT&T and Verizon which leads to poor coverage, slow wireless bandwidth, and constantly stifled technology  (I’ve seen some of that first-hand, where carries kill a mobile phone technology because it competes with a service they want to provide).  The US has geographical issues making cellular coverage a difficult proposition, but the FCC contributes to the issue as well.

FM Radio Spectrum: Another near monopolistic communication channel.  FM Radio, is, for lack of a better word, crap.  But don’t trust me on that one, ask anyone who likes, produces, or works with music.  Further, the FCC actively censors the content of both the Radio and TV spectrum.  I’ll say that again.  The FCC regulates the content of both the Radio and TV spectrum.

There are more examples of the incompetence of the FCC but I’ll save you from a detailed examination of them all.  But I’d posit, based on the above evidence alone, that the FCC both actively regulates the content of their appointed communication channels and stifles our technological innovation.  These two qualities are antithetical to a thriving internet culture and the internet’s health as a whole.

BUT, you say, We, The People, can Control the FCC!

Even if we give the FCC a very tight mandate for regulating the internet, the fact remains that the FCC will have to install comprehensive monitoring tools to verify claims of violated Network Neutrality.

Once the FCC has these monitors in place, I promise you, within 5 years, a senator will task the FCC to monitor the internet for something related to children.  It’ll be called the ‘Protect our Children’ act or some such nonsense.  It’ll be the first step towards censorship of the internet.

At the same time, AT&T, Verizon, and Comcast will pump tens of millions of dollars into lobbyists who will sneak loopholes into fast-tracked security-related legislation.  These loopholes will allow the major telecoms to violate Network Neutrality rules in any number of ways, and, it will turn the bill in their favor to maintain their revenue channels.  For a modern example, look no further than the RIAA and MPAA.

Think Long Term, Please!

Once we allow the FCC to regulate the internet even in this small capacity, we open the door for a host of legislative abuses.  We were able to beat back attempts to protect our children from the internet by censorship before….how will we continue to do this when censorship can be introduced by a simple modification of the FCC regulatory powers?  Once the FCC has it’s hooks heavily into the internet, we won’t be able to pull them back out.

Alright Negative Nelly, What’s the Solution Then?

There are several non-regulatory solutions to this problem.  Most of them involve breaking monopolies and encouraging competition so when a broadband company does violate the tenants of Net Neutrality customers can switch providers.  I’ll get into the solutions in another post because, if you’re reading this far I’m impressed.

The bottom line is thus:  If you’re in favor of government regulated Network Neutrality, you don’t have to agree with me (in fact I’d rather you didn’t); but I implore you, consider the long term ramifications of what you advocate.  Consider that the internet will, eventually, become like every other communication medium the FCC is tasked to regulate.


Oct 14 2009

Augmented Reality on Android prt 2

My latest DevX article is up.  You can find it here.


Oct 13 2009

A Chink in the Developer’s Armor – or how I learnd to stop fighting and love the droid

Every time I read a story like one of these I put on my imaginary tweed jacket and take a smoke from the corn cob pipe I don’t have.

More than one developer has told us that this isn’t just a matter of debugging their existing application to ensure that it works on the various handsets. They say they’re going to have to build and maintain separate code for various Android devices. Some devices seem to have left out key libraries that are forcing significant recoding efforts, for example. With others, it’s more of a mystery.

Over the past few years I’ve written some pretty gnarly code on some very gnarly mobile platforms.  Like many engineers, overcoming three impossible things before breakfast is pretty much the only thing that gets me out of a comfortable bed every third morning before noon.  Android, in this case, doesn’t disappoint.  Its development landscape is fractured, multifaceted, complex, and hard to deal with on every level, and we’re only on the fourth version.

This, my mobile developing friends, is exactly what keeps us in business.  Mobile software is difficult.  Have code that only runs on one platform but not another?  Easy: classloaders and a well constructed factory.  Different drawing behavior and different screen sizes?  Cake-walk, dynamic screen resources, a very clever designer, and a good build system.  Compatibility issues?  Of course, these are nothing that hasn’t been solved a dozen times before.

Where there’s difficulty there is opportunity.  Where there’s opportunity, there is money, a chance to gloat, and the veritable lack of attractive women.  Will Android go the way of Sun’s J2ME?  Who cares.  If it does, my life gets easier because I don’t have to keep coding at a third grade level (curse you Java ME).  If it doesn’t, I get to write tools to help people make sense of a chaotic environment.  Either way, my life stays interesting and my bank account has more than fluttering moths in  it.

The bottom line is this:  Mobile software is still hard.  It’s not for everyone.  You spend most of your time forcing every device play in the same sand-box, and you build tools and toys that make this job easier.  You piles of time telling very smart people, clients and friends, why what they want to do on a mobile device is impossible.  It’s a write once debug everywhere mentality I wouldn’t trade for a web developer or mysql job any day.

If it were easy, everyone would do it…and no-one could get paid for it.


Oct 5 2009

Quick, and very dirty, Android Development Trick

In my main Activity (or any of them for that matter) I always include the following line:

public static volatile Context ctx;

Then, when the Activity is created (in onCreate), I set it to the following:

ctx = this.getApplicationContext();

This does three things.

1) It means I have easy access to a context pointer that won’t leak (if the device rotates or the original Activity is destroyed)
2) It makes anyone who knows what they’re doing die a little inside when they look at my code.
3) It means I don’t have to lug around a context pointer as a parameter whenever I need one.  I just make a call to “MyActivity.ctx”


Sep 29 2009

Head scratcher

I have to shake my head and sigh when I read posts like this one over at gizmodo:

It’s Tuesday and the Apple Store is down — but only for North America at the moment. So hold tight, start sifting through the latest Apple rumors and check back with us at 0830 New York time when all (or nothing) will be revealed.

Their store goes down for a few minutes and the tech blogs spin into wild speculations.  Apple’s PR is second to none.  This is literally insane.


Sep 21 2009

Snow Leopard actually costs 130$ if you have Aperture 1

Aperture 1 is not listed as ‘unsupported software’ on Apple’s List

Yet when I launch Aperture OS X infuriatingly alerts me that Aperture cannot be opened with this version of the operating system.

Worse, all my photos are locked up in Apertures photo library system, so switching to an alternative is impossible without finding some migration tool.

This is incompetency that boarders on evil.  I cannot get to my photos without giving Apple an additional 100$  Alternatively, I could spend a few hours downgrading my system just to get my photos out of it.  Or I could toss off a frustrated post and get on with my day.

Arg.


Sep 21 2009

Evolving

Designer’s are starting to fill the holes in Android’s UI.
More Please!


Sep 20 2009

‘Don’t be Evil’ does not a good phone make

Analyzing why the iPhone is so widely accepted and Android is not is, in fact, rather simple.  The difference boils down to control.

Apple applies dictatorial control over the software, hardware, and even what applications are allowed to run on the phone.  While, on one hand, this is really frustrating for developers, it is, on the other hand, consistent and simple for users.

Google, on the other hand, hands massive control to both hardware manufacturers and 3rd party software developers.  In return, they get poor hardware integration (expressed in slow user feedback, unresponsive touch screens, and hideous battery life) Further, their app store is a mess of incomplete, crashing, unhelpful applications. (In all fairness, however, Android is actually improving)

This is going to come as a shock to some of you, but the internet at large is very different from the mobile phone industry.  So, Google, sharpen your pencils and take this one down: What works for the internet will not work for Android.

Apple has caused huge amounts of strife for their developers.  Much ink has been spilled in anger and frustration over their policies, but, and this is important, the developers eventually come back.  The iPhone is where the users are.  Where there are users, there is the potential to make money.

So, Google, it might be time for a new montra where Android is concerned.  “Don’t be evil, except when it benefits those who buy and use our phones.”