Sunday, November 8, 2009
Droid Demo Videos
Android 2.0 - Google Navigation App
Android 2.0 and Droid Basics
Friday, November 6, 2009
The (R)Evolution of Android
If you haven't heard, or haven't been watching TV or listening to the radio, the new "Droid" device, manufactured by Motorola and released on the Verizon wireless network was released today, November 6th, 2009. I was lucky enough to be be invited by Albert Maruggi @AlbertMaruggi to a special Verizon Wireless "pre-release" event last week to get my hands on this new device, give some initial feedback and take it through the paces. I was also able to take the phone home and have 3 days with the device and see how it performed. Finally, we all got Eclairs to take home (which were delicious by the way!) in honor of Android 2.0 being the code named "Eclair" release.
This entry will be some of what the device has done (or hasn't done) for me, but I do have some video that I shot from using the device, (which I need to edit) and will post in a future blog entry. Just as some background, I came into this event and have been using Android since before it was officially released. I was one of the first people in line at the T-Mobile store to get my G1 and have been excited by the evolution of Android and how it was changed over the past year.
Before I start though, as a point of clarity, I don't subscribe to the stories of "Droid is / not an iPhone Killer". In fact, I'm very annoyed by seeing all of the articles with titles like this. The whole idea of one platform as "killing" another, really defeats the purpose of these devices and marginalizes what any device or platform will bring to market. Plain and simple, people who write articles like this and this are idiots. Want proof? Here's an article that agrees with me. In fact, when I was at Google I/O in San Francisco earlier this year I was amazed when talking with a few Google engineers, just how open they were to competition. They really believe that competition and innovation is what is best of the consumer. It was refreshing to hear that they really weren't all about trying to bash or take down the qualities of other devices out there. And therein is the beauty of Android. You have manufactures, focusing on what they do best (make good hardware) and Google focusing on what it does best (make good software and services). And now, you've got the network of Verizon to back this up.
OK, I'll get off my soapbox now. Let's talk about Droid!
First impressions
Inside I believe that someone is either a physical keyboard user or a virtual keyboard user. That's not to say that you can't be trained and go from one to another, but intrinsically, I think a person will gravitate to one out of habit. I am definitely a virtual (soft) keyboard user. I liked my G1 when it had a physical keyboard, but I *REALLY* liked my G1, when we got the 1.5 update that contained the virtual (on-screen) keyboard. I just find it too awkward to have to pop/slide something out to type. Yes, you can leave the keyboard out all of the time, but I find the balance on most devices with the keyboard open to be odd and also, I prefer to view and browse sites in portrait over landscape mode. Plus, the more moving parts... the more parts that are likely to break! Thus, when I started working with Droid, I was not too impressed by the pop-out keyboard. Sure, it has back-lit keys and is OK to the touch, but the G1 keys pop out a little bit more and are actually easier to use in my opinion. The phone itself is a little boxy and I don't understand why the screen doesn't go all the way to the end - it kind of gives it, as Breon called it, the "inverted chin" that you may have seen with other HTC devices. I would have much preferred that the screen just go all the way to the edge. While the screen is absolutely gorgeous and supports thousands more colors than anything else on the market, I'm not sure if I'm really sold on the rectangular shape of the (854×480) shape of the screen. It's too rectangular for me. I think maybe over time I might get used to it, but if they made the screen longer, I would have liked it if they would have bumped the width out a little bit as well. It has a long tight look too it - not my cup of tea, but is just my small nitpicking.
Performance
Overall, the phone performed flawlessly. It was by far the fastest phone I have used running Android. Part of that might be related to the speedy processor, and some might be Android 2.0. But I'm very happy to see that now Android is performing much better than the Google ION and G1 that I currently have. However, it is a little disappointing that Motorola couldn't get the new 1Ghz Snapdragon processor in this phone, like you are going see with Sony's X10 Experia Phone. Now, THAT is the phone that I can't wait to try.
Here's some rough hardware specs on the device if you are interested.
Egonomics
I think Motorola made some serious mistakes in the ergonomics of eh device.
- First, the sleep and power button are on the top. I love my Google ION (HTC Magic), because I can use just one hand to put it to sleep and then press the "menu" button to wake it back up again. Putting the button on the top was just stupid. It then always takes me two hands to pull it out of my pocket and wake it up. And then two hands to put it to sleep. Not easy to use.
- Second, the volume is on the SAME SIDE as this power/sleep button. I found myself repeatedly adjusting the volume as I was putting the phone to sleep or waking it up. I can see why they had to put the volume button on that side (since the other side is the USB port for the cradle), but it's seems like bad design and something that I know will drive some people crazy.
- Third, holding and scrolling with my left hand caused some very odd behavior on the phone. It might be tough to explain and took me while to figure out what was going on, but at the bottom of the phone there are the 4 signature Android buttons - Back, Menu, Home and Search. Many of the other Android phones have these and this is no different on Droid. The problem is that they are capacitive buttons, which mean that it's really easy to tap them by accident. When trying to scroll on webpages or in emails as I hold the phone and scroll with my thumb, the screen kept shooting back up to the top of the page! After playing around for a long time and talking with a friend about it, we came to the conclusion that it was my palm touching the far left button ("Back Button") as I was scrolling. This causes the app to auto scroll to the top of the page. So much for walking to the bus stop in the morning and reading my emails and surfing with one hand. This by far was the worse user experience on the device.
Apps
I installed a number of the apps from the market and everything I tried ran fine in Android 2.0 with the larger screen. I must applaud other Android developers for getting new versions of their apps out into the market so quickly and supporting Android 2.0. Besides Droid, there aren't any other devices running Android 2.0, but I think that will changing in the next month or so, as I bet most all phone will be upgraded to Android 2.0 by the end of the year. Word on street currently, is that Google will have Android 2.1 out by the end of the year. Their development speed is really picking up! Verizon does have their own "tab" on the Android market, which I find is interesting, however, they have only developed 1 App for Android! That's pretty lame guys. I applaud you for finally carrying the Droid, but now let's see you develop some applications that use it as well. Their application is a visual voicemail application, that runs pretty good. It basically takes voicemails and converts them to text. Google voice does this already, so really there aren't any unique apps by Verizon on the market. Would like to see them become more involved. Speaking of which... is Verizon even a member of the OHA?
Android 2.0
I didn't get a chance to really work through all of the specifics of Android 2.0, but a few high points that I saw as I was playing with the device.
- A setting that allowed you to share files via bluetooth - very cool.
- Cleaner and more crisp icons.
- Soft Keyboard MUCH easier to use.
- Auto brightness adjust based on ambient light - worked OK, but sometimes would change for no reason.
- Google Navigator - Very sweet! I have a video demo of this, working on getting it edited though. Will be in my next post.
- Google Services - This isn't really an Android 2.0 thing, but I will reiterate that having all of your data "in the cloud" is super cool. I would have both the Droid and my Google ION on and all of the contacts, calendars, email, meetings, etc. were shared between the two since they both were accessing my same Google account! It just kind of brought it all home when I realized that I there was ZERO migration (besides apps), if I were to decide to move to another Android smartphone in the future. Very cool.
Summary
Over the past week, a number of people have asked me what I think about Droid. Would I be willing changing to Verizon for this device? Is it an iPhone killer? (I won't answer that last question) ;)
Well, here's what I CAN say. I think Droid is a good device for someone out there, however that someone is not me. It's not the fault of Android and it's not the fault of Verizon or Motorola. It's just that I'm very happy with my small compact Google ION (ie. myTouch) and there isn't enough new on Droid to make me switch. In fact, there isn't any other device (iPhone, Blackberry, Palm included) that makes me want to switch. My current Android phone from HTC is like little tank that keep on running. I have dropped it, kicked it, scratched it and it still keeps running. It's small, very light, compact, can fit easily in my pocket and I can quickly pull it out and use it with one hand to get done what I need to get done. And I don't have to baby it. The Droid is none of that for me, but it probably will be the right device for a number of other people out there. In reality, I see the Droid competing much more with Blackberry and Windows Mobile users. It's those kind of users that I think will enjoy this device. Droid is just another option on the Verizon network for people that want a cutting edge, fast, large screen, multimedia capable smartphone backed by and integrated with all of their Google service.
Now, as some of you know, Verizon is releasing another droid phone called "Eris" today as well. Has anyone heard of that? Did people even know that "Droid" is more of a collection of phones than just 1 phone? It was pretty dumb move I think to market everything as "Droid", but then say that you have a "HTC Droid Eris" and "Motorola Droid". Plan on people being very confused at their local Verizon store today when they start checking out the new phone(s). However, as long as they buy one or the other and enjoy the Android experience, no one is the wiser. Android will continue to grow and developers like myself will continue to build apps. Speaking of apps... time to get back to that app. Time to run for now. Look for some videos that I shot on Droid shortly!
Sunday, November 1, 2009
Talking Technology on the First Crack Podcast
You can read the discussion and listen to the entire podcast here.
Hope you enjoy it!
Sunday, September 20, 2009
Recursive Awesome Formed
It's been a little while since my last post, as it's been a wild and crazy summer, but I am finally getting around to giving an update on what been going on with me related to mobile software development and business.
I'm super excited to let everyone know that I have co-founded a company with a good friend and colleague of mine named Sam Schroeder. Sam and I developed a product together this summer for ourselves around the area of mobile video distribution and branding called Mobile Vidhub. While we were developing this product, Sam and I were working a number of other projects together and decided it made sense to join forces and go into business together. Our new company ( Recursive Awesome, LLC ) focuses on developing mobile application on the 4 leading smartphone platforms ( Android, Blacberry, iPhone and Palm ). We both agree that using agile software development practices is the most effective way to develop software. We build not only mobile, but server side applications using Ruby and the Ruby on Rails framework.
We hope you check out our business, keep us in mind and please let us know if you are in need of our services. Sam and I are always interested in working with startups and new ideas, no matter how large or small. We have a wide array of experience related to software development and good contacts in the local community to help scale your project up as needed. Looking forward to hearing from you!
Saturday, August 29, 2009
Google Technology Users Group
If you are in need of a person to train or bring your development staff up to date on Android, please contact me and let me know.
I also have posted all of the code that I wrote that night for the meeting and all of my slides up on GitHiub. You can find it all here:
http://github.com/justingrammens/tcgtug
For more in formation on the TCGTUG, you can find their website here:
http://tc-gtug.org/
Monday, July 6, 2009
POST JSON from Android using HttpClient
In my case I had to create JSON something like:
{ fan: { email : 'foo@bar.com' } }
which equates to the HTML form input:
<input name="fan[email]" type="text"/>
To POST in Android. You can use something like this code.
public static String makeRequest(String path, Mapparams)
throws Exception {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
Iterator iter = params.entrySet().iterator();
JSONObject holder = new JSONObject();
while(iter.hasNext()) {
Map.Entry pairs = (Map.Entry)iter.next();
String key = (String)pairs.getKey();
Map m = (Map)pairs.getValue();
JSONObject data = new JSONObject();
Iterator iter2 = m.entrySet().iterator();
while(iter2.hasNext()) {
Map.Entry pairs2 = (Map.Entry)iter2.next();
data.put((String)pairs2.getKey(), (String)pairs2.getValue());
}
holder.put(key, data);
}
StringEntity se = new StringEntity(holder.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandlerresponseHandler = new BasicResponseHandler();
response = httpclient.execute(httpost, responseHandler);
}
Sunday, July 5, 2009
Finding Skins Under Android 1.5
$SDK_ROOT/tools/lib/images/skins
This is not correct under Android 1.5 SDK! Instead you want to put them into the directory
$SDK_ROOT/platforms/android-1.5/skins
This discussion on the Android Google Group helped me.
http://is.gd/1ouFs
Also, you can find many cool skins here:
http://teavuihuang.com/android/
Hoping this will save others wasted time.
Tuesday, June 23, 2009
Mobile Software Development at Localtone
Mobile Twin Cities
http://mobiletwincities.com - We meet the third Tuesday of the month.
Watch us online realtime or archived videos from the meetings can be found here:
http://www.ustream.tv/channel/MobileTC
Twin Cities Java user's Group - (TCJUG)
I presented at TCJUG where I showed my "Contratoid" Android app and deployed it to the Android market all in one evening.
Video, source code and slide from this meeting can be found here.
Video at: http://is.gd/U4Zr (the presentation starts about 10 minutes into the video)
Source at: http://is.gd/TZFP
Slides at: http://is.gd/U5tM
I presented on Android at the Ruby User's of MN (RUM) group. Slide from this presentation can be found here.
http://www.slideshare.net/justingrammens/AndroidIntro
If VoIP is your things, I also spoke on Adhearsion as well at RUM. Slides from that presentation can be found here:
http://www.slideshare.net/justingrammens/voice-enabled-applications
Finally, I'll be talking about Android at the Penguin's Unbound meeting this weekend where we'll try and create another Android app and deploy it to the market. Hope you can attended.
http://is.gd/1ayaT
I'm available for consulting around mobile software development on all devices. Would be more than happy to spend some time talking with your organization around how you can use mobile and VoIP technologies.
Monday, June 1, 2009
Android Themes
You can read more on the blog post and specifics around giving you application a them here.
Saturday, May 23, 2009
Podcast on Mobile and VoIP Technologies
http://www.firstcrackpodcast.com/
Enjoy!
Sunday, May 17, 2009
Adhearsion Sandbox Rocks
I presented in April at the Ruby User's of Minnesota (RUM) on creating voice enabled applications using the Adhearsion sandbox and another service called tropo.com. Slides from the presentation can be found here. Some people I know were unable to attend or unable to follow along during the demo, so I thought it might be fun to put together a quick screencast of the steps to get yourself working in the sandbox. The sandbox is completely free and provided by Jay and Jason at Adhearsion.com to give developers like us an opportunity to get our feet wet and play with Adhearsion. Enjoy the screencast! It's amazing just how fast one can get up and running and hope you have an opportunity to start creating voice enabled applications in the future. There's a lot of potential customers out there using plain old cell phones and the cost to implement voice enabled applications using Open Source frameworks like Ruby on Rails and Adhearsion is a small fraction of proprietary solutions.
Monday, April 20, 2009
My Lightning Round Talk at Mt. West Ruby Conference
There were some excellent presenters and I'm definitely planning to attend next year. You can watch any of the other talks or lightning rounds here. Enjoy!
Saturday, February 28, 2009
Blog Post From The F1 Web Challenge
I've been up for 20 hours and programming for the last 16. Only 8 hours left! Fear the Red Shirts! =o
Friday, February 27, 2009
F1 Web Challenge v2.0
What is the F1 Web Challenge You Ask?
It's a yearly competition put on by a local software consulting firm that brings non-profits together with programmers in a competitive setting to see who can build the best website in 24 hours. From being in the event last year, "24 Hours" is really a misnomer. That's the amount if time you'll be working, but not the amount of time you'll actually be awake and at the event. Last year I was at the event from around 7:00 am Saturday, until 4:00 pm Sunday and then by the time I got home and unwound, I didn't actually get to sleep until 7:00 pm on Sunday. I ended up being awake for 36 hours!
All of the that being said, the event was extremely fun and rewarding. I met some really great people, made some really good friends and had a chance to work with some of the brightest programmers in town. What more could I ask for? I should have been paying to get into this event!
I'll be trying to post photos and details on the event on the blog here as time permits. We won't know our non-profit that we are assigned to until we show up that morning. One thing they have changed this year was to increase the members on the team count, so we have two more bodies to help us get the work done. I'm excited to see what we create!
Details
F1 WEb Challenge Website:
http://www.f1webchallenge.com
Our Team (Ruby.MN) Website:
http://www.f1webchallenge.com/teams/27-Ruby-mn-2-2
Follow me on Twitter during the event!
http://twitter.com/justingrammens
Sunday, February 22, 2009
OGG track numbers iTunes - and Songbird Sings!
I'm also an equally big fan of open standards. One standard that I support is Vorbis and more precisely the OGG container. If you have heard about OGG, the definition from Wikipedia is as follows:
Ogg is a free, open standard container format maintained by the Xiph.Org Foundation. The Ogg format is unrestricted by software patents and is designed to provide for efficient streaming and manipulation of high quality digital multimedia.
The fact that a company could own the format that all of my music is in, goes against my beliefs of free and open standards. I therefore have tried everything that I can to try and keep all of my music in this format. It hasn't been easy, especially since most all music purchase download sites only offer MP3 or AAC. Not even a lossless version like FLAC seems to be available for download on most sites! Very annoying, but that's the subject of another post I guess.
Why am I writing all of this you ask?
Well, I've got close to 20 GB of OGG files and had been wanting to try and use iTunes to listen to them. The people at Xiph have created a quicktime extension that allows iTunes to recognize and play the OGG format! Details on that can be found here.
However, what you'll soon find out is that while it plays the songs, iTunes doesn't know the track numbers! It plays all of the songs from an album in alphabetical order. Bummer. This while not a deal breaker, is extremely annoying and when you have some albums where the songs are in particular order for a reason, it makes listening to album useless. This issues has been submitted to the people at Xiph, but has been deemed not important.
After some searching however, I found an amazing script by Dr. Lex, which allows you to run through your entire library and update the iTunes metadata with the track numbers from your OGG files. Woohoo! Now we are in business. You can get the script directly from Dr. Lex's site here. Very easy to install and it worked out of the box with my iTunes version 8. You'll notice the script also does some reply gain adjustments as well if you have that configured, but in my case I was just interested in getting the track numbers. Thank you Dr. Lex for creating and sharing this script. This is open source at it's best.
UPDATE:
Since I have solved my iTunes in OGG problem, I have actually found a better music player that support OGG right out of the box! It's called Songbird and has some really cool features along with a pluggable architecture. This allows in the same way that Firefox has taken off by people contributing to it, my hope is that Songbird will do the same. If you want to help an Open Source song player succeed I suggest you take a look at it. My next step is going to be getting a sync program going with Songbird so it will push songs to my Android powered G1 phone, but that's a subject for another post. Lots of fun pet projects in the works.
Happy audio listening with Songbird!