Sunday, November 8, 2009

Droid Demo Videos

I had the opportunity to run the Verizon Droid through the paces before it was released this past week. These videos were shot on my Android powered Google ION smartphone, so the quality could be better, but hopefully it gives you an idea of how the device works. Android 2.0 contains many new features, so there's A LOT more details to the phone that I wished I could have had time to show. I suggest you stop on by your Verizon store and check this device out. Or if you have the chance, come to our next Mobile Twin Cities user's meeting on November 17th, as we should have few Droid devices for people to play around with. Enjoy the videos!

Android 2.0 - Google Navigation App



Android 2.0 and Droid Basics

Friday, November 6, 2009

The (R)Evolution of Android

In honor of today being The Day that Android is officially released on the Verizon network, I thought it was fitting that I finally get the blog post that has been churning in my head all week out the door. I'm also very deep in Android programming right now as I'm working to release another Android app for a client of mine, so Android and the future has been on my mind...

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.
With my 3 complaints aside, overall, the phone performs well and for most people that use two hands when using their phone, none of these issues will be a big deal. Just watch out for those capacitive buttons.

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

I was interviewed for a podcast with Garrick Van Buren from First Crack Podcast earlier this year and have just realized, I never posted the details! It was great amount of fun and we talked about all sorts of technology items related to VoIP, Asterisk and the Mobile Twin Cities Users Group that I had just formed at the time. I also realized as look back that we touched on an excellent book called "Hot Flat And Crowded", by Thomas Friedman that I think any kid growing up today should read. It's fascinating to realize just how much we will need to innovate as a species if we are going to survive on this plant. I'll leave at that. I fully recommend picking up the book!

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

Just a quick note that I presented on Android at the local Twin Cities Google Technology User's Group this past week. I had to cover material for about 2 hours worth of time. It was a great experience and all who attended I felt get a lot out of the presentation. It's great see interest in the Minneapolis/St. Paul area build around Android and having been working with the platform in some shape or form for close to the past year, I feel like I'm really starting to master it and enjoy sharing my experience with others.
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

I'm using Ruby on Rails on the server and needed to post JSON to it from Android. Here's some quick code that I wrote to do this. Hopefully it helps someone else. All of the tutorials that I found didn't work. You basically need to make sure you post data in JSON format. Just seetting parameters won't do the trick.

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, Map params)
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");

ResponseHandler responseHandler = new BasicResponseHandler();
response = httpclient.execute(httpost, responseHandler);
}

Sunday, July 5, 2009

Finding Skins Under Android 1.5

I was testing using some custom skins under the Android SDK 1.5 and was a little perplexed that all of the documentation I read told me to put the skins in the directory

$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

If some of you have been following me on Twitter you might have seen that I'm becoming actively involved in mobile software development. I thought might be good to do quick post relating to the some of the talks that I've given on the subject and a presentations I have coming up this month. If you are looking to learn more about mobile and are local to the Minneapolis/St. Paul area, I suggest you join us at one of the Mobile Twin Cities User's group meetings that I have founded. a BIG thanks to everyone who has presented at the previous meetings an Breon Nagy for recording our presentations!

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

Here's a good blog post on doing themes within Android. With the latest release of Android 1.5, the interface is looking much more clean and adding themes to your application can really give you that "wow" factor to you users.

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

My good friend Garrick Van Buren was nice enough to involve me in a conversation on mobile software and VoIP technologies. We had a lot of fun talking about where the market is today and where we see it going in the next 5 years. Exciting times are ahead for all of use in this space. Details of the discussion can be found on his Podcast blog at:

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

I attended the Mt. West Ruby Conference last month with good friend and fellow Rubyist/iPhone developer Sam Schroeder. We had a great time attending the conference and even got a little skiing in before the event began. I also had a chance to meet Jay Phillips from Adhearsion and an opportunity to do a quick lightning talk on Adhearsion at the end of the conference. The organizers were nice enough to give me 3 minutes and the very last slot, so that is why I'm speaking so fast! I did notice though, that I need to work on stopping the use of my crutch words like, "um..." during my presentations. I'll also be speaking at the Ruby User's of Minnesota on April 27th to show off the Adhearsion Sandbox and other software as a service telephony frameworks available to developers. Watch the video below to see a quick example of my lightning talk at the 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

Keeping myself busy here on team Ruby.MN at the F1 Web Challenge. You can check out some photos of our group uploaded at: http://is.gd/leE3
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

Well, the F1 Web Challenge is back again this year! I'll be participating in the Team Ruby.MN. We just got word yesterday that our team t-shirts are done, we have met as a group a few times since the event to plan out the logistics and everyone is fired up to take on whatever non-profit is assigned to us. Yahoo!

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 a BIG fan of Linux and open source. I try and use open source software whenever I can and try to contribute projects with either monetary donations or helping in reporting bugs, testing or documentation. I have a Linux desktop and host all of my applications on Linux. However, there unfortunately are however some programs and clients that require me to have a MacBook. Alas, sometimes you have to pay the piper. But I am looking to eventually ween myself from Steve Jobs.

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!