The Tebow Effect

I have never been a Tim Tebow fan or a Denver Bronco fan. Even when Tim joined the team, I still didn't like the Broncos. Both my inability to like Tim Tebow and my dislike for the Denver Broncos started when I was a child...

Dislike for Tim Tebow

When I grew up, I was a huge Alabama Crimson Tide fan, still am to this day. So if you were in the SEC and you were not Alabama, I hated you...unless you were playing out of the conference in which case I'd pull for any SEC team. (Inter-conference play usually ended up with me either pulling for Alabama or the team I disliked the least.) That being said, I've always had a hatred, a loathing if you will, for The University of Florida. Why? Well, they always seemed to win when I didn't want them to. Everytime Alabama plays them, to this day, I always expect a nail biter where Alabama, no matter how strong, could end up losing. That being said, my dislike for Tim Tebow isn't really even his fault. I mean, his Florida Gators beating my Crimson Tide back in 2008 didn't help but I couldn't take away from his ability to play the game. At the time, I just couldn't be a fan due to his team. Now that I've given my background for not being a Tim Tebow fan, what about the Denver Broncos?

Dislike for the Denver Broncos

Just like my love for Alabama's Crimson Tide, I grew up an Atlanta Falcons fan. What does this have to do with the Broncos? Nothing really but I enjoyed watching football with my dad and brother so I inevitably watched some Broncos football. My problem with the Broncos was I hated their uniforms. (I know...petty but I was a kid, cut me some slack.) Anyway, even when I did get past their jerseys all I ever heard about was John Elway. Every time I looked at John Elway, I saw a Marlboro spokesman in a football uniform. (Remember...thoughts of a kid here.) As if that wasn't bad enough, when he ran the football I saw the coordination of a three-legged horse with the speed of a one-armed paper hanger in a wind storm. I just didn't get it...what was so awesome about him? (Later, when I was old enough to actually understand the game, I have learned to respect John Elway's talent.)

The Tebow Effect

Now that you know I've never been a Denver Bronco fan or a Tim Tebow fan, what about Tim Tebow has been able to not only change my mind about him but also become a Denver Bronco fan?

  • Tim's love for God: Tim Tebow has no restraint when it comes to him vocalizing his love for God. Why is that important to me? Well, I too love God and I do my best to honor Him. When I see Tim Tebow's courage to mention a God many don't believe in even in the face of criticism, I am proud to be a Brother in Christ with him and I applaud his courage to openly speak about God the way he does.
  • Tim's ability: Tim Tebow is an athlete. He was on the All-American team in high school, won a BCS championship, he's been awarded the Heisman Trophy, he's now the starting quarterback for a team in the playoffs and the list goes on. (No matter who you are, you cannot say that Tim Tebow doesn't have one heck of a career and his NFL career has just gotten started.)
  • Tim's personality/attitude: Tim Tebow has an attitude that is magnetic. When everything is going wrong, he continues to give his full effort. When people are constantly down talking him and criticizing him, he continues to give his full effort. Tim Tebow does not give up and he doesn't care what you say, he knows what he wants and works to get it. You can only be around his "magnetic attitude" so long before you too are beginning to be affected by his unwillingness to give up.
  • ...

Conclusion

The purpose of this post isn't to be some Tim Tebow stat sheet, fan page or anything like that. The point I hope to make in this post is that Tim Tebow has taken me, a generational hater of his teams, and turned me into not only a Tim Tebow fan but also a Denver Bronco fan and while I'm sure his stats could eventually of won me over, I really think that it's his personality, winning attitude and love for God that got me. I'm excited to see what else Tim's career has in store for him and his fans, myself included.

A new look and a few updates

Well, I still have had a hard time finding/making the time to deliver you guys something useful on ThoughtSpark.org. To help light a fire under myself, I've decided to create a new look for the site in hopes of wanting to get more people visiting. Feel free to give me your feedback. Now, onto the updates.

Work (Nodeable)

At Nodeable we're doing some awesome things. We're right on the cusp of starting a private beta to let people see the progress we've made the last six months. Let's just say that the people who've seen what we're doing and where we're going are pretty impressed and excited, as are we of course. When we officially start private beta, start public beta or do anything else of interest, I'll make sure to update you guys. Long story short, we're heads down and this is part of the reason my blog content as suffered.

Open Source Software

While working at Nodeable, I've been able to contribute to two awesome open source projects:

  • Jclouds: A Java-based abstraction layer on top of many cloud providers
  • Python-based library for getting access to deep level CPU, process, disk, network, memory, etc. information like you get from top, ps and many other tools

Both of these projects are being used at Nodeable and both projects have great teams behind them. I hope to have real blog entries soon about how to use these two projects in interesting ways.

Since nothing of interest has really changed/happened in my personal life, I'll stop here...get back to work and hope to write you guys some interesting reads soon.

Python: 
Java: 

Long Time No See

Well, it's been almost 5 months since my last post. The good news is it hasn't been a lack of cool things to write about that's slowed my blog entry process. The bad news is I've had no time to tell you about these things. Seeing as there is too much to talk about right now, and any attempt to do so would end up badly, I'll just tell you that I will do my best to write regularly. I'd like to give you guys some cool uses of jclouds, a nifty library that functions as a wrapper for different cloud providers. If I've not written something in a week, bug me on Twitter: @jcscoobyrs.

Changing Jobs

Well, Friday (04/01/2011) was my last day at CollabNet, Inc. My reason for leaving the company is that I was approached to join a startup, Soba Labs, and I just couldn't resist. I really enjoyed my time at CollabNet. While I was there I worked with many amazing people, worked on some amazing things and I grew as a person and a software developer. I am grateful for my time at CollabNet and I have nothing but respect for them. I wish them nothing but future prosperity.

Since my first real day at Soba is Monday (04/04/2011), I can't say much yet. I know what we will be doing but I'm not sure I'm at liberty to say yet so I'll just update you as soon as I know it's cool and I have something to say.

I know I'm no longer an employee of CollabNet but I will still be building Subversion binaries for Mac OS X. Many of you might assume that since the binaries I provide are downloadable from CollabNet's website (http://svnbinaries.open.collab.net) that the work is a CollabNet paid/maintained thing but it's not. I build the binaries myself and will continue to build them.

Google Chrome Notebook Review (Cr-48)

Well, I was one of the lucky ones to receive a Google Chrome Notebook, also know as the Cr-48, from Google as part of their Google Chrome Notebook Pilot Program. Why am I getting to the review a month later than everyone else? Well, my Cr-48 arrived DOA. The screen didn't work and plugging into VGA resulted in a scrolling/unusable screen. Now that I have a replacement in hand, I'm using the Cr-48 as my daily system. (Read below to better explain this.) Below is my personal opinion of the Cr-48 and the Chrome OS, powered by the open source Chromium project, running on it.

Since the physical specifications and aesthetics are very well known, I'll not bore you telling you things you already know. Instead I'll focus on how Chrome OS and the Cr-48 in my daily tasks. The best way to start is to explain how I do development, and it's different for work than it is for my personal/open source endeavors:

  • Work: To perform what's necessary for my daily job, at CollabNet, I usually SSH to a development box that runs all of the necessary tools to do my development. I attach to a screen process, do development in Emacs and use a web browser.
  • Personal: For personal projects, I need access to code editors, IDEs, emulators and the command line for many utilities like compilers and interpreters.

For my work efforts, I can honestly tell you that the Cr-48 could be used as my primary device. The Cr-48 has a simplified shell (crosh) and provides an SSH client that I can use to connect to my development box. That's probably the most important link in this work development chain. Once I get SSH access and attach my screen session, I can hack/build/test/repeat and use my web browser to see the user-facing results. This happens N number of times a day and it can all be done via Cr-48. Where the Cr-48 begins to make me change my approach, or make me "compromise" is when it comes to collaboration. We use IRC and email for team communication. Since I use irssi for IRC, I can just resort to my screen session but, well, Chrome OS consumes the "Alt+[1-9]" keyboard shortcuts for the window management so I have to resort to using a different keyboard shortcut to quick access my IRC channels. While it is only an annoyance, and not a show stopper, it is painful as I've been using irssi for years. The last problem is that Microsoft Exchange is usable in non-Internet Explorer browsers, it's not very quick/intuitive. In the end, this last issue isn't really the fault of Chrome OS so I can't really use that as a complaint. Now on to my personal development.

Where the Cr-48 loses a little usefulness to me, and that's fine since Chrome OS isn't really targeting this type of user at this time, is for personal development projects where I need to use desktop tools for the full lifecycle of my application development. Sure, I can use the blazingly fast Chrome browser for reading documentation, articles and the like but the limited shell doesn't even let me get access to compilers and editors like Emacs. (Note: I know in developer mode I can change this. I might look into it.) I use the Cr-48 much less when doing development for personal projects because of this limitation at this time.

As for the Chrome OS running on the Cr-48 hardware, I love it. The whole experience is super slick and very fast. At first, I did have a minor issue with the trackpad, which was really because my Macbook is behind the times at 2 years old. On the newer Macbooks the whole trackpad is a button. A pressing of the trackpad with one finger on it clicks and pressing the trackpad with two fingers on it performs a context click, or right click. After I figured this out on the Cr-48, browsing, dragging and such was much more precise and less jumpy than when I'd use my index finger to move the cursor and my thumb to click. There are also multi-finger gestures like two finger scrolling which is awesome. For me, the experience has been pretty cool. I also haven't experienced the slow/bad quality video/audio people report about. I think my experience has been pleasant because I can see what the Cr-48 and Chrome OS are intended to be at this point, a beta offering of an OS that is not intended to replace my development workstation. Many pundits online whine and complain about the Cr-48 and Chrome OS in ways that just aren't justified because they expect it to do more or be more than it is intended to be at this point.

In the end, I have thoroughly enjoyed my Cr-48 and the Chrome OS running on it. I can use it for almost all of my CollabNet workload, a good bit of my personal development and it's a great portable media/browsing tool with it's light weight and long battery life. And for my non-development tools, almost all are web-based so the Cr-48 is perfect. Thank you Google for giving me this laptop and I hope my involvement somehow pays you back. While I know this was not a very in depth review, it did touch on the parts that seem important to me.

Creating a tar.gz with commons-compress

Recently I needed to take a Linux-only Java application and make it work on Windows. One of the things I had to do was remove a lot of calls to command line utilities. One of those was where we used tar to create a tar.gz of a directory structure. Googling around for creating a tar.gz in Java quickly pointed me to the commons-compress project. The problem was that there was very little documentation and no full examples to go off of. I ended up getting this code working and below is an example. In this example you will see two Java methods that are heavily documented and use together will allow you to create a .tar.gz of a directory. Of course, this example could be made better and is simple for brevity. Enjoy.

  1. /**
  2.  * Creates a tar.gz file at the specified path with the contents of the specified directory.
  3.  *
  4.  * @param dirPath The path to the directory to create an archive of
  5.  * @param archivePath The path to the archive to create
  6.  *
  7.  * @throws IOException If anything goes wrong
  8.  */
  9. public static void createTarGzOfDirectory(String directoryPath, String tarGzPath) throws IOException {
  10. FileOutputStream fOut = null;
  11. BufferedOutputStream bOut = null;
  12. GzipCompressorOutputStream gzOut = null;
  13. TarArchiveOutputStream tOut = null;
  14.  
  15. try {
  16. fOut = new FileOutputStream(new File(tarGzPath));
  17. bOut = new BufferedOutputStream(fOut);
  18. gzOut = new GzipCompressorOutputStream(bOut);
  19. tOut = new TarArchiveOutputStream(gzOut);
  20.  
  21. addFileToTarGz(tOut, directoryPath, "");
  22. } finally {
  23. tOut.finish();
  24.  
  25. tOut.close();
  26. gzOut.close();
  27. bOut.close();
  28. fOut.close();
  29. }
  30. }
  31.  
  32. /**
  33.  * Creates a tar entry for the path specified with a name built from the base passed in and the file/directory
  34.  * name. If the path is a directory, a recursive call is made such that the full directory is added to the tar.
  35.  *
  36.  * @param tOut The tar file's output stream
  37.  * @param path The filesystem path of the file/directory being added
  38.  * @param base The base prefix to for the name of the tar file entry
  39.  *
  40.  * @throws IOException If anything goes wrong
  41.  */
  42. private static void addFileToTarGz(TarArchiveOutputStream tOut, String path, String base) throws IOException {
  43. File f = new File(path);
  44. String entryName = base + f.getName();
  45. TarArchiveEntry tarEntry = new TarArchiveEntry(f, entryName);
  46.  
  47. tOut.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
  48. tOut.putArchiveEntry(tarEntry);
  49.  
  50. if (f.isFile()) {
  51. IOUtils.copy(new FileInputStream(f), tOut);
  52.  
  53. tOut.closeArchiveEntry();
  54. } else {
  55. tOut.closeArchiveEntry();
  56.  
  57. File[] children = f.listFiles();
  58.  
  59. if (children != null) {
  60. for (File child : children) {
  61. addFileToTarGz(tOut, child.getAbsolutePath(), entryName + "/");
  62. }
  63. }
  64. }
  65. }

The example could easily be tested by creating a static main method that looks like this:

  1. ...
  2. /**
  3.  * Application entry point.
  4.  *
  5.  * @param args The command line arguments.
  6.  */
  7. public static void main( String[] args )
  8. {
  9. createTarGzOfDirectory("/Users/jwhitlock/some_directory", "/tmp/some_directory.tar.gz");
  10. }
  11. ...

And there you have it...a complete example of how to use commons-compress to create a .tar.gz of a directory.

Simple Emacs Window Persistence

So I've been using Emacs for a long time now but most recently, I've started using the new NextStep/Cocoa support for Mac OS X. Basically, it replaces the old Carbon support with OS X's newer Cocoa APIs. The reason for doing this was an attempt to find an OS X Emacs application instead of using the terminal emacs implementation. Nothing was wrong with the terminal version but I wanted to have more flexibility, specifically with OS X's Spaces feature. One of the first things I noticed was, well, every time I opened Emacs.app, I had to reposition and resize my Emacs window because the maximize button didn't consume all available screen real estate. That being said, I whipped up a very simple alternative using Emacs Lisp (elisp). Below are the two elisp functions, one to persist your window geometry at Emacs close and another to load the geometry at Emacs startup, and the hooks to wire the functions up to the necessary hooks to have it all work:

  1. ;; Custom functions/hooks for persisting/loading frame geometry upon save/load
  2. (defun save-frameg ()
  3. "Gets the current frame's geometry and saves to ~/.emacs.frameg."
  4. (let ((frameg-font (frame-parameter (selected-frame) 'font))
  5. (frameg-left (frame-parameter (selected-frame) 'left))
  6. (frameg-top (frame-parameter (selected-frame) 'top))
  7. (frameg-width (frame-parameter (selected-frame) 'width))
  8. (frameg-height (frame-parameter (selected-frame) 'height))
  9. (frameg-file (expand-file-name "~/.emacs.frameg")))
  10. (with-temp-buffer
  11. ;; Turn off backup for this file
  12. (make-local-variable 'make-backup-files)
  13. (setq make-backup-files nil)
  14. (insert
  15. ";;; This file stores the previous emacs frame's geometry.\n"
  16. ";;; Last generated " (current-time-string) ".\n"
  17. "(setq initial-frame-alist\n"
  18. " '((font . \"" frameg-font "\")\n"
  19. (format " (top . %d)\n" (max frameg-top 0))
  20. (format " (left . %d)\n" (max frameg-left 0))
  21. (format " (width . %d)\n" (max frameg-width 0))
  22. (format " (height . %d)))\n" (max frameg-height 0)))
  23. (when (file-writable-p frameg-file)
  24. (write-file frameg-file)))))
  25.  
  26. (defun load-frameg ()
  27. "Loads ~/.emacs.frameg which should load the previous frame's geometry."
  28. (let ((frameg-file (expand-file-name "~/.emacs.frameg")))
  29. (when (file-readable-p frameg-file)
  30. (load-file frameg-file))))
  31.  
  32. ;; Special work to do ONLY when there is a window system being used
  33. (if window-system
  34. (progn
  35. (add-hook 'after-init-hook 'load-frameg)
  36. (add-hook 'kill-emacs-hook 'save-frameg)))

All you have to do is get this into your ~/.emacs file and things just work. What you'll notice is after you have this code in place, open Emacs, reposition your window and resize its geometry. Next time you open Emacs, it should remember the last window geometry/location.

Known Issues

  • This implementation does not work for new Emacs windows spawned from a running Emacs (If you know a hook I could use so that opening a new window will run load_frameg, let me know.)

Apple's New iPad: Beautiful, innovative and a let down

Apple's "latest creation" event held today unveiled the iPad. The iPad is Apple's tablet, the latest product from the mind of Steve Jobs. It seriously is one of the most beautiful pieces of technology I've ever seen. The problem for me is that beauty only goes so far. My opinion of the iPad is a mixed bag of praise and disappointment, which is likely not Apple's fault but my own dream not coming true.

So I don't end this blog post on a sour note, let's start with my disappointments. When we first heard of Apple's event to be held on the 27th of January, 2010 I started thinking of a MacBook replacement. When the iPad was unveiled, I saw a more refined and much larger iPod Touch. I already have an iTouch so why would I want another one? Sure it's bigger, beautiful and there are some applications for it that have been redesigned for the iPad. Sure it could potentially become a primary system for business executives and designers but I'm not a designer or someone that lives in email/internet/documents/photos only. I'm a software developer. I can't run Eclipse, XCode or anything that I do day to day on that pad so it's awesome form factor is of no benefit to me. I don't have an ebook reader so it could fill that niche but I read books just fine on my iTouch and MacBook. I got myself excited about an Apple NetBook or laptop replacement and instead I got a newer, bigger iTouch. The problem with this is that some of the big complaints about the iPhone/iTouch like no multitasking/background applications, no built-in camera, etc. There is some good news about this that I'll mention below.

My complaint is really a nit and most could say I did it to myself. I just can't help but see the iPad as a bigger iTouch that only serves as an ebook reader since I never bought a Nook or Kindle. But honestly, those are my only complaints. The iPad's form factor and design is breathtaking and based on the software suite available, I can see this device being the go to device for designers and business executives. The iPad comes with the usual business suite of apps you have on the iPhone but redesigned specifically for the iPad. Simplistic applications like Calendar, Contacts and Mail on the iPhone/iTouch have been redesigned for the iPad so that the user experience is like nothing you've ever seen. Seeing the iPad's software in action is truly a site to behold. Apple really knows how to create touch-based user experiences that do not hinder.

One of the biggest surprises today was the iPad's price point. People expected a device costing roughly $1K but the base model is only $499. All iPads comes with WiFi (802.11 a/b/g/n), Bluetooth, Flash drives for storage, microphone, built-in speakers, a 1GHz Apple A4 processor, a 1024-by-768-pixel resolution at 132DPI screen and it all fits in a 7.47"x9.56", 0.5" thick form factor. (For more information on pricing and technical specifications, go here: http://www.apple.com/ipad/specs/) It's amazingly compact and it's multitouch display was impressive during the keynote. (One of the first things people noticed was the lack of a built-in camera. The good news is this can be remedied by plugging an external camera into the device.) The iPad is even said to have 10 hours of battery life. Wow! Since I feel like I can't do the hardware justice, let's move on.

As expected, this device runs the iPhone (3.2) operating system. This means that an iPhone application can run directly on this device. As a matter of fact, not only does the iPhone App Store's 140K+ applications run on the iPad, they can be resized on the iPad to utilize the extra screen real estate. Also as expected, there is a version of iTunes so buying multimedia will be possible with the device. What's new is that there is a third store on the device called iBooks, which is an ebook store. All of this is great news for iPad owners because you can utilize a large list of great applications in the App Store on the iPad on day one. This is very exciting news.

In the end, the iPad is a huge hit, especially among those that can see using it in their daily life. The innovative software delivered with the device is stunning but being able to install iPhone applications means that many will be able to replace their iTouch with this device if it makes sense for them. I'm not sure I'll be buying one but it isn't because the device isn't worth my money, I just think the device was designed for a different type of user.

Snow Leopard is a liar, Java 1.5 is NOT installed

Over the weekend I finally took the plunge to upgrade to Snow Leopard. The system is definitely snappy and I'm loving it. Well, now that the system is back at the state I need it to be in for my various development efforts, I began trying to compile some Java that's used at work, which requires Java 1.5.x (The reason for this is the use of pre-JDBC 4.0 APIs) So I start compiling and I keep getting errors about classes not being abstract and also not implementing necessary methods. I start thinking: Well, I told the build script to use Java 1.5 so I shouldn't be running into this. I start digging around and I see that Java 1.5 and Java 1.5.0 JavaVM framworks on Snow Leopard just symlink to 1.6. WHAT?!? Are you eff-ing serious? Not only is Java 1.5 not installed but Snow Leopard tries to fool you into thinking it is. (Yes, I know I could had looked at /Applications/Utilities/Java Preferences.app and figured this out but being a developer, I look for framework locations manually.) No wonder my code isn't compiling...it needs Java 1.5 and while it appears I told my build script to use 1.5.x, it's really using 1.6.x. Great...

I'm not going to attempt to document how to fix this. Many others have done so and googling "Snow Leopard Java 1.5" will get you what you want. I just can't believe this is the way Apple wants to behave. Why can't the latest Xcode include a *real* version of Java 1.5 at least? Ugh...EPIC FAIL!!!

Review: Motorola Droid from Verizon

Well, I've not done this in a while but I bought the latest toy the day it came out and this time around, it was the Motorola Droid from Verizon Wireless. I was very excited about this primarily because I could get a good smartphone on Verizon that ran on the Google Android platform. Well, after having the phone for the past three days, I am very pleased with the phone's hardware and the Android 2.0 operating system running the device. (For the complete hardware specifications, visit the Motorola Droid site. For the new features of the Android 2.0 platform, visit the Android 2.0 Highlights page.) As you probably have heard, people call this phone "The iPhone Killer" and in some ways, I agree but I also have just as many discrepancies in this statement, but not because of the phone's hardware or core operating system. What makes the phone so good and yet, not an iPhone killer? Let's find out.

The first thing most notice about the phone is its impressive hardware list:

  • Arm® Cortex™ A8 processor running at 550 mHz
  • 16 GB microSD (pre-installed and upgradable to 32 GB)
  • 3.7" WVGA, touch-screen display
  • Physical QWERTY keyboard
  • 5.0 MP camera with 4x digital zoom, flash and capable of doing DVD quality video
  • WiFi (B and G) access
  • Accelerometer
  • Proximity, ambient light and eCompass sensors
  • Many more...

This is one of the most powerful phones, from a hardware perspective, released to date. Using the phone, you'll see how nicely all of this hardware comes into play. First thoughts are how responsive the UI is to touches and gestures. I'm yet to run into a situation where my Droid hangs, becomes unresponsive or "lags" when using it. The next thing I notice is the keyboard. While I've heard many people complain about the keyboard, I've not had any problems with it. It's responsive and not as small as people say. You'll also notice that when you take pictures, they are very clear. Don't expect DSLR quality out of it but the built-in camera does shoot as well as a comparable digital point-and-shoot camera which should make for good on-the-go pictures for Facebook, Twitter and other social services that run on Droid. To keep from writing a full blown dissertation on the Droid, below is a quick list of short hardware features that got my attention:

  • A full-sized, 3.5mm headphone jack means no more proprietary headsets and the ability to reuse existing headphones when listening to music
  • The built-in speaker is very clear and more than loud enough to listen to music
  • USB charger is great to have because you can charge anywhere
  • 4 physical buttons on the display make browsing much easier
  • The back of the Droid has raised parts at each end to keep the phone from getting scratched and to protect the camera on the back

Well, the Droid's hardware is impressive for sure but how usable is the phone? Well, let me say that the Android platform is very, very nice. It's intuitive, easy on the eyes and Android includes many of the necessary applications that you'd need out of the box to transform your phone into the ultimate business tool. From what I can tell, Verizon didn't make any big changes to the Android platform, which is good because many others and myself were worried about how "bastardized" Android would be on a Verizon phone. When you start using your
Droid, you'll notice that the expected applications are there:

  • Email clients (Gmail and regular)
  • Calendar
  • Web browser
  • Android Market
  • Maps
  • Etc...

You should also expect to see others like the Amazon MP3 Store, YouTube and others. Do you use Google services like Gmail, Google Calendar, Google Voice or any other Google service? If so, you'll be glad to know that the Droid's Google integration is flawless. Attach your Google account to your Droid and your calendar, email and contacts are instantly available and bi-directionally synchronized. What about turn-by-turn directions? Tired of having another device in the car? Well, the Droid offers turn-by-turn directions natively and it's implementation is very solid. If you can't find something you need already pre-installed, open the Android Market and look around there. Most of the included applications are top-notch and "just works".

Unfortunately, the Android's included applications and Android Market applications are where I think the chance of the Droid being "The iPhone Killer" diminishes. Sure, there are great applications on the Droid and there are great applications on the Android Market but in the end, there are not nearly as many high-quality applications available for the Droid. I feel like the quality of the included applications on the iPhone are of higher quality than their Droid equivalent. For example, the email application on Droid does not properly delete POP3 emails and you cannot choose which folders in IMAP correspond to their Droid email equivalent, like what IMAP folder should be used for deleted mail. It just seems the depth of control/configurability is lacking in many cases. The good news is that the Android is open source and these problems will ultimately be fixed. iPhone killer? Maybe not but do not let that take away from the awesome handset that it is.

One last, brief thing is that I've traveled a bit since I got the phone, primarily up and down the I-25 highway within Colorado, and I've never had reception or call quality issues. I also haven't seen the 3G icon disappear, unless I was using the fast WiFi when I was at home just to save unnecessary 3G usage. For most, they forget about the carrier when evaluating a phone and in the Droid's case, I think Verizon's network is a very important selling point.

In the end, the Droid is an amazing smartphone. It runs the highly-regarded Android operating system, which includes many high-quality applications, and has some very powerful hardware. While the Droid isn't an iPhone killer yet, it sure could be with a more refined set of included applications and variety/quality in the Android Market. So for the general populous, I wouldn't call the Droid an iPhone killer but I sure have no desire to own an iPhone anymore.

Pages