Contact Me
The Passionate Programmer: Creating a Remarkable Career in Software Development
Rails Recipes

Switching to Android

July 11th, 2010

Instead of upgrading to the iPhone 4, I decided to get a Nexus One from Google. I’ve had it about a week so far and I’m happy with it.. Some friends and colleagues have asked for my impressions, so here is a brain-dump of the highlights so far:

  • Speech recognition is actually useful. Big surprise here. I can tweet, search the web etc. with minor edits to my dictated text
  • I can write applications and put them on my own phone easily at no cost
  • The API is (for my brain) much more straightforward than working with Cocoa. Maybe it’s the years of experience but I also strongly prefer working with Java over Objective-C
  • I don’t miss the iTunes store. I was worried about that, but Amazon’s mp3 purchasing service is just as convenient (and you get mp3s instead of DRM’d media by default)
  • The UI is clunkier and uglier than even the first iPhone
  • I’m not finding myself missing any significant apps. There are some minor ones I wish I had but I don’t but it’s no big deal
  • Wifi tethering (Android 2.2) is a good thing
  • I’ve never met an on-screen keyboard I didn’t hate. Android is no exception.
  • Kelly has an iPhone 4. We are traveling together. Everyone, everywhere asks her “Is that the new iPhone?”. Nobody anywhere asks me about my phone. (Actually one person did yesterday but I think she felt sorry for me not having a phone as fancy as Kelly’s)
  • I thought the idea of widgets on the home screens would be faddy and lame (like it is in most cases on desktop OSes). It’s actually pretty useful.
  • The Android message bus architecture makes some really neat system-level things possible from 3rd party apps. For example, I have a little app called Handcent SMS which improves on the built-in SMS functionality of the phone. As far as I know this sort of thing isn’t possible on the iPhone and i appreciate it as a user and as a developer.
  • I had a Google IO phone a year ago and the Android ecosystem was barren in contrast to what I’m seeing today. That’s a huge change in only one year
  • I can now differentiate my ring tone from that of everyone else around me in a public place :)
  • I don’t know of a good way to download video to the phone. I like to watch television shows and movies on my phone while traveling on airplanes. iTunes makes that trivial for the iPhone. Fortunately I have an iPad, but it’s always nice to have a backup.
  • The Kindle app is a wonderful thing. Just like it is everywhere else. Now to sell my actual Kindle. Anyone want to buy a first generation Kindle?
  • I see Java exceptions more often than I would expect (java.net.UnknownHostException, for example). It’s kind of embarrassing when it happens, but being a Java developer myself I’ve actually found it to be much more useful than the app just crashing. Sometimes the exception class thrown gives me a clue to help diagnose the problem. That makes me feel smart. I don’t think my parents would appreciate this feature.
  • The background/multitasking stuff is nice.
  • It reminds me of switching to desktop Linux. Linux is usually uglier and less usable than its commercial rivals. Android is similarly ugly and slightly less usable. I also find Linux more exciting. You can get deep into its guts. You can customize it to your heart’s content. You can program it to the limit of your capabilities (as opposed to the limit of its EULA). And it’s weird, in both a good and a bad way. Unlike switching to desktop Linux, I’m often finding myself saying: “Oh, nice. I wish the iPhone had that.”

All that being said, I love my iPad and if I didn’t have it I might not have been able to so easily let go of the last remaining Apple mobile device I had available to me. If anyone wants to send me an Android tablet I’d gladly evaluate and review it.

XML and J2EE: Commodity Skills

January 10th, 2007

In My Job Went to India, I talked about using supply and demand as a gauge with which to make decisions about which technologies you should invest in as a software developer:

The offshore market has injected its low-cost programmers into a relatively narrow set of technologies. Java and .NET programmers are a dime a dozen in India. India has a lot of Oracle DBAs as well. Less mainstream technologies are very much underrepresented by the offshore development shops. When choosing a technology set to focus your career on, you should understand the effects of increased supply and lower prices on your career prospects.

As a .NET programmer, you may find yourself competing with tens of thousands of more people in the job market than you would if you were, for example, a Python programmer. This would result in the average cost of a .NET programmer decreasing significantly, possibly driving demand higher (i.e., creating more .NET jobs). So, you’d be likely to find jobs available, but the jobs wouldn’t pay all that well. The supply of Python programmers might be much smaller than that of .NET programmers with a demand to match.

If the Python job market were to support noticeably higher prices per-programmer, additional people might be attracted to supply their services at this higher price range, resulting in competition that would drive the price back down.

The whole thing is a balancing act. But, one thing seems certain (for now). India caters to the already balanced IT services markets. You don’t find mainstream Indian offshoring companies jumping on unconventional technologies. They aren’t first-movers. They generally don’t take chances. They wait for technology services markets to balance, and they disrupt those markets with significantly lower per-programmer costs.

Yesterday, one of the Rails Core guys passed along an interesting link to and article called Who’s Searching for XML? by XML noteworthy, David Megginson.

David used Google Trends to compare and contrast where searches for certain technologies were coming from geographically. Have a look at a few:

Now look at these:

As David says, it’s totally unscientific. But if I were a young programmer trying to figure out where to invest my time, I might spend just a little of it on Google Trends researching who I’m likely to be competing with.

2007 Technology Predictions

December 18th, 2006

So, it looks like I missed the submission deadline for sys-con’s now annual i-Technology predictions (sorry Jeremy!). I was just browsing the submissions that made it in, and the following separate post caught my eye: Yakov Fain’s Ruby on Rails Won't Make It in 2007 and Forget About AJAX.

It’s funny that almost every prediction Yakov makes is about an innovation not mattering, not being adopted, and not resulting in any real change to our industry.

I’m not sure what industry Yakov is in, but I’m glad the IT industry isn’t anything like what he predicts. If I had to live in a world like the one he apparently lives in, I think I’d be looking for a career switch.

Here’s my single 2007 prediction:

2005 started a trend that got stronger in 2006 and will explode in 2007: with tools and technologies like Rails and Ajax challenging the way a lot of us have been conceiving of the limits of internet technology and the software development process, the software development world’s leading edge will take a tangible, industry-wide step forward. Yakov and his readers will continue to not get it.