The latest Android OS version 2.2 (“Froyo”) was announced at the Google I/O conference on the 11th of May. As you already probably know it adds multiple enhancements like tethering, wifi hotspot functionality, full support for Flash, etc. Since I use my Nexus One phone for Android development, I did not want to download the update from Google and then install it with adb. I just wanted to wait for the over the air update.
And to my surprise, the first time I looked at my phone this morning, I had this message on the screen:
I was not sure how long it would take, so I just hit “Install Later”. Then a couple of hours later, when I was ready, I just went to Settings -> About Phone -> Software Update and hit “Restart & Install”:
The phone rebooted and started the upgrade. The whole process with the installation took less than 5 minutes.
I am not going to go into details what the features of Android 2.2 are. There are so many announcements and blog posts on this matter already out there…
But what I am going to say is that Android is the leading OS in the mobile phone market right now. I can say this definitively, since I have been using iPhones for the past 2 years. I have a 3G and a 3GS phones. I encourage any iPhone user to go and check out an Android device. Please do not look at the low end hardware that runs Android (like the Cliq, the old G1, etc.). Check out the HTC Evo, the HTC Incredible, the Nexus One etc. See for yourselves before you make your decision to get another phone and lock into a 2 year contract. I will mention only a few things you will discover on the Android device that your phone probably does not have right now:
- Turn by turn voice navigation
- Built in tethering
- Built in WiFi hotspot capability supporting multiple devices
- Full support for Flash
- Full blown multitasking on the OS level (no need for the programmer to do anything special)
- Integrated speech recognition across the board. Voice input could be used anywhere in place of the text input.
- Over the air updates and syncing. That means no iTunes or the like!
And many other features that I do not want to get into details right now. I am sure you can fill in the gaps for yourselves…
I work primarily with UNIX and Linux machines and scp is my main choice to transfer files with. It is both convenient, short and secure.
scp localfile user@remotecomputer:/path/to/target/dir
Recently I was transferring an 8GB file and due to a network issue, the transfer was interrupted at nearly 40%.
I have learned over the years that there is often little which can be done to prevent such interruptions. I know that many people go to great lengths to find Broadband which is reliable, but sometimes disruptions simply cannot be avoided. Of course, this can be both frustrating and time-consuming, but there is a quick fix. Although such disruptions can’t be prevented, there is a fast and easy way to resume them. Resuming has relatively few system requirements, and can save a lot of time and hassle when transferring large files.
I found a solution at joen.dk ,which uses rsync to resume the transfer:
rsync --partial --progress --rsh=ssh host:remote_file local_file
Now we can improve this slightly by shortening the above command. We can substitute –rsh=ssh with -e ssh, and use -P instead of –partial –progress. Also, you can add user@host if you need to specify a different remote shell user:
rsync -P -e ssh user@host:remote_file local_file
This above example will work with any file that was partially transfered. How the transfer was started does not really matter. It could be through scp, nc or even ftp. After you execute the above command it will take rsync a little time to verify the previously downloaded part before it continues with the rest. Be patient, depending on your network speed rsync could take some time to go through what you have already transfered. Of course this is much faster than if you were to start the download all over again and it shows you the progress in percentages.
Keep in mind that there have to be a couple of requirements in place in order to resume the file transfer with rsync:
1. You should have remote shell access.
2. The remote machine should have rsync installed. Since rsync is by default on most Linux distributions that generally should not be an issue.
A lot of camcorders record in the .mov (Quicktime) format. It has high quality video and depending on the underlying codec it provides a good compression, but it is too proprietary and very often you might not be able to play it on different devices.
AVI on the other hand is more widely accepted format. AVI, like MOV, is a media container that envelops encoded media. In this example we will convert Quicktime video (.mov) to .avi that contains media encoded with mpeg-4.
If you want to preserve the original quality and resolution with pcm_u8 (analog 8bit) audio:
ffmpeg -i inputfile.mov -sameq -vcodec msmpeg4v2 -acodec pcm_u8 outputfile.avi
Obviously I would prefer something better for the sound so I normally use the mp3 as an audio codec. To do this make sure that you have the libmp3lame0 package installed to do that:
sudo apt-get install libmp3lame0
ffmpeg -i inputfile.mov -sameq -vcodec msmpeg4v2 -acodec libmp3lame outputfile.avi
If you want to change the resolution then add the -s option and specify the horizontal and vertical resolution. Make sure to preserve the original aspect ratio:
ffmpeg -i inputfile.mov -s 960x540 -sameq -vcodec msmpeg4v2 -acodec libmp3lame outputfile.avi
I just came upon two articles by Thomas Driemeyer. The author seems to be very sincere in his attempt to describe his experiences in switching from Linux to Apple (and subsequently back) and his good sense of humor makes the reading pleasant and amusing:
I love Apple!
I cannot live without my iPod, much less without my iPhone! The “I am a Mac, I am a PC” commercials on TV are so adorable… Sometimes I rewind my DVR just to see one of those commercials again. In these moments I tell myself “Show that evil empire Microsoft how things are done!”.
But then… I must have been brain dead for a while! You see, what got me is that I have always been for a free market and fair competition. And what Microsoft was doing was not right. No two ways about it. Apple was the company that materialized those feelings and stood up to Microsoft. Naturally, I (like many others) fell for it and blindly screamed “Go Apple!”.
It turns out that I have supported a company that became worse than the one it had set out to defy.
Apple said that if you want to have an iPod, you can only use it with iTunes and if you want to buy music for it… guess what?… you need iTunes for that as well. Same applies to the iPhone with the only difference that you have to be an AT&T customer. Oh yeah… and all these songs you might have bought from Apple, you can’t put on any other mp3 player but on an iPod, unless you remove the DRM protection.
On the computer front things do not look much more different. Mac OS X can legally run only on officially approved Apple hardware and vise versa. If you like the OS, well your only chance is to drop some major cash for the hardware as well. This goes over and beyond what Microsoft has ever attempted to do. After all you can run Windows on anything you feel like.
I am a huge believer in FOSS and Apple has shaped to be the absolute opposite of this philosophy. Even though their OS is built on top of FreeBSD and NetBSD, and they have ported a number of Linux applications to Mac OS X, they have not contrubuted back to the community at all. They even officially announced that iTunes will not be released for Linux. I would like to think that the only reason for this is because they know that Linux users are not going to tollerate DRM content anyway.
- Olivier on Dynamic Port Forwarding with SOCKS over SSH
- Ld7 on How to connect your Android phone to Ubuntu to do development, testing, installations or tethering
- get more Info on How to get Picasa images using the Image Picker on Android devices running any OS version
- Casper on How to detect a user pan/touch/drag on Android Map v2
- Install SSH as socks proxy for dynamic port forwarding | Steve Constine on Dynamic Port Forwarding with SOCKS over SSH
- April 2013 (1)
- November 2012 (2)
- August 2012 (1)
- May 2012 (1)
- March 2012 (1)
- November 2011 (1)
- August 2011 (1)
- April 2011 (1)
- January 2011 (2)
- September 2010 (1)
- August 2010 (2)
- July 2010 (2)
- June 2010 (2)
- May 2010 (1)
- January 2010 (2)
- December 2009 (2)
- November 2009 (3)
- October 2009 (1)
- September 2009 (3)
- July 2009 (1)
- May 2009 (1)
- March 2009 (1)
- February 2009 (2)
- January 2009 (2)
- December 2008 (1)
- November 2008 (4)
- October 2008 (5)