Thursday, June 30, 2011

Ref: Android UI: Tips, Tricks, and Techniques

Just saving the pointer to this post here:
Android UI: Tips, Tricks, and Techniques

This presentation video is worth watching if you are looking for the few tips on the Android code optimization and UI optimization in particular from the couple of the "founding fathers" so to speak :)
The guys do not go deeper on the subject but give a pretty good overview on things to be aware of. The more detailed articles are available on android developers web site.

Android - libs-for-android

Couple of days ago I started to list few quite useful Android open source projects to learn from.

Here is another one I forgot to mention:

libs-for-android

Slightly different approach to ImageLoader implementation, with the public API that binds image view the the url. Also it uses http API from java.net instead of org.apache, that I would probably change, cause I remember having few issues with java.net connections before.

Enjoy!

Wednesday, June 29, 2011

Odd Day

Today one colleague of mine and just a very good guy, that I really enjoyed working with, had his last day at the company after 12.5 years of service.
It's kind of sad to go back to work tomorrow and not to see him again, but I'm glad to see him happy about the new opportunities for him.
12 years at the same company is a long time.....

....And the things get "better" when you find out that there is another great guy that I learned a lot from is most likely to leave in 3 months from now.

Certainly today was not the most productive day.
So, the plan for tomorrow: regroup and try to get my mojo back.

Monday, June 27, 2011

Chromebook - first impression

Just got Chromebook today that was sent to every Google IO attendee this year and wanted to share my first impression.

Pros:

1. The start up and shutdown time is pretty fast.

2. The battery time is very good so far

3. It doesn't get as hot as MacBook Pro


Cons:

1. The Chromebook device feels flimsy. It's all plastic and it gets kind of annoying when the screen vibrates when I type on the keyboard. Might need to get used to the keyboard, missing some keys when I type fast and navigation keys layout is a bit strange.

2. The Wifi is the "corner stone" of this device is very mediocre. In the house where I have full strengh Wifi reception on my MacBook laptop the Chromebook shows just a half (two bars). It shows 3 bars out of 4 when I sit in just 4 meters from the wifi router. It said on the box that the device comes with 100MB/month 3G data allowance, and this is very limiting for the device where network presence is everything.

3. Touchpad does not feel like too responsive, probably I just might need to get used to it.

4. I do't know if it's a quality of the screen or the fonts, but the text doesn't look that pleasant for reading , especially the small fonts. Some fonts seem to be off from the fonts I got used to see in the browser on Mac or Windows.

5. Gtalk feels more limited since I can not resize the chat window or I can't pop it out, cause there is nowhere to pop it out to.

6. I still kind doubt that the browser-only OS will be sufficient for me and that I would like to keep everything I do in the cloud.

It feels like Android OS at this point has some advantages, cause one can still run web applications on it as well as the native apps.

Finally, I understand that I got the Chromebook for free and really should thank Google for this instead, but I kind of hope that my feedback would help to make the next devices and Crome OS better.

I will keep playing with Chromebook some more and maybe, who knows, will change my opinion or even find some positive aspects of this device.

So far I'm not impressed.

Update: One thing the full screen browser experience kind of lack is ability to see both browser windows side by side, it pretty much invaluable in situation when our small kid wants to watch some cartoons on youtube and I would like to read emails or news at the same time.

Android - some best practices with source code

Android applications development although seems to be quite simple, has few things that can be described as a best application design practices. I personally learned many things from my own trials and mistakes, but nowadays you can make few shortcuts and learn from experts.

There are some good code samples that show some good practices shipped with Android SDK. You can always get the Android source code (expect the latest Honeycomb 3.0) and explore how everything is done there.

Also I'm going to list few projects that one can use as a reference for some good practices or inspiration:

1. The Google IO schedule application: http://code.google.com/p/iosched/
2. The Romain Guy's application that he created for Google IO 2011, that has some tips on animation and images handling (LruCache): http://code.google.com/p/xlarge-demos/
3. The application created by Reto Meier that shows some best practices for location aware applications: http://code.google.com/p/android-protips-location/. The post about this can be found here: http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html
4. The Droid-fu library that contains some useful ideas and patterns: https://github.com/kaeppler/droid-fu . I found ImageLoader to be pretty useful.

These are just few recent ones (except droid-fu) .... more is coming.

Thursday, June 23, 2011

Android devices stats

One of the projects I'm working here on is the framework of collecting applications metrics for Android, IOS and RIM applications. There is a bit of client code involved as well as the "big data" processing (Hadoop, Vertica) on the server side.

Recently I was asked if it's possible to get the applications usage report on Phone vs Tablet devices for the different platforms.
Don't ask me why, I don't know the answer to it, it's just needs to be done, period :)

The situation with IOS devices is pretty simple, cause you are pretty much limited to 3 devices:
iPod touch
iPhone
iPad


For android the situation is more complicated, especially since many early tablets are still running Android 2.1 and 2.2 and virtually indistinguishable from the phone with slightly bigger screen.

Currently we use Build.PRODUCT as the main device identifier, that, for example, has "htc_supersonic" value for HTC EVO phones. Now the problem is that we have more than 2000 different android "products" values reported, and every day the new devices are getting announced. So somebody would have to maintain manually the mapping between the device product name and some commercial product name and the type in order to get the kind of report we are being asked for, something like htc_supersonic <=> HTC EVO, Phone.

I wonder if there is such mapping is readily available and also it might be convenient if Google could open the API for that, since the kind of do the final certification for Android devices as far as understand.

Anyways, if you stumbled upon similar problem and have a solution to it, please share.

How to leave the running process on Linux after SSH session is disconnected

.... I had to use this pretty often recently, to kick off the script on the remote machine and exit SSH session while leaving the process running.

Here is how to start the process:
nohup ./myscript.sh > /dev/null 2>&1 &


This post is mostly for myself so I don't forget ....

Sunday, June 05, 2011

Richard Feynman: "Fun to Imagine"

Stumbled upon quite interesting and entertaining videos by Richard Feynman:
http://www.youtube.com/playlist?p=PLC351CC566C21C884