Monday, July 9, 2012

BoycottApple: Come on Internet...

#BoycottApple trended on Google+ for nearly the entirety of last week. Google-fans are infuriated at Judge Koh's decision to grant Apple an injunction on the Galaxy Tab 10.1; but more-so at the injunction against Google's flagship device, the Galaxy Nexus in the US. They claim that Apple is stifling innovation with this lawsuit. As such, the BoycottApple hashtag became 'a thing' the last week, prompting numerous posts about how, 'Apple sux' or my favorite version of the hashtag, #FuckApple.

This also seems to have brought out the most il-informed, il-mannered, and just over all repulsive Anti-Apple Fanboys that the internet has ever seen... Attacking every post that has anything to do with Apple with insults. Come on internet... we have a problem here.

Being an Apple fan and an Android fan, I feel a little torn posting things like this, but the behavior of some of the children on G+ has prompted me to.

BoycottApple means absolutely nothing when it is trending on a social media website that is most likely 90% Android users already.

There, I said it. And its true. If it actually meant something, it would trend everywhere, not just on a community of biased smartphone users. You would see it trending on Twitter, you would see news articles on big sites like Gizmodo, Engadget, The Verge, etc... Instead, you only see anything related to it in 3 places; Google+, small-time bloggers (like me) who need something to talk about, and Pro-Apple blogs who need to point out the stupidity of this 'movement'.

The only reason this matters at all, is the fact that it is bringing the ass holes of the internet out. Honestly, when I'm on G+, I feel like I'm browsing 4chan with the number of Anti-Apple users calling Apple users 'fags' and 'ignorant'... Seriously, does that make Android look more appealing? Using words like that to describe people of differing opinion? Come on...

Be sensible please. I don't care if you make Pro-Android posts. I don't care if you make posts pointing out the flaws in iOS devices when compared to Android ones. But will you all stop harassing people so we don't  have to sift through low I.Q. insults anymore?

Saturday, June 30, 2012

Google IO 2012: After the High


So now that Google IO is done this year, I want to take the opportunity to look back on it after the high they gave us has warn off. Was everything they said and announced really as good as they made us think?

Well, some things yes. Others, not so much. There are some blaring deficiencies that should be noted. We'll get there when we get there though, lets start with Jelly Bean. In all honesty, every thing there is what we expected and hoped for. It is faster, smoother, and has some new features to boot! Google Now has already proven to be more accurate and helpful than Siri, but it will have to watch out for the Apple Patent-Hammer to come down on it as it has just recently come down on Samsung.

Let's move to probably the most anticipated part of the week, the Nexus 7. A $200 tablet that has specs to back it up. It blows the Kindle out of the water. Something interesting to note here though, is that with this tablet and unlike Jelly Bean, their primary competitor was not Apple. In fact, they look to have completely ignored Apple and have went after Amazon. A smart move in their case since Google makes next to nothing on the Kindle Fire, a completely Amazon-based ecosystem.

But looking at this, has Google temporarily ceded to Apple in the tablet market? Android has been after the iPad's market share for nearly 2 years now. It looks like Google has decided to be content on the overall tablet market share, and work on its own internal, Android market share. While this is cause for celebration with consumers, a $200 fully qualified tablet, this means something completely different for manufacturers.

Google has to either be taking a loss, or at the least breaking even on these tablets. This is okay though, because Google makes 30% on every app purchase you make as well as a percentage of every other sale on the Google Play market. Manufacturers though, can't do this. When they take a loss, they take a loss. And now that Google is able to make a tablet half the price of their tablets, what is the incentive for them to continue making them? This could be the spark that will turn manufacturers to Windows 8 instead. Yes Microsoft is making a tablet, but it will most likely be in a competitive range that will be easy to undercut by removing features. You can't really undercut $200.

So is this a cause for celebration with us consumers? It means cheaper tablets for us so yay! But it could  also see manufacturers jumping ship to Windows for future software solutions. This will just mean that we will revert to the old market shares of the PC era. Windows dominating the market while others fight for 2nd place (assuming that the same happens to the iPad that happened to the Mac back in the old days when competing against the licensable Windows that is).

Item number 3! The Nexus Q!

Ok first, what even is this device? I've been having a hard time trying to describe this to friends and family, especially if they are even a tiny bit knowledgable about Google's current offerings. Google goes and gets you all excited for this device, showcasing it's streaming, pushing, and beauty. Then, they quickly drop the price on us, $300! When trying to tell friends, all they ask is "What's so different about this and Google TV!?" and all I can answer is "I don't know! But this one is $300!". That usually gets me a few looks... 

But this brings up the two big flaws of the Nexus Q. Its price, and the fact that it is in direct competition with all current Google TV offerings. Again, Google is doing more damage to it's supportive hardware manufacturers than it is doing good. Vizio just announced an array of beautiful hardware devices, one being a Google TV set-top box for only $100!

