Smartphones and Battery Life

Since I’m on the comparison of Android and iOS kick I might as well talk about battery life. Most reviews of high-end Android devices knock the reviewed device for having poor battery life. I know the biggest hit against the Evo 4G is it’s battery life. My iPhone has had great battery life compared to my Evo giving me two days instead of one on a single charge (I count battery life in number of days before needing to recharge the phone, my Treo 755p got roughly three days).

There are many things to consider when comparing battery life including the storage capacity of the battery. The other major factory in battery life is the operating system and applications. The iPhone’s multi-tasking capabilities are… poor to say the least. If you want to run something in the background that Apple hasn’t provided a specific service for you have up to 10 minutes (the iPhone allows an application to run for 10 minutes in the background before suspending it).

Android on the other hand allows true multi-tasking. Any application is spawn a service that can run in the background even when the main application is no longer being displayed. This gives Android far more flexibility. Allowing real multi-tasking can also take a toll on the battery life as a runaway process can run the CPU at 100% and turn your battery life into a mere couple of hours. Personally I find the tradeoff worth it as any application that slaughters your battery life is poorly written and really the fault of the developer, not the device.

What I blame Android for is it’s poor built-in battery life reporting tool. On the Evo if you go under Settings->About Phone there is an item called Battery Life. This little application tells you the rough percentage of battery charge remaining and what has been using the battery life. This reporting tools does an abysmal job unfortunately.

I still carry my Evo around and use it as a portable Wi-Fi hotspot (which it works great as). I noticed when I returned home last night the phone was reporting the battery was almost completely dead. Usually this means some application is going crazy either pulling down data or racking up the CPU. A simple reboot of the phone generally takes care of this but I’m more of a curious person and wanted to know exactly what process was draining my battery.

Well the battery usage reporting tool did say it was the Android system that was using a majority of my power… of course that’s a catchall for every application on the device. The battery usage tool lumps every application under the Android system category and does not breakdown by individual application. In fact it’s not possible with Android’s built-in battery usage tool to see how much CPU time (and thus a rough estimation of battery life) an individual application has used. This makes finding the rough process difficult if not impossible.

I really like the fact Android has true multi-tasking and accept the responsibility that comes with such flexibility. But I’d also like a mechanism to see how much power each individual application is sucking down. Having such information would allow me to determine if an app I downloaded was poorly written and remove it. As it sits now you practically have to download an app, test it for a day, see the impact on battery life, and hope it doesn’t screw up later down the road.

GSM vs. CDMA

It’s almost been a month of using the iPhone and thus AT&T. AT&T (along with T-Mobile) is a GSM network while Sprint (along with Verizon) is a CDMA network. For the end user the difference isn’t very noticeable in most cases although if you’re in the Midwest you’ll likely noticed better coverage with CDMA.

GSM has two major advantages over CDMA for the end user. The first advantage is the fact CDMA phones use a SIM card which can be taken out of one phone and inserted into another (so long as the other phone will work on the first phone’s network). If you want to swap CDMA phones the process is generally more difficult (for example on Sprint you need to log into your Sprint account online and enter in a series of numbers on the new phone). The second advantage is the fact on a GSM phone you can use both the voice capabilities and data at the same time. With a CDMA phone if you’re talking to somebody you can’t use data and if you want to use data you can’t call somebody. Even though there is no reason for this Sprint has even locked the Evo 4G into not allowing voice usage and 4G data usage at the same time (with 3G it’s a limitation of the hardware/protocol while with 4G the restriction is purely artificial).

Well it dawned on me when somebody called me and asked a question that required I look something up. I told them, “Hold on a second I’ll look it up and call you ba… wait hold just a second” and discovered the wonders of a phone that can use voice and data at the same time. Huge advantage.

I also learned that there apparently isn’t any additional cost to use call forwarding on AT&T, just just consumes your minutes. That means when I travel back home (where I have no AT&T coverage but have Sprint coverage) I can set my iPhone to forward calls to my Evo without having to rack up Sprint’s 20 cents a minute for forwarding calls charge.

There certainly are downsides to AT&T (their data plan is fucking horrible compared to Sprint’s) but there are also some upsides.

Biting Off More Than You Can Chew

Hot on the tails of attacking MasterCard, Visa, and PayPal the boys and girls that compose Anonymous are performing a distributed denial of service (DDoS) attack against Amazon. The funny thing is it doesn’t seem to be working as I can access Amazon without any issue.

I don’t think these guys make the connection that Wikileaks chose to use Amazon’s hosting service specifically because of how robot Amazon’s infrastructure is. Amazon makes their money on people visiting their website and thus have made massive strides in ensuring it’s always accessible. Amazon has been a victim of DDoS attacks before (usually to extort money from Amazon to make the DDoS attack stop) and know how to deal with it. It’s would be like trying to take down Google via a DDoS attack, it won’t work.

This also sends a bad message to web hosts. Basically Anonymous are saying anybody who has hosted Wikileaks and stopped is going to be attacked. Likewise anybody hosting Wikileaks will also be attacked by people from the other side of the issue. Why would any web host be willing to host Wikileaks at all if all they’ll get for their troubles is a big old helping of DDoS. If you want to set a precedence in favor of Wikileaks work to stop the DDoS attacks that are targeting Wikileaks, not a web host who hosted Wikileaks and later terminated the hosting.

I’m still finding the events surrounding Wikileaks far more interesting than the actual leaks themselves.

Voluntary Botnet

This is kind of an interesting premise that’s not at all new but being report as such by several source. MasterCard has been under a massive distributed denial of service (DDoS) attack. The attack was set off after MasterCard refused to allow customers to user their card to make donations to Wikileaks. This story is so multifaceted that I don’t know where to begin.

First this shows what kind of power companies like MasterCard and Visa can wield when they decide to no longer be a common carrier (allow customers holding their card to make payments to whoever they chose). It’s even more interesting since Wikileaks hasn’t actually done anything illegal meaning these moves are purely business.

Needless to say if you piss off the Internet is pissed on you back. MasterCard is currently under a DDoS attack but not by the usual malware created botnet. News sources are saying it’s by a voluntary botnet. Basically people are downloading an application called Low Orbit Ion Cannon (not to mistaken with GDI’s weapon of mass destruction that really does a good job of shoving it up Kane’s ass). Low Orbit Ion Cannon apparently connects to an invite-only IRC server and allows your system to become part of a botnet. Once the connection is established you system sends out constant traffic to a targeted node on the Internet.

Even more interesting is the fact that performing DDoS attacks is generally illegal. Most of the times the owners of the systems that are in a botnet aren’t held accountable because they did not knowingly allow control of their system to be taken. This case is different since each participant is voluntarily becoming part of the attacking botnet. This shows once again though that simply making something illegal is not a deterrent.

Chrome OS

Yesterday Google officially announced Chrome OS. For those of you who haven’t heard of it Chrome OS is Google’s non-Android operating system that consists of a web browser and… nothing else really. Chrome OS is literally an instance of the Chrome web browser running on top of a Linux kernel. No applications exist outside of the web browser which basically means with the exception of HTML5 offline support the OS is worthless without an Internet connection.

You can probably tell I don’t find the OS all that useful especially when Google already has an operating system that could be adapted to small notebooks called Android. Either way there are a couple of interesting things regarding the web browser OS. First Google will actually offer some form of live support. My biggest headache with Android ended up being the complete lack of any support from Google. Google’s system lost all records of the Android applications I purchased and the only option is to post on their support forum which they apparently don’t monitor at all (I still haven’t received a single reply to my post). Of course Google also offered support for the Nexus One and in less than a year terminated it and sent you to HTC (who manufactured the Nexus One) for your support needs. Either way I don’t have much faith in Google supporting Chrome OS for very long.

The more interesting news item I found was the fact that Verizon will give all Chrome OS users 100MB a month of 3G data for free. I think a majority of people in the comments section are bitching that 100MB is nothing this day and age but for free what do you fucking expect? It’s enough to check your e-mail once in a while when you don’t have Wi-Fi available to you. Of course you can get unlimited data from Verizon for the rather steep price of $9.99… a day. Yikes! That’s actually worse than AT&T’s data plan which is already pretty fucking poor ($20.00 for 2GB and then $10.00 for each additional GB over that). On the upside that $9.99 a day doesn’t require a contract.

Either way I’m still not impressed with the idea of Chrome OS. Every small notebook on the planet already comes with a web browser plus a whole lot more. Being even more impressive these other notebooks are still useful if you have no Internet connection. But hey it wouldn’t be the first time Google hyped up a produce only to shit can it later when nobody really found it useful.

Android Advantage

Yes I go back and forth on the advantages and disadvantages of Android. You have to give me credit on one thing, I’m not a fan boy.

One of the problems I have with my Evo 4G is the generally buggy nature of the included software. Android 2.2 had a lot of troubles with their media layer that were finally sorted out around the release of 2.2.1. The main problem is HTC hasn’t released an update with the new version of Android yet so audio I’ve left paused for a long time is likely to start from the beginning again when I press the play button. This along with a bug that impairs my phones Exchange syncing capabilities (it can’t properly sync with my work’s calendar most of the time and when the calendar sync fails it refuses to sync e-mail as well) has left me rather agitated with Android.

Thankfully Android is an open source operating system and hence anybody is free to roll their own version. Personally I’m far too lazy to do such a thing so I rely on others. For the last several days I’ve been running Cyanogenmod on my phone and frankly it fixes all the issues I’ve had with my phone.

The downside is I lose the ability to use 4G (which I rarely use due to it being a power hog) and HDMI out (which I’ve never used and don’t even have a cable for). Those features will most likely come in a future release so I’m not worried and keep a backup of my old ROM for instances where I need those features. What I like is the fact the features I use on a more daily basis (Last.fm, Pandora, and Exchange synchronization) all work perfectly now.

When people say Android is open this is what they mean. Of course you need to have a NAND unlocked phone in order to install a different ROM so you’re likely limited to more popular phones (as those are the ones hackers work on rooting and unlocking NAND on). Even with that restriction in place the fact of the matter is if you don’t like your current ROM you can swap it out on a lot of phones.

Getting a Esduino Communicating with Mac OS X

Just a word of warning everybody, we are going down super duper mega geek territory here. If you’re not sure what a Esduino is you’ll not give two shits about this post. This is mostly a guide for myself to serve as a reminder of how to get this thing running again should I forget. Since the information has potential to be useful to others out there I figured I post it up on a public page.

I’m not going to waste time explaining what an Esduino is beyond it being a Arduino board that uses a 9S12 microcontroller as its core. If you don’t know what it is chances are this guide is useless to you.

The Esduino by Technologicalarts comes with a FT232R USB to serial port converter built in. There are no built in drivers for this chip in Mac OS X thus you need to install them. The drivers can be found here (for Windows, Mac, and Linux). The installation guides can be found here. Summed up all you need to down is download the appropriated driver (I used the virtual COM port driver instead of the D2XX driver as I’m used to working with virtual COM ports) and install it.

Once the driver is installed you can plug your Esduino into one of your USB ports. You’ll notice nothing happened, that’s normal. In truth something did happen though, two new files were created in your /dev directory (if you’re unfamiliar with the UNIX underpinnings of OS X just ignore this part, it’s really irrelevant). The two new files will be called /dev/cu.usbserial-xxxxxxxx and /dev/tty.usbserial-xxxxxxxx with the xxxxxxxx being the serial number of the device you plugged in. The Esduino will also appear in the System Profiler under USB. I’ll make a quick note that those two files in your /dev directory will only appear when you plug the Esduino in, if you don’t see them you’re device probably isn’t plugged in.

Now your computer is communicating with the Esduino board, what’s next? Well you need to interact with it. All Esduino boards come pre-loaded with an application. This application can be interacted with through the virtual COM port. First before you begin flip the switch on the microcontroller into the run position. In order to communicate with the virtual COM port I found a good program called CoolTerm. Open CoolTerm and open the options dialog (click on the toolbar button labeled Options). Under the Serial Port Options group select usbserial-xxxxxxxx from the port combo box and then click the OK button. Now that you’re back to the main window click the Connect button on the tool bar and press the enter key. A text menu should appear and you’re up and running.

Yes this is the kind of thing I do for fun. See how messed up I am?

Missing the Point

I seriously don’t understand Oracle. The bought up Sun Microsystems a while ago and have been working hard on ruining all obtained products as quickly as possible. Although Sun was never good at monetizing what they produced they made some great stuff and were usually pretty open with it. Java, OpenOffice, and Solaris were all open source products by the time they ended up being bought by Oracle.

The main benefit of Java has always been the ability to “write once, run everywhere.” Java doesn’t always deliver on that promise by nine times out of ten it does. I know a lot of people still give Java flak for being slow, bloated, and a device to butcher babies but frankly anybody who’s worked with it on a serious project generally walks away feeling that Java is a viable tool to get jobs done. I rather enjoy the fact that I can write a piece of software, compile it once, and then run it on my Windows, Linux, and Mac.

Apparently Oracle doesn’t understand this advantage and are now looking to monetize Java. I have no problem with monetizing a product, I’m a free market advocate after all. The problem I have is how Oracle is planning on going about monetizing Java. Their talking about releasing to version of the Java Development Kit (JDK), a free one and a premium one. By the sounds of it the premium version of the JDK will contain performance improvements in addition to some additional libraries (mostly for interacting with Oracle’s other products).

For a product like Java divergence is a bad thing. Once you remove the guarantee that an application you wrote will run on any platform with a Java Virtual Machine you’ve also removed the only real advantage. If there are two versions of the virtual machine the most likely outcome is people will only write software to target the free version as that’s the only version you can guarantee people will be willing to obtain. Java has always had a reputation for poor performance (a reputation that should be abolished at this point) so having performance only in the paid version is going to hurt the product’s reputation even more.

Frankly I just don’t understand Oracle’s strategy. They seemed to have purchased Sun just to ruin their products as fast as possible. Thankfully this purchase happened after groups already implemented clean room developments of the Java Virtual Machine and Application Programmer Interfaces (APIs) which gives us an alternative to whatever Oracle comes out with.

iOS and Android Compared

I’ve had some time with iOS on my iPad and Android on my Evo 4G. Obviously there are a lot of differences and I figure I might as well record some of them.

I know there is a lot of debate on whether Android is open or not. Personally I’ve complained several times about how locked down Android is on most phones. After working with iOS for a while I can say for a fact that iOS is a veritable prison compared to Android. Although Android can’t do a lot on a phone that hasn’t been rooted it isn’t tied to a desktop computer.

Generally I don’t have to connect my Evo to my computer unless I need to get some files off of my desktop. I can download most files onto my phone from my phone. The iPad is far different in that it requires all files be downloaded through iTunes. You can’t do a damned thing on an iOS device without a desktop running iTunes. That’s pretty restrictive if I do say so myself.

A big part of this problem comes from the lack of a universal file storage area on iOS devices. On Android devices any files stored on an external media (think SD card) are readable by any application. This means if you use the browser to download a file onto an SD card you can open said file with another program. This can’t be done on an iOS device. If you want to download a file and open it in another program you must download that file on your desktop and transfer the file to your iOS device via iTunes. This is probably the largest limitation in iOS devices.

Another thing that keeps the iOS platform locked down is the inability to install application from a source outside of iTunes. If apple doesn’t approve an application you simply can’t install it. On most Android devices you can side load applications. This means you’re not at Google’s mercy when it comes to applications you can install. Once against this is a pretty severe restriction to place on a device.

One thing that Android has that if find lacking in iOS are widgets. I never thought I’d like widgets so damned much but honestly they are very nice to have. My home screen on my Evo displays the time, weather, upcoming appointments, and my todo list. To see these I just have to turn my phone on. On my iPad I’d have to open a weather application, the calendar application, and a todo application one after another. Widgets make getting specific information quickly easy.

The final mistake made in iOS was the notification system. When an application sends a notification a dialog box pops up and must be dealt with before returning to whatever you were doing before being interrupted. Android has a much nicer system where an icon appears in the upper left-hand corner of the screen and you can read the notification but running your finger from the top of the screen down. Doing this brings down the notification area with a list of all current notifications that haven’t been dealt with. Neither is as intuitive as WebOS’s notification system though.

Now that I’ve bitched about iOS let me focus on the things it does well. The mos notable difference between iOS and Android is the interface. Apple has a long tradition of having consistent and easy to use interfaces. That tradition holds true on iOS. All the included applications have intuitive interfaces which are easy to navigate. Navigation is done consistently in the included applications as well. For instance if I open and application, flip to a new form, and want to flip back I can rest assured that the button to return me to my previous screen will be in the upper left-hand corner of the new form.

Android is the opposite of this. The user interface in Android is inconsistent at best although it has been improving over the various versions. Hell there isn’t even a unified e-mail application included in Android. If you use GMail then you can use Google’s GMail application otherwise you are stuck with the other stock Android e-mail application. These two applications don’t even work in similar manners. For example GMail has a threaded interface with the controls for replying at the top of the e-mail header. The other e-mail application has no conversation threading and replying is done via two buttons at the bottom of the screen. I haven’t a clue what Google was thinking with this but it’s not done properly.

Although it hasn’t been released for the iPad yet I’ve played with iOS’s multitasking via emulators and devices at the Apple store. I’ve mentioned that the back end mechanism for doing multitasking in iOS is poorly implemented but the interface for switching between running applications is better than the standard Android mechanism. In iOS tapping the home screen twice brings up a list of “running” applications (application still in memory but not using CPU time). Every application that’s still in memory will be listed and can be selected by tapping on the application’s icon. Android’s mechanism is… inconsistent. Holding down the home button will bring up a list of the last eight used applications which is tedious (it’s roughly a one second button hold which doesn’t sound long until you’re trying to quickly navigate between three applications). Some applications are good enough to place an icon in the notification bar which makes navigating back to that applications as easy as opening the notification area and tapping on said icon. One again neither are as intuitive and quick as WebOS but this post isn’t about how to do an interface correctly.

If there is one thing Apple is good at it’s polish. I can’t never say that enough because it’s honestly very true. Most things under iOS just scream polish job. The interface is consistent, animations always run smoothly, and shit happens when it’s supposed to (when I rotate my iPad the screen rotates instantly, sometimes my Evo requires a few violent shakes to get the screen to notice I changed the device’s orientation). Everything on iOS is kept simple and uncluttered which I really appreciated on a mobile device.

The bottom line is you have a choice; a very pretty and well run prison or a village to roam where little was planned in accordance with other parts. Frankly Android still wins in my book because I can actually have a device that doesn’t need to be tethered to my computer at any time. On the other hand using iOS is a very pleasant experience and I can know with some matter of certainly what will happen when I do something.

Why I Don’t Trust Cloud Computing

The center tile in buzzword bingo these days is “cloud computing.” It’s a fancy term for a return to centralized mainframes of yesteryear. It’s a simple concept, put all your files onto servers connected to the Internet so your files are available anywhere you go. Although this part of the idea is sound (so long as you’re encrypting your data before sending it out to a server you don’t control) some people use online storage as their only means of data retention. The latter part of this is the thing that will fuck you over hard.

Case in point Facebook just bought drop.io, a popular file storage and sharing site. The following notice is what is important to this post:

Drop.io is free up to 100 MB of storage, but some people pay to get more storage. Nov. 15 will be the last date when drop.io will charge users for extra storage, and those paid users will also lose all their data after Dec. 15.

Never have your data exclusively on a storage system that you do not fully control. I have friends who use Google Docs as their word processor and sole means of storage. If Google decides to shut down Google Docs that’s it, my friends’ files are gone.

I encrypt and backup my most important files to Amazon’s S3 service. The reason I utilize S3 is so I have an off site backup in case of my apartment complex burning to the ground or other unforeseen event that could destroy everything I own. Of course I also keep a local copy of every file I create (two copies actually, one of my computer and one on a backup drive) in case my Internet connection goes down, Amazon’s S3 servers hosting my data go down, or Amazon decides to terminate S3 out of the blue. The main thing I’m trying to get across here is the fact that you should never use online storage that you don’t completely control as your sole means of data retention. Always have a (preferably two) local copy of every file you create. Everybody who stored files on drop.io has a month and a half to get their data off before it’s gone forever.