My first Android App

As my previous post mentioned I went to google IO -- One of the smarter things they did was shower us with cell phones so I've spent the last few weeks (on and off) doing Android development.

I just published my first app to the Android marketplace (it's a free desktop widget that monitors your Tender inbox -- Tender is a support system I use)

My thoughts?

  • Android development environment is both better and worse than Xcode.  The reasons are much too numerous to go over but the main differences are Eclipse (Android) has some amazing run time type checking and validation -- If you type something in wrong in almost any part of the IDE it let's you know and recommends ways to fix it (it's really amazing that way) but it's also kind of slow & clunky (and very un-mac like).  Xcode is closer to the metal and feels like a good mac app but gives you more rope to hang yourself (on the plus side you can do some crazy cool stuff with Xcode that I haven't seen the equivalent in Android)
  • Learning Java isn't as hard as I had feared... Partly because I used to do a lot of C++ and it's pretty close to that and partly because it's not so different than Objective C in many ways.  Java as a language is actually pretty remarkably well thought out.
  • The component model of Android development is very interesting and in many ways innovative..  You can do a lot in android with very little work.
  • Targeting Android devices is interesting -- you don't know for sure the processor, screen size, input methods, etc. that your customer has so you work at a more abstract layer (for example I had to include three pieces of artwork all at different resolutions to account for that).  At the end of the day however it's just a matter of adjusting workflows and sort of accepting that on some devices it may not look perfect (it's very similar to designing web pages where you don't know for sure what kind of browser or screen size the viewer will have).   iPhone is very targeted -- you know exactly what the user will see and can really target that experience.
  • Publishing to the marketplace is an amazingly different experience.  I finally decided I basically 'exported it', uploaded it, typed in a description and added a screenshot, hit publish and *literally* within about 45 seconds I checked the Markeplace and it was live!  If I find a bug I can re-publish it at a whim and have it live within minutes... Amazingly nice
In the end it was a pretty enjoyable experience -- I've been using Android for the last several weeks but I believe that will come to an end about June 24th.....  I'll probably not do a lot more developing in Android but the experience is pretty reasonable and the phones are getting better and better. 

Long term I suspect Android will become the market leader and iPhone will be relegated to a second or third spot -- This is partly because Android is already at more or less feature parity (actually better in features) and is fast becoming 'pretty enough'

Having said that  a second or third place spot in the Cell phone market is still pretty freaking big and Apple will continue to appeal to a certain kind of customer who really appreciates the experience they provide.

For me, as I said, I'll be in line to get  an iPhone 4 and on June 24 I suspect my Android will stop being carried around very often.


Google IO

In case you didn't catch my various tweets (@loghound) you might have missed that I was at Google I/O last week.

Similar to WWDC, I/O is a developers conference part education and part evangelism for developers to use their technologies.  Also similiar to WWDC, I/O had a jam packed keynote (more on that later) -- This will likely be a long post as I feel the need to say a lot.

WWDC '10
First let me talk about WWDC '10.  Sadly I'll not be attending WWDC this year -- I've gone for the last 3 in a row, the first year it blew my mind.  Year two was satisfying but quite frankly last year was dissapointing.  This is mostly because the material they covered was largely a repeat of the prior year and partly because of the iPhone focus.  When I saw the agenda this year and realized it would be all iPhone and probably (most likely) a repeat of prior years I took a pass.

Google I/O
Fortunatley I had signed up for Google I/O well in advance.  I use a number of Google products and have considered going for a few years.  While I was dissapointed to miss WWDC I was pretty excited going into  I/O.

Google I/O vs. WWDC
It was fun to compare and contrast the two conferences.  Held at the same Venue (Moscone West) at almost the same time of year (only about three weeks apart) for the (more or less) same crowd was interesting.  In bullet points my observation(s) were.

  1. I/O is much more open -- Engineers actually go 'off script' and answer questions (and sometimes even (shock) share things they shouldn't).  This is both good and bad as the Polish to most I/O presentations was quite a bit less than WWDC.  Some of the material was poorly done or hard to follow and some sessions made poor use of time (one guy flew through his slides in 20 minutes and then didn't know what to say for the rest of the hour!).  By comparison WWDC is always well polished -- Material is timed almost perfectly and the sessions last precisely the same amount of time.  Winner: I/O  -- While I wish a few of them had been a bit more polished I felt like I was getting information at a more 'engineer to engineer' level with less fear of going off script.
  2. Focus.  WWDC is about one thing (ok, two things) -- Mac and iPhone/iPad.  there is (used to be) at IT track also but the majority is for developers.  You can walk into almost any session and get something useful out of it.  Google I/O is all over the map.  It went from new storage products to chrome web browser extensions to brand new programming languages.  While they had 'tracks' you could follow if you were there for 'one reason' I had a tough time because there are a number of things I wanted to do -- Partly I wanted to sharpen some skills and partly I wanted to learn.  As a consequence I jumped from session track to session track probably a bit much.  Winner: WWDC
  3. Material Share:  WWDC puts videos up afterwards -- it used to take months but last year it was about 2 weeks.  Google puts them on youtube (soon?) for everyone.  Winner: I/O -- I was able to watch sessions from last year coming in which helped a lot.   Apple has this misguided approach to keep information 'secret' somehow (crazy!)
  4. Food:  Both had catered service for breakfast, lunch & snacks.  Apple provided Odwalla drinksk while google provided more varieties of bottled water and soda.  Winner: Draw
  5. Other:  both conferences had areas for getting work done.  Google went one further with foosball tables, pool tables &  wii.  Google also had charging stations (WWDC used to but dumped it last year) and a 'tech desk' to get emergency parts.  Winner: I/O
  6. Non Conference.  Both events have parties, I missed the I/O one so can't comment on that.  At WWDC they have the sessions, stump the experts and ADA.  Google had sessions and the developers sandbox where devs showed off their google solutions.  Winner:  I/O
  7. Length:  WWDC is 5 days (well, 4 1/2 as the first day is mostly keynote) and that is 'about right'.  I/O is 2 days (way too short).  Winner: WWDC
  8. Freebies.  WWDC gives you a t-shirt and computer bag (the last three years).  Perhaps this year the'll get something more but I doubt it.  I/O gave me two t-shirts, socks (Google TV Sock no less) and two phones each with a month of service (Motorola Droid and HTC Evo).  Winner: I/O (not even a fair fight)
  9. Value:  WWDC $1600 for 5 days.  I/O: $400 for two days (plus lots of hardware freebies to help you develop).  Winner: I/O
  10. Keynote:  It's impossible to beat a apple keynote -- the google one was well done and by any normal standards exciting and fun (you should have heard the crowd when they gave us all HTC Evo's) but you cannot beat a Steve Jobs Keynote:  Winner: WWDC
          Google I/O Schwag

Finally on Google vs. Apple -- Google poked a lot of fun at Apple (and I'm sure we'll see it poked back in a few weeks) -- It's been surprising to me to see how many people have come out of the wood work trying to defend apple or claim Google looked defensive.

People:  While they work together on many things (Almost all Google employees used Macs and Apple uses Google services for much of the iPhone) they are in many ways competitors.   Of course Google will try to use it's developer conference to attack who they perceive is the biggest threat (just like Apple has against Microsoft and I'm sure will do so against Google this year) -- It's actually a compliment (imagine if Google had bashed RIM or microsoft during the keynote so heavily and ignored Apple.  That, my friends, would have been a slap in the face!)

At the end of the day though what you have to do (and what I am still processing) is do I buy it?  Honestly Google made a lot of very valid points.  While I love my Apple products the fact is they are limited by what Apple/Jobs thinks they should do.  Having played with my Android phones these last weeks I've been impressed with the kinds of integration and capabilities they have (although they are not nearly as pretty as an iPhone).  

I'm not sure where my head is at the end of the day -- I decided to try to use my Android exclusively for the next week or two to see how it works for me -- I'll report back later what I find.

Enough for now, if you are still reading thanks for sticking with it.  More so than most this post was something I needed to do to get my thoughts together on what I heard & saw last week at I/O.   I'll be curious to see what Apple does at their Keynote (and, I'm sure, I'll be sad that I'm not at WWDC0

Comments (3)

In defense of the app store process

I'll admit it -- I've been (privately) pretty down on the app store process.  After my first app was released (MovieFlick) I swore never again as the pain of trying to push out updates was too much.

I eventually did a second app (DreamApp).  The 1.3 version has been about two months getting out and I was ready to explode today when I got what I thought was another rejection but it all worked out fine.

My first release of 1.3 had a real problem with new user accounts that I never tested and the Apple team found it so although it's frustrating to wait 3 weeks to find out they did a good job of finding a real problem.

My second submit was rejected for using 'undocumented API's'  -- you may have heard that Apple has a new static analysis tool for finding usage of non supported API's and my app was caught in that.  It turns out that one of the libraries I use did have calls to unsupported API's but only for testing purposes (of the framework) - I never actually used them in my code.

grumble, grumble ok submit again… Tonight I got *another* letter about unsupported API's and I was about to explode but then something odd happened…. I got an email saying 'Your app is now for sale'.

It turns out the third letter pointed out the use of a non supported api (NSHost hostWithName) but instead of rejecting it they said "We'll let it go but please fix it for the next release" -- When I first read it I hadn't noticed that fine print but true to their word it's now available.

So in this era of dog piling on top of Apple and the app store process I have to get them some credit for being pragmatic about this… They made a decision to release it but asked nicely for me to fix it next time.


Going to Apple Thursday (sort of)

Well I'm off to Apple tomorrow (Technically I'm off to the San Jose Mariott).  Approximately every year (usually late fall) Apple holds a series of tech talks.  The last two have been about the iPhone but before that they were about Leopard (before that I'm less certain? Tiger? before my time)

The idea is that as opposed to WWDC which is held in a single location and you have to pay to go to they have a traveling roadshow for one day to hit you with information (and in very uncharacteristic  Apple fashion: It's free)

I went with Isaiah last year and it was overall a pretty good session -- Not anything mind blowing but a nice day with some good information.

The format is one big classroom where they run through approximately 6-8 sessions.  My guess is there will be sessions on Core animation, Open GL, Tools, Core Audio (less sure about that one), Core Data.   Last year Apple bought us box lunches and we got a t-shirt (sadly the shirts were all the same size).

What really excites me is what they may announce  -- Apple doesn't have that many corporate events (let's count: WWDC, Fall Music Announcement, maybe one or two other public press events) so they sometimes uses these forums to make announcements (not huge ones mind, but things relevant to developers)

Here is what I hope (pray) they announce.  An overhaul of the iTunes rating system.  The current one is horribly broken, as a developer it's horribly painful to see people complain of problems and have no way to get a hold of them to help fix it.  I do everything I can to make my support email public but a surprising number of people will just complain in iTunes instead of trying to contact me -- Case in point: About 4 months ago Netflix had a server outage for a weekend…. It didn't effect all apps but it did effect mine so anyone using my app would find a problem.  I actually worked with Netflix engineering over the weekend and by Sunday it was all back up but as you can guess I had a mass of 1 star ratings and 'this app doesn't work, wasted $1.99'.  I was going crazy trying to sort out how to contact them to say "Hey, try it again, it's a server issue that now works" but it's impossible with the current system.

Here is hoping for good news tomorrow...

Summer "Vacation" Plans

I've been working with my wife on our summer plans -- when & where to go. As it turns out Apple helped make part of them today. I know where I'll be June 9-13 For the most part it's a 'non' event -- we all kind of 'knew' there would be something either June, July or August with the good money on June. Furthermore it was no surprise that the iPhone would feature so prominently (especially after they announced 'iPhone 2.0 in June') -- In the invite they specifically mention 'three tracks': Mac, iPhone & IT. While I'm excited about the iPhone as a platform to develop for I really hope they don't shortchange the Mac side -- What I really hope they can talk about is 'what's next' for OSX after leopard but I'm a little worried they are so focused on iPhone that they won't have much to say. Time will tell....

I am so weak

I told everyone who would listen "I'm not going to get one". Way overpriced and my treo does everything I need it to do.

I am so weak.
I'm so weak
Comments (3)

Iphone success/failure

The iphone will be a huge sucess because:
1. It's oh-so-sexy
2. It's a ipod+phone+internet tablet
3. It's a great price
1. 8GB nano=$249, smartphone=$400, internet tablet (Nokia N800)=400 total=$1049
2. Iphone is only 599
4. It'll sync flawlessly
5. It's from Apple
The Iphone will be a huge failure because:
1. It's gonna scratch and break like crazy
2. It's has no keyboard
3. It's way too expensive ($599 and a two year contract!?!)
4. No third party developer support (Palm + Windows mobile have great support)
5. It's only a 2.5G device, data rates will be horrible
My Prediction:

The iphone, when launched, will look different than what was presented. They will either lower the price, increase the storage or announce a huge number of sexy features to insure it's competitive. I don't know if they will win 2% of the worldwide cell phone business in the first 12 months but they will sell enough to declare it a success


Step into Xcode

I just received a book last friday,
, if you are a Mac developer or considering being a Mac developer this is one of the two 'must have' books... The other book is, of course, the classic

I love collecting programming books but sadly on the mac most of them are either fairly obtuse, or try to hard to be funny (but really aren't) These two are the Crown Jems of beginning mac programming.

The Author keeps a nice weblog
which so far makes good reading.

My favorite tip so far out of this book?
, Makes some of the tedious parts of Mac OSX development in Objective C go away.. Wish I had know about this 6 months ago!


Why I'm now a Mac guy, part 1

I had never touched a mac in my life until April of 2005. This is an example of why I love this platform so much

We're in Monterey this weekend (well technically Pacific Grove) and it's kind of Rainy & Cold. I had a few moments to myself and decided to dig into Quartz Composer to see what all the fuss was about.

Within 30 minutes I had taken a picture from our Aquarium visit this morning and converted it into this 68kb movie

It's not that I think the movie is so great, it's the ease at which I created the effect and the size (68kb!)-- OSX is really a tremendous operating system that has so much power integrated into it's core that Apple makes easy to use (Again, 30 minutes to generate from a dead start... I could do a new one in about 20 seconds now that I 'get it')

It got me wondering... Is there any value in integrating something like this in some fashion with RW? A few obvious ideas are perhaps an easy way to generate animated graphics or buttons but I could also see Quartz Compositions as a way to do picture or text effects easily.

Best of all? If done properly once the base framework was in place, it could be 'open' in that anyone could create new effects to add and share in an open community way (imagine this.. the current image inspector allows you to scale the image, flip it and rotate it... Imagine if you could transform it in dozens of ways including shadows, borders, etc. and imagine if you could create custom effects to add to the library built into RW using Quartz Composer)

In reality this kind of functionality needs to reside in the core RW product not a plugin so I doubt I'll ever do anything with it but it's so intriguing it really makes me think of all the possibilities.


Next Page -->