Luckily (or unfortunately depending on how loyal you are to Google products), I can't see this one getting many sales. It is a nice product, a beautiful one in fact. And the price is justified because of it's US manufacturing origin. Except Google isn't even up-playing that. With all the drama around Apple and Foxconn, you would think Google would be like, "Hey, we made this here. All of it. We gave you jobs!". But the fact remains, it is a $300 device that is really just a software upgrade above Google TV and Apple TV. Yeah it has the analog audio outputs, but Apple has AirPlay. This is not a equivalent replacement for Apple's offerings.

In a trend set by the likes of Sergey Brin and Kanye West, "Nexus Q, you're cool and all, but Apple/Google TV's are still the best". Was it all just hype? Sorry, but I think so. All of it's features can be implemented in software updates in cheaper hardware that is already widespread through our technology ecosystems.

Monday, June 25, 2012

Swipe To Dismiss Beta Library from Google Itself!

Roman Nurik, an Android developer at Google who you will be able to check out at Google I/O next week, has released beta code for a new swipe-to-dismiss pattern for lists.

It's an idea that has been around in iOS for a bit and is about to jump ship to Android as well. Now, don't get all "I hate iOS! It should stay over there!" just yet. Just like programming languages can share design patterns in code, these two mobile OS's can share some UI patterns as well. And it's a good thing because gesture apps are gaining serious ground on iOS and Android developers should really jump on that if they want to be on the forefront of this new pattern.

But really, the idea is simple. Say you have a RSS app. Previously, you could have implemented a long-click or placed a button on each list item to mark that article as read and remove it from the list. But these things take time or make UI's ugly. In walks swipe-to-dismiss. Simply touch the list item you want to remove and 'swipe' it off the screen. Then the list removes that item, and shrinks! Simple as that. If you have an iOS device, check out Clear as it is, in my opinion, currently the best application built around gestures.

The goal of your mobile application should be to provide as much functionality to your users, as fast as you can. You don't want users to have to sit in your app waiting or trying to figure out how to do something. Swiping provides a unique and natural feel to your app as the user is directly interacting with that UI element like it is actually on their table. One thing to remember though; gestures don't present themselves to a user like a button does. It is not readily obvious that they are there and users might spend a long time looking for that piece of functionality. Be sure to let the user know that this action is here somehow. Once you have, this pattern is so natural, that it should take hold right away in the user's mind.

The library Roman Nurik has posted is found here but remember it is only in beta. Also, this library is for Android 4.0 and up. But no fear! For Jake Wharton has brought it to work on all api levels with his NineOldAndroids library here!




Tuesday, June 19, 2012

Introducing Android Fly-in App Navigation Library!

This article is to introduce my Android library for Fly-in App Navigation, or Side Navigation, or Slide out Navigation, etc... If you don't know what that is, check it out here!

My implementation allows developers to import this pattern into their apps with nearly no work at all. I handle all laying out of the main and menu views, as well as the animations. Developers can design the menu and main layout completely separate in their own xml definition files, as if they were stand alone layouts (which they are!). You can also specify just how far out you want the menu to slide. If you want it to slide all the way, it can slide all the way. If you want it to slide just enough for icons, go ahead! My implementation gives you complete freedom to make your layouts look how you want.

Some features include:
  • Open and Closing Animations on the Main View
  • Small Open and Closing Animations on the menu to add some reality to it
  • Dropshadow on the Main View to make it appear to be over the menu
  • Smooth animation transitions for a professional, quality animation
  • Empty layouts that allow you to completely design the menu
  • Simple usage
  • Easy injection into your existing projects


If you want to see it in action, check out the app on the Google Play Market!! 


How to Use

Using this library is simple. First, download the project from github (see link below). Then, import that into your Eclipse workspace. Once done, select the project you want to use this in, right click->properties. Go to the android tab and scroll down to add-library. This library should appear in that list. Select it and you're set up, ready to go.

To use the FanView class in xml is simple. Here are the two required things (plus me showing you how to set how big the menu should be!):

<?xml version="1.0" encoding="utf-8"?>
<com.deaux.fan.FanView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/your.package.name"
    android:id="@+id/fan_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    app:menuSize="200dp" />

And that's everything! There is a sample java file in the readme of the github project so check that out as well!

So go to github now and start using it! Here's the link!

If you find any issues please report them in github and I will get to them immeaditely! For the record, this is not meant to be used with Tablet devices. Tablets should refrain from even using a pattern like this. There are many more appropriate patterns like the Split View pattern.

Thursday, June 14, 2012

Why You Should Start With Android

As an intro to the real world of programming, Android is perfect. It is simple, it is widely used, and it is Java. Android is like the Windows of 10-15 years ago. It is like the wild-west of programming where anyone can be successful with a little hard work and some luck. As a programmer, starting your portfolio off with some nice looking Android applications will go a long way.

Android only requires knowledge of the Java language and some very basic Google'ing skills. Java in itself is one of the best learning languages today. It's documentation is the best and most standard across libraries around and is taught in high school computer science programs across the country. As long as you have some basic Java knowledge and the drive to learn more, Android will be easy.

Developing a beautiful app is now easier than ever since Android 4.0. Default UI elements are actually appealing and very cohesive. And with the release of ICS, Google finally released some design documents on how an Android application should look and function. They have put everything in place to get you on your feet and running to your first app. Speaking of that, it only costs a one time fee of $25 to publish to the market.

Here are some resources you should definitely take advantage of to become a better programmer.

Getting Started: Get up and running with your first app!
Android Design: How your app should look and act!
Library Documentation: How to make your app look and feel the way you want!
Becoming A Better Android Programmer: How your apps should be structured

Monday, June 11, 2012

How to Become a Better Android Programmer

So you've come here to learn a thing or two about Android programming eh? Or maybe you are just learning and want to start in the right direction. Either way, this is for you.


When I started developing Android applications, I was just out of high school. As such, I wrote high school level programs. They worked, but software-wise, they were horrible. Duplicate code, single classes doing all the work, etc... But I learned.

Model View Controller Pattern
This. When you move on from here and continue googling random search terms, Google this. Model View Controller Pattern or MVC for short. It is a pattern focused around UI's that is perfect for mobile development and should be used by every Android programmer, all the time. This pattern focuses on three different elements per screen in your app. The model, the view, and the controller. These three different, separable, and reusable classes talk to each other in a very specific way.

The Model is like the data you are going to present. Say you are writing a contact book app; the model, in this case, would be all the data containing the contacts and their information.

The View is the screen your user will see and interact with. This will be the class that renders the xml view and handles all UI interactions.

The Controller is the class that controls the interaction between the view and the model. The view will ask for a list of contacts and the controller will grab the contacts it has, and give them to the view.

Now these interactions are very important. A controller can talk to the model and the view. Views and models interact with the controller at a very high level. In reality, a model should know nothing about the controller (or the view for that matter) because it is just the data and nothing else. And the view should not be manipulating the models, it should just be consuming them. The controller manipulates/creates/destroys the models for the view. It is important to note that the View does not own the Model, the Controller does.

public class Model{
   private String someData;
}

public class Controller{
   public List data;

   public List getData() {
      return data;
   }
}

public class View extends Activity{
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Controller controller = new Controller();
        controller.getData();
    }
}

The State of Android

With the ICS release our core objective as a company is to get all of the hardware vendors onto that platform.
- Eric Schmidt December ‘11

Almost all of our users are running iOS 5... now if you compare that to the competition. They released a dairy product, 4.0, about the same time as we released iOS 5. About 7% of their users are running it.

- Apple WWDC June ‘12


Those two quotes speak for themselves. Android has been on shaky ground lately. Its daily activations and market share growth have slowed in the last few months. Don’t get me wrong, they are both still on the up, but not nearly as fast as in the past. With this article, I just want to look at Android from a user’s standpoint.

Since its birth, Android has been a revolutionary mobile OS. It was published by a truly visionary company, Google. At a time when Macintosh vs Windows commercials were the norm, Microsoft and Apple were the only competitors in the computing world. Though Microsoft obviously won the desktop computing battle, Apple stood firm. When Apple released the iPhone, it seemed strange that Google, not Microsoft, was the first to really step up to try its hand against the steady fruit.

It had its faults, biggest of all being how ugly it was. But nonetheless, it drove its stake into the ground and quickly gained popularity. Following the footsteps of Apple’s previous competitor, Android was licensable software that could be sold to hardware makers. This would expand Android's market share faster than any other method. With that, Google decided to make it open source. But here is where we find Google’s first mistake with Android. Making Android open source opened the doors to something they couldn’t handle and was fertilization to the fragmentation flower.

With Google’s immense resources, updates for vanilla Android flowed. Unfortunately, they flowed into a dam called hardware manufacturers. They all had their own personalized flavors of Android that they had to mix with the vanilla each time it was updated. Pretty soon, Google realized the consequences of their open source child as updates were taking longer and longer to actually get to users. This pattern occurred over and over.

Fast forward to the present. Google now has in place guidelines for all manufacturers that attempt to bring fragmentation down. These guidelines have brought up the majority of devices to Android 2.2 and 2.3. The downside? 2.3 is 1.5 years old and 2.2 is 2 years old. Google’s most up to date flavor of Android, Android 4.0, has 7% market share as of June 1st, 2012. It was released 6 months ago and we can only hope that it has the 65% market share this time next year. But by that time, Android 5.0 will be out and we will be anticipating 6.0...


But it is not all doom and gloom. Android 4.0, Ice Cream Sandwich, is a beacon of hope for Android enthusiasts. A fresh new 'Holo' theme makes apps using standard ui elements b-e-a-utiful. And finally, some design guidelines to follow to have a unified look among Android. Hopefully that will deter some of the iOS look-a-like apps developers have been making. Google is also requiring smartphone makers to leave the themes unaltered. If they do not do this, those phones will not get access to the Play Market, a series determent.
Android is young. To add some humanity to it, Android is like a teenager. We all know how much we change in the four years between 14 and 18. Right now, Android looks like the hormone filled, acne covered teenager we all used to be. The only appealing thing about it is the fact that there are so many of them. Android has the edge over iOS in terms of market share, but lacks in looks and usability.  Android 4.0 looks like that young adult we all matured into. Its Holo theme is beautiful and the restraints Google has in place to make sure it stays beautiful are refreshing. But for now we have to deal with this mood-changing version of Android.