Android Articles

#ios2weekchallenge Initial Thoughts

by Stephen Fluin 2014.10.25

Two weeks ago today I embarked on a journey to switch to an iPhone 6 as my daily driver.  It started off a little rocky with a trip to three different T-Mobile stores in order to get a SIM card. The first store was out, the second store wanted to charge me for them. Luckily the third store was able to give me one and suddenly my phone number and universe was driven by an iOS device.

Rather than go into a long narrative, here's a list of the pros and cons I have experiences.


  1. Swiftkey for iOS isn't ready yet. It has no number row on the keyboards, it has no voice recognition, it has no rapid/accuracy selector.
  2. iOS custom keyboards aren't ready. It's a hugely jarring experience to be using a custom keyboard and to be dumped back to the iOS standard keyboard for password prompts.
  3. Notifications suck. On Android, Notifications drove my entire mobile workflow. With iOS this feels impossible. There's no way to interact with  many notifications quickly. You have to launch an app, interact, then jump back to the notifications. They need quick actions really badly. I have no idea how their wearables are going to work without these.
  4. Google Apps aren't as good on iOS. Most notably, you can't click on phone numbers in emails. What?!
  5. Where are the wearables? I've gotten used to a buzz in my pocket causing a corresponding wrist or head nod to take a peek at what's going on. With iOS I know the Apple watch is coming, but today I still have to pull the entire device out of my pocket (by which point the notification is gone) and take a peek.
  6. The iPhone 6 is slippery! I'll post a video later, but hold an LG G3 or a Nexus 5 in one hand and an iPhone 6 in another. As you start tilting your hands, the iPhone is going to drop to the floor first. This matters because some acrobatics are required to interact with a 4.7 or 5.5 inch phone. My 5.5 inch LG G3 makes it easier to touch the top of the phone than the 4.7 inch iPhone.


  1. Epic Camera. The iPhone 6 camera is the best smartphone camera I have ever used. Night time, day time, it's fast and reliable. I would LOVE to see this camera on every phone I ever use again.
  2. Touch ID is great. Finger prints are a surprisingly good security mechanism. I always took pleasure in using it, it's basically just fun. The only glitch is that it goes a little bit slower sometimes.
  3. Apple Pay is awesome. I've used Google Wallet for years, but Apple has done something amazing. Not only do they have broader support (banks!) from partners, but the experience of using your fingerprint for authentication in combination with a simple tap (even from the phone being off) is much better than having your Android phone on and unlocked prior to making a transaction.
  4. Weight and slimness of the device is highly desirable. There's no Android phone this fast, slim, and light. Which is nice, as long as it doesn't bend, :).


Google Camera & Lens Blur: The Future of Photography

by Stephen Fluin 2014.05.02

Cameras have been almost the same for hundreds of years. Whether it was digital or analog, we stored a single two dimensional image of a scene. Modifications could be made to the photo, but there wasn't any magical extra data that could be recovered.

HDR photography has improved this; by taking multiple pictures different exposures, your camera can blend and combine multiple photos in different ways to visualize a scene differently. Somestimes this even gets closer to the way the human brain procesess light and information. Lytro is a company that also took this challenge on, building new sensor technology to allow the user to refocus a picture after it is taken.

With Google's Project Tango, it seems like the realm of computer vision and modeling is beginning to pick up steam as we are seeing the fruits of a huge amount of innovation. Project Tango takes a relatively standard smartphone, adds two cameras, a high quality gyroscope, compass, and a depth sensor to turn images of the world into a 3d model of the world automatically.

But Google has gone further, proving you don't even need two cameras or a depth sensor to gather some of this information. Using advanced algorithms, the new Google Camera for Android asks the user to move their device after taking a picture, and measures the 2d parallax effect to calculate a depth map. Using this depth map, Google allows the user to create a photo with properties of a high-quality DSLR and lens, featuring a low depth of field that the human eye finds very appealing. This depth map is even stored with the image. This depth map allows you to selectively blur the photo based on distance, and many other cool things.

Thankfully Google has even exposed this depth map to users. Visit on your phone and you will be able to see and manipulate and play with any of the photos you have taken with lens blur.

The technology isn't perfect yet, and we will require higher and higher camera resolutions to take advantage of these technologies, but the future is bright.



Top 10 Predictions for Google IO 2014

by Stephen Fluin 2014.05.01

I was lucky enough to attend an IO Extended event in 2011, and ever since I've been hooked. Google IO is a conference that combines the latest in technology, with a spirit of advacement and disurption. As a consumer and a developer, it's like Christmas. You get a bunch of new toys and tools to play with.

I'm attending Google IO 2014 in person in San Fransisco this year, and here are my top 10 predictions:

  • 10. New Nexus 5 (or Google Phone)
  • 9. New Nexus 10 (or 10 inch Tablet)
  • 8. Android 5.0
  • 7. New Chromebook Pixel
  • 6. Chrome Web Store / Google Play Semi-Merger
  • 5. Multitasking on Android
  • 4. Public Availability of Google Glass
  • 3. Google+ New Features
  • 2. In-Car Android with Several Car Manufacturers (Tesla?!)
  • 1. Android Wear / Google Glass Merger



A Year of Android Studio

by Stephen Fluin 2014.04.30

It has almost been a  year since Google IO 2013, where Google Announced a new IDE for Android, called Android Studio. Android Studio has been a major problem for developers and development companies since this date due to the schism between Eclipse and Android Studio.

Developers have to decide whether they build applications using Eclipse and Ant using the stable toolchain and tools they have been using for years, or whether to adopt the less stable and constantly changing Android Studio. What complicates this matter is that new Android capabilities and support and documentation is coming to Android Studio faster than Eclipse.

Grade at the Heart

Whether JetBrains or Eclipse have figured out the "best" way to build an IDE doesn't really matter to me as a developer. What matters most is that my toolset gets out of the way of me writing great applications.

This may be my naivete or lack of skills, but I find Gradle to be a terrible build system. It's not terrible from a feature set, or from it's logical architecture or flexible structure. It's terrible because it gets in my way. With Eclipse and Ant, the Android build system is exposed to me as a single file configuring the use of proguard. This file is optional. To get any Android application to work, I just need to tell Eclipse that it's an Android app, and it will handle the build process. My code will work if I create a new project, or if I move my code into someone else's system. 

With Gradle, this process is bad. When I check out code from the internet and try to import it into my project, it fails. If I am missing one of the five gradle files that have meaningful configured content that I must protect, nothing is going to work on my application. Why is this build system trying to hard to get in my way?

Example Gradle Failure - ChromeCast Video for Android

Code sharing should be easy. To help developers learn to build applications for ChromeCast, they have created and released a starter project called CastVideos-android. This project is available publicly on Github here:

When I clone this project and attempt to import it into Android Studio, everything seems to go wrong. The first time I attempted to open it, it opened the /gradle/ folder, rather than the project file, meanining there was no source code. The second time I tried, I noticed that it wanted me to find the gradle.settings or build.gradle files, and I did that, but then my project wouldn't run because Error, configuration with name 'default' was not found. How am I supposed to fix that? Your default configuration is missing? Gradle is too complicated, and its use and existing right next to working code means it gets in the way of development. 

SEPARATE BUILD AND DEVELOPMENT PROCESSES. I understand they are connected and should be as smooth as possible, but look at Yeoman and Grunt, these tools do the same thing Android Studio is trying to do with Grunt, but they do them much better. 


Gradle may be great for huge teams or multi-year development projects, but I would argue that most of Android development doesn't happen this way. Android is most commonly used by small 1-5 person teams that need to write code quickly and get it out to users. 


Walled Garden or Desert? The story of the Miracast failure

by Stephen Fluin 2013.07.15

Having just returned from a trip to my local Best Buy, I was posed the question by a friend "Would you rather live in a walled garden, or in a desert?". This can feel like the choice we are forced to make between propretiary technologies and free or standardized technologies.

Galaxy S4The context of the question was with the Samsung Galaxy S4 google edition (i9505g) and Miracast. At Google IO 2012, Google announced that Android 4.2 and above would be supporting the wireless display standard known as Miracast. Since then, support has been virtually non-existant. This includes both the Nexus 7 and the Nexus 10, both of which were launched with Android 4.2 (after the announcement), but without miracast.

Since then, Google has launched exactly two devices with Miracast support, the first is the Nexus 4, and the second is the Galaxy S4 Google edition.

Giving it a Try

Searching the internet for Miracast-capable devices results in around 4 devices, which state support for a confusing blur of standards, sometimes ignoring Miracast entirely. They all seem to cost $60+ at this point.

The closest thing that Samsung is pushing hard is the Allshare Cast capability, which all of their TVs and devices are equipped with. This proprietary version of display streaming seems to work very well when you have a handful of samsung devices, but do I want to be forced into using Samsung's standard and only buying their devices? If I wanted to do do that, I could just buy only Apple products and most likely have a superior experience with an iPhone, iPad, and an Apple TV.I went to Best Buy to try out Miracast's compatibility with these devices before making a purchase.

We found 6 TVs that stated support for Wireless Display, and 4 of them even showed up on my SGS4 GE as available, but connecting was flaky. Although I was able to mirror my phone on 2 Samsung TVs, the connection was slow and only lasted around 20 seconds before failing.


Perhaps the Miracast technolgy is too new, it's disappointing that neither the proprietary Android world has adopted it, nor any open source versions. Theoretically Linux or Ubuntu could provide direct support for the streaming standard over Wifi, but to date there seem to be no attempts to do so. The closest was a project to add Miracast XBMC on the raspberry pi.



Photospheres Begin to Penetrate the Internet

by Stephen Fluin 2013.05.03

A recent improvement to the Google Plus javascript widget and API allows us to convert static photosphere images into interactive widgets, composing full rotational views of the world.

See more information and learn how to create your own On Google Developer's Panorama Website

Constant Revision Is The Only Way - GoPro's Failure

by Stephen Fluin 2013.03.30

GoPro AppIn the modern world, there is a lot of complexity, and software is no exception. There's a hilarious xkcd that describes the splinter groups within hobbyist crazy straw fanatics, describing the fractal nature of such complexities.

One of the most annoying example of these comes with the complexity of publishing a polished high-profile mobile application. Within cameras we have digital cameras, within digital cameras we have the sports enthusiast market, within that market we have products like the GoPro. The GoPro announced The Hero 3 last year. WIthin the Hero 3 there are 3 editions. And for these editions there are mobile applications for both iOS and Android. The problem arises with the amount of effort it takes to launch applications like this.

In the 1980s there were hundreds of programmers working across the globe, in the year 2013 there are tens of millions of programmers working on building, rebuilding, and connecting software all across the globe. The net result is that there is a lot of software being built now, and it can be very hard to ensure it is all polished.

It's maddening to see applications where it's evident that a lot of time was spent, but then they miss some of the most basic details. This is the case with the Hero 3 Android Application. I haven't tried it out, but despite all of the time it took to design, build, test, and launch the application, the team responsible for putting it in the store completely failed.

GoPro Failure in Google Play"With the GoPro App you can now control your GoPro camera remotely using an iPhone, iPad, or iPod touch." This is one of the main descriptions for the application in Google Play, the Android marketplace. How much work would it have been for the person who copied and pasted the description to fix this? How much work would it have been to tweak 3 words at any point when working on publishing updates?

Perhaps this is irrelevant, and it obviously hasn't hurt their brand or their sales, but it's still amazing that oversights like this happen, propagate, and persist. If you try to look at how to prevent and fix this paradigm, constant minor incremental improvements are the only way. Every day, try to do better than the day before, and don't like with broken windows.


Canonical Announces Ubuntu For Phones

by Stephen Fluin 2013.01.02

There is now a fourth player in the smartphone arena (and it's not RIM).

Today at 12:00PM CST, Canonical released a video recognizing the past, and announcing the future of Ubuntu. The future as proposed by Canonical's Mark Shuttleworth, is for Ubuntu to be a universal computing platform. Recognizing apps, content, and data as being universal, with customized interfaces for different form factors like Tablets, TVs, Phones, and Desktops. 

This news is exciting, because being Linux and open source-based, multiple architecture and multiple device application development will be an easier dream to achieve. This would be a strong message to Apple, Microsoft, and Google that they have failed to unify all of the devices of a user. Ubuntu is a platform that I have used every day of my life for the last 4 years in the desktop space, taking that level of capability, stability, and power to other devices may be a winning combination.

In late 2012, Ubuntu TV was announced as the first extension to the Desktop Ubuntu experience. Shortly thereafter, Ubuntu for Android was announced. Ubuntu 12.10 was heavily optimized for touch and tablet interfaces. Now to complete the specturm, Ubuntu for phones is here.

Major Innovations

The biggest and most exciting accomplishment has been the promotion of web applications as true applications. I've been predicting this from Google's Android for a while, but it looks like Ubuntu may beat them too it. Apps built using HTML5 for iOS and Android will work perfectly on this device.

QML as a native development technology that combines standard application development methodologies, with simplified markup and Javascript and CSS for UI Glue is exciting.

Finally, Ubuntu has been working on intelligent and context-based menus for more than a year now. On Ubuntu phone they are exposing all of these interfaces via phone commands. Surpassing even Google's voice capabilities.

Support for Android-designed hardware is a part of the plan. This is a huge deal and something neither Microsoft or Apple could ever replicate. This means that any Android phone (and there are a ton of great ones) should be able to run Ubuntu. This means that all of the great Android hardware I've acquired should work very well with this new exciting mobile operating system.

Ubuntu's Challenges

 The biggest challenge facing them is a lack of expeirence with heavy cloud applications. Historically they have relied on third parties, which could result in a fragmented or broken experience. This is exacerbated by the fact that the major service providers also have their own mobile platforms, so support may be slow coming or completely missing.

As of 1:00PM CST, their app development website is offline due to heavy load. This in interesting sign of the level of interest around developing for this platform.

Currently there's no plans for wearable computing, which will be an area for Google to innovate and easily exceed the capabilities of  Apple, Microsoft, and Ubuntu.


Why I Haven't Bought a Nexus 4

by Stephen Fluin 2012.12.27

I'm a huge fan of Android and Google's line of devices running the latest and greatest version of Android. In my backpack right now I currently have a Nexus 7 and a Nexus 10. In my pocket is the Galaxy Nexus. In the past I used Samsung phones like the Vibrant (USA T-Mobile version of the SGS1) and the SGS2, but since I received my Galaxy Nexus at Google IO 2012, I haven't really pined for any other phone. The Galaxy Nexus is a dual core device running the Android Jelly Bean 4.2.1. Compare this to the non-Nexus world, my family and friends on Verizon all use the Samsung Galaxy S 3 (SGS3). I have a huge amount of epxerience with other Androdi devices. Our company tests our software on a wide variety of devices, so I'm familiar with most of the devices available today.

Nexus 4With my passion for Nexus devices and my typical cycle of upgrading my phone every 6-10 months, I'm shocked with myself that I haven't bought the Nexus 4. Despite having been sold out almost constantly since its launch, I've had 4 or 5 opportunities to buy this device through friends and through brief periods of availability. The device itself is very exciting. With its glass back, bezeled edge, and improved camera, there are a lot of things to like about the device. It's a material upgrade in technical specifications, performing on par or exceeding the latest generation such as the SGS3.

The problelm with this device is that although its technical specs are more than a 100% increase from those of the Galaxy Nexus (my primary daily driver), it's only a 3-10% increase in user experience. What I mean by this, is that although its a supercharged device, it wouldn't really change my life very much. The version of Android it runs is the same as what I have today. It doesn't come with an inductive charger, and no official inductive charger or any sort of official dock has been launched to date. It lacks an expandable battery. I don't use an expanded battery in the Galaxy Nexus, but I feel like I could if I wanted to. Samsung and Apple are decimating Google with their accessory support, and its hurting the Nexus devices. In many cases a phone or tablet isn't a complete experience until there are quality cases and docks for it. 

There have been two or three occasions when I really wanted to upgrade my device. The first is when playing Ingress. It would be really nice to hack portals more quickly, and for the appilcation to load faster. I've missed a couple of portals while driving around because I was waiting for my Galaxy Nexus to catch up. The second was on bootup. I run CyanogenMod 10.1, so some of this may be my fault, but I feel like from all of the videos of this device I have seen, the power seriously manifests itself on bootup. The Nexus 4 boots in tens of seconds, rather than in minutes. This material difference can be frustrating when turning my device on and off while travelling, or when flashing custom ROMs.

Overall, due to the lack of material improvements, I'm waiting on the Nexus 4. Perhaps I'll get one if  my experience with my Galaxy Nexus to degrades, or if they launch a new Nexus phone in 2013, or if Google hands me a Nexus 4 at Google IO 2013.


Android Google Play Error rpc:s-5:aec-0

by Stephen Fluin 2012.12.05

All of a sudden 5 days ago my Nexus 7 would fail to update any application, with the error "Update for "Evernote" could not be downloaded due to an error. (Error retrieving information from server. [RPC:S-5:AEC-0])". I looked around on the internet for solutions. A lot of people recommended clearing data, enabling/disabling/clearing play services. None of these things worked for me.

In the end, I had to remove my main Google profile from the device, and add it back. Then all of a sudden the applications on my Nexus 7 updated perfectly. Hope this helps someone else.


Google Needs to Move Faster With Android

by Stephen Fluin 2012.11.29

Google needs to move faster with Android and adopt a fixed release cycle. The recent launch of Android 4.2 caused several issues for Nexus device users. Everything from experiencing new sources of lag and stutter in the user experience, to completely losing December in the contact application. Some may take this as an indication that Google needs to move slower with their Android releases and perform additional testing stagegates. My feeling is that this is the exact opposite of what they should do. Google, and modern software development in general, benefits from going faster.

What I mean by going faster is building more frequent rolling updates to the platform that do not require user intervention. Chrome for Windows/Linux/Mac is the gold standard representing this ideal. Chrome development happens in the open, meaning all source code for the application is developped using open source licensing, and is immediately availlable after developers commit it to the Chromium project. The Chrome team also has a fixed release cycle, meaning that every 6 weeks all of the users of the software will receive an update. Users can additionally opt in to what they call the Beta or Developer channel to get early access to features, in exchange for giving up stability.

If Android moved to a fixed release cycle, it would have many benefits. First of all, Partners such as Carriers, Manufacturers would be able to develop standardized processes around the adoption of Android. More frequent, smaller updates to the Android platform would force Google to improve their update capabilities. Right now non-Google Android devices are lucky if they are upgraded for a full year after launch. If these devices were build and planned with the expectation of a 6 week release cycle, Google would be forced to improve the robustness, speed, and quality of the Android update mechanism. Making this process transparent and irrelevant to users would be a huge win for the Android platform in general and would continue to encourage user adoption.


Android 4.2 Causes Woes and Problems for Users

by Stephen Fluin 2012.11.26

With Google's Android 4.1 - Jelly Bean release having landed at Google IO 2012, Google seemed to be poised to continue its strong market share growth in the US and internationally. A lot of users stating for the first time that Android as an operating system was good enough (read fast and smooth enough) to take on iOS.

Having been a huge fan of Android and the ANdroid philosophy for years, this was great to see. Android 4.1 was truly faster and better in a lot of ways. Google focused more on polish and stability than on new features.  Having said that, it is now November of 2012, and we have yet to see Jelly Bean on more than 3% of devices. This metric is disappointing, but the blame can clearly be placed on the US phone carriers and on the manufacturers.

Now than Android 4.2 has been released as the latest version of Jelly Bean, Google seems to be shooting themselves in the foot even further. They are back at adding additional features to the platform, with major revisions to Google Now, Camera, the Play Store, and Gmail. They also have made several frustratingly minor updates to the UI of the platform, moving the Back, Home, List buttons from the lower left of the UI to center of the bottom of the screen. Allegedly this is to match how people really hold the device, but as someone that always holds my tablets by the corners, I'm skeptical.

Additionally, tons of user reports are coming in, myself included, that Android 4.2 is really slow on the Nexus 7. I notice that starting up the phone I experience tons of "Jenk" and lag before I can get in and perform actions. Even things like rotating the device can be greviously slow now, taking upwards of one or two seconds.


Tales From The Surface Part 1

by Stephen Fluin 2012.11.01

The mobile landscape is like a riptide. Across the public sector, Android is dominant across the smartphone market, and up-and-coming in the tablet world. Intel, ASUS, Acer, Samsung and LG are working on Ultrabooks to continue the desktop's legacy. In the enterprise, Apple reigns with the iPad. Microsoft, former champion of the personal computig world is a relative latecomer to the mobile space. With their Surface tablet, Microsoft is attempting to extend their former desktop dominance into the mobile space by consolidating the ideas of mobile and desktop into a single platform, and a single device.

Within hours of the launch announcement, I pre-ordered a Microsoft Surface with a cyan touch keyboard, and around noon on October 26th, I first got my hands on this new device. The following is a chronology of my feelings and observations with the tablet.

  1. Touch Keyboard is easier to user than expected - First getting my hands on this very interesting 3mm keyboard, I felt like I was able to find the home row and type without looking effectively. It's amazing that you can rest your fingers on the keyboard, and it recognizes the keypress only when you want to hit a key.  It's also really neat how the device recognizes keyboard position, and ignores the keyboard if it's not in a position for use.
  2. Touch Keyboard is harder to use than expected - Once I got past the initial excitement and I got into actual content creation, I found that I was much slower than I need to be. About 30-40% of the characters are dropped when I type quickly on the device. I can increase that performance, but I have to slow down to do so, giving the device a longer wait between keypresses. Microsoft says it takes 3-4 days to become acclimatized to the keyboard.

    In defense of the keyboard, one of developpers in our office commented that if a keyboard takes 4 days to learn, it was designed poorly. I disagreed, and I challenged him to a typing challenge with me on the Surface and him on the iPad. I would have smoked him out of the box having never touched Surface before.
  3. The touchpad on the touch keyboard is really nice - Despite my feelings about the keyboard for typing, one of the truly amazing things is there is a multi-touch pad sitting in the ultra-thin 3mm cover. It's surprisingly accurate and responsive. When the touch screen lets me down, I can always pull out the traditional cursor to get the job done.  Using gestures on the touch cover feels very natural, even compared to touching the screen.
  4. I feel like I have no home - This was a suprising problem for me. On both Android and iOS, I seem to have developped a compulsion to return "home".  On the Surface when I finish a task I don't have a default action like "home". The start menu is close, but because of the Windows 8 split between the new interactive start menu and the traditional desktop,  it doesn't yet feel like home.
  5. It's cool and nice to have a full windows desktop - Launching any office programs pops you out into what looks like a traditional Windows desktop. This means that I have full control of multiple-window placement. The only problem with this is that are very few apps capable of using this, and Microsoft is pushing developers into using the Metro style interfaces where applications can be full screen, 1/4th screen, or 3/4ths screen. It's also strange that there are no apps for this Windows desktop due to the Windows RT complexities, which means that consumers are going to be really confused by the lack of being able to do all of the things they are used to on a Windows desktop.
  6. They should have put correction into their keyboard - Perhaps this is still coming, but with a non-traditional keyboard, it would have been much better to have automatic correction or prediction like Android has for the onscreen keyboards.
  7. Sign in problems - I can't believe I had to sign it messenger, games, office, system, store, videos, skydrive separately. There's no central account management or authentication mechanism. Each application requires independent connection to my Live account, including Office. In total I had to sign into my Live account 8 times.  What happens if I change my password?
  8. Stock Camera asked me for permssion to take pictures and video -  That made me laugh.

A lot of updates to get started

  1. 14 updates right away - I guess this is just launch day. These updates took almost a day to finish.
  2. The left side swipe navigation doesn't make sense - Why would I want to switch back and forth between two apps? My default behavior when task switching is to look for a list of running, available, or recent applications. I guess it's nice to have a gesture to go back one application, but you have to go THROUGH that interface to get to the list of appilications. Additionally, the only way to close an application is to pop open the task list, and then use the mouse to right click the icon.
  3. The multitasking seems really sweet - It's awesome being able to pull up evernote or an email on a portion of the screen while having a game or a website or an application open on the rest of the screen. I really wish android or iOS had that. Multitasking isn't user multitasking until you can do that. On Android it's impossible to receive an email asking about a meeting, pull out the calendar to check dates. With Surface this is now possible and easy on a tablet.

Awesome packaging and unboxing excitement!

  1. Packaging had really nice pull tabs - The packaging was really high quality, and every piece of tape had a pull tab for easy-opening. It was a very nice touch and a rare example of packaging done well. 
  2. I think my store crashed - I can't click o back or "install 14 updates". Had to reboot to get things going again.
  3. I love the kickstand - The build quality of the hardware on this device is unquestionable. The kickstand is easy to operate and makes the device really pleasant to use on a table with the keyboard.
  4. Weird HDMI incompatibilities - I connected the HDMI cable and then I lost left edge (task manager) capabilities. Had to go back to the smart menu,then desktop,then task manager,then switch in order to get back to evernote.
  5. Missing some polish - When apps launch (like email sign-in prompts) it doesn't put the focus where need it to go to start typing right away.I have to touch the screen or use the mouse to make sure the keyboard is in the right spot.
  6. Calendar and Contact integration is great - I added my Google accounts and everything synced quickly and easily.

A lot of whitespace on the keyboard

  1. The Soft Keyboard has a lot of whitespace - It's a little weird how much black / unused space there is on the touch keyboard. I typically love thumb-style tablet keyboards, but this one left me reaching for the hardware keyboard every time.
  2. Windows 8 email needs some work - I'm not a fan of the native email client on Windows 8 RT, and there are currently NO alternative native options. Gmail integration doesn't work very fast, and it doesn't suppot 2 factor authentication.

Not enough power to run a google search

Overall now that I'm almost a week into the Surface, I find myself pulling out my Nexus 7 or Galaxy Tab 10.1 with keyboard when I really need to get things done.  Whether it's missing a battery % indicator, or even just being able to see the time without touching the screen, the tiny details are adding up to a lot of frustration.  I've gotten better at the keyboard, and I think that as a hardware device, the Surface is a piece of art.

In my time with the Surface, I've also experienced several fatal application and OS-level crashes. I haven't seen the Windows RT blue screen of death, but I've had several times where the system would become unresponsive entirely, or where the visual system would become corrupted.

Windows 8 RT is going to be a confusing disaster for consumers. With all of the downsides of a new empty mobile platform, and none of the benefits of the Windows ecosystem, I predict Windows 8 RT is going to flop. Users will be happier with a traditional Windows 8 device (possibly with a touchscreen or ultrabook), or an Android or iOS tablet.



Nexus Q App Intended for Gingerbread (2.3) and Above

by Stephen Fluin 2012.07.23

The Nexus Q launched at Google I/O 2012 amid applause and confusion. Google is positioning this little device as the solution for "social streaming", a concept they are introducing that would theoretically allow anyone to visit your home, share their music and video collection with you, and then allow group control of the device throughout a gathering or party.

While the idea is sound, the execution is questionable. The device as-is today only works with Jelly Brean Android devices. As of July 2012, there are only 2 devices running Jelly Bean officially (Nexus 7 and the Galaxy Nexus). Second, the device only works with content streamed from YouTube or the Google Play store. This means that the applicability and usefulness of this device is extremely limited.

Nexus Q for Gingerbread

According to the Nexus Q guidebook (found on their website at [PDF]), the Q is intended to support everything back through Android 2.3.  While this is great to be stated in a guidebook, actual support for these devices has not been launched or scjeduled.  If Google wants to gain any traction with the Q beyond a grand experiment, they will need to prioritize this process.

The one thing that can be said in their defense, is that they haven't actually started shipping to consumers. The only devices out in the wild are those owned by 2012 Google I/O attendees, 100% of whom own Jelly Bean Devices. This is great, but for a social streaming device to work, not just the owner needs the app, but all of his / her friends as well.


Google IO 2012 Was Fun

by Stephen Fluin 2012.07.10

From June 27th - June 30th I was visiting the Moscone Center in San Francisco, California for Google IO. Google IO is the annual developer conference run by Google that focuses on its efforts with Android, Chrome, programming languages, maps, Google TV, and other products and services.  Overall the conference was one of the best events I have ever intended. There was a huge number of great people, both presenting and attending. Sitting among that group of people, hearing about some of the most cutting edge technology on the planet.

Key Announcements

Key announcements were made at the Day 1 and Day 2 keynotes. 

  • Android 4.1 Jelly Bean
  • Project Butter - A project to increase the speed and responsiveness of Android overall
    • Tripple buffering for parallel rendering
    • Synced entire OS to VSYNC
    • Prediction of touch events for more responsive touch prediction (predict where touch will be when screen refreshes)
  • New Home Screen - Widgets and apps move icons, auto resize for easier maintenance
  • Swiftkey-like native android keyboard
  • Offline and local speech recognition
  • Improved gallery for quick photo review
  • Filmstrip view within gallery
  • Android Beam - Send a photo or video by tapping phones together
  • Pair and connect with bluetooth devices by tapping.
  • Notifications (short and long versions, adding actions to notifications)
  • Search  - New UI, Voice Search, Google Now
  • Search results in card format
  • Google now - uses history, calendar, to figure out what you need and when
  • PDK - Platform Development Kit to help carriers and manufacturers stay up to date.
  • App encryption (in Jelly Bean)
  • Delta Android App Updates - Fast updates of android applications by only sending APK deltas
  • Android Push notifications evolving from C2DM into Google Cloud Messaging (Multicasting, payloads) free, no Quota
  • Purchasing video instead of just renting
  • TV episodes and series
  • New Hardware
    • Nexus 7 - 7 Inch Quad Core tablet for $200
    • Nexus Q - Streaming Media Server connected to Google Play

Attendee Giveaways

  1. Nexus 7
  2. Galaxy Nexus
  3. Nexus Q
  4. Chromebox

Additionally, each attendee got the opportunity to pre-order the $1500 Google Glass, launching to US-based IO attendees in early 2013. I signed up for these, as this is an extremely exciting leap in wearable technology.  This years giveaways were great. I have since switched to the Galaxy Nexus (From the T-Mobile Galaxy SII) as my daily driver, due to high quality of the hardware and the quality of Android 4.1, Jelly Bean.  Additionally, I have also started to carry around the Nexus 7 as my primary tablet and interface, rather than my Galaxy Tab 10.1.  The speed, thinness, and lightness of this device are shocking, and make this one of the best tablets in existence.


Microsoft Surface Gets The Basics Right

by Stephen Fluin 2012.06.18

Today Microsoft announced the Surface tablet. It's a relatively standard tablet with a 10.6 inch screen, but they are attempting to include greater computing power, a stand, and a new ultra-flat keyboard that is similar in size to Apple's smart cover.

There are really two things that tablets have thus far failed at, despite the best we have seen from Apple with the iPad and from Google with Android 3.x and 4.0.

The First Success - Tactile Keyboards

The first big win is the presence of a touchable keyboard on the new tablet. This is an absolute requriement for successful adoption of a computing platform. Half of what we do with a computer is highly repetetive, low-creativity data input. Human speech is faster than typing on a keyboard, but typing on a keyboard is still an order of magnitude faster and more accurate than typing on a touch screen. Human speech is pretty great on Android 4.0, but definitely won't replace typing in any meaningful way because of privacy concerns, as well as lower limits on sustained high-speed input. People aren't yet used to talking to their computers for 3 hours, but they are absolutely used to sitting at their keyboard for 3 hours.

I expected touchscreens with tactile keyboards to solve this problem, similar to some of the products announced at CES this year. Microsoft has gone a different way with building a tactile keyboard in the case. I should have expected this. Every day I carry around a Galaxy Tab 10.1 with a Logitech case that doubles as a keyboard. The keyboard makes the full tablet feel heavier than it needs to though, so Microsoft's solution is suprisingly elegant.

The Second Success - Multitasking

Android Screen Layout Mockup

The second success in Microsoft's Surface tablet comes with the Windows 8 capability for multitasking. Android is capable of running multiple tasks simultaneously for users, but offers no interface for showing two screens at the same time. This is an absolutely critical feature for tablets to take a spot in the long term computing world. Countless times, I've wanted to type or edit a document while looking at an email. This is completely impossible on Android or iOS. I have even resorted to taking a picture with my phone, or combining my phone and tablet to achieve this effect in desperate situations.

Although they have not yet proven this feature, and the word is that it will require developer support, being able to show multiple applications simultaneously will win this tablet a solid place in the world of computing. Android has a huge opportunity to take the lead here though, because their applications are already optimized
for multiple screen resolutions. Imagine the email app running on 70% of the screen, and then phone version of 4 square running in the remaining 30% space. If Google had the guts and the brains, they would have already done this with Jelly Bean, and my fingers are crossed.


Galaxy S II BlackEdition Troubles

by Stephen Fluin 2012.04.17

For the past week or so I have been running my SGS-T989 on the Ice Cream Sandwich rom called BlackEdition. This ROM takes the ICS hardware support from the Galaxy S II Skyrocket currently available on AT&T, and ports it back to our SGS II -T-Mobile. While it's very exciting to get access to ICS, the speed, the data monitor, and most of all, access to Chrome on my phone. There are still a few issues.

Media Scanner Issues

The media scanner in this kernel has some sort of major malfunction, as it will not stop scanning. What this means for me, is that the phone never goes into a proper sleep, and my battery just gets shredded to bits. As in, less than 6 hours from fully charged to dead. It also makes charging super-slow, so it's almost better to turn my phone off to charge.

Wifi Tether Issues

Initially when I went into the Android Settings to turn on the Wifi-Tether on which I have grown completiely reliant, the setting would not turn on. After experiementing and trying all of the different configuration options, I gave up. A few days later, I noticed that there was a configuration toggle in the top bar of the notification pull-down. I tried it out, and lo-and-behold, there was the Wifi-Tether that I had been hoping for so strongly. It now works great, although combined with the Media Scanner Issue, my battery can be shredded to bits in an hour or two.

ACore Issues

About once every 20 or so minutes of use, the android core process will stop, freezing my entire phone, and preventing any operation for about 8-9 seconds.  While not actually losing any work, or preventing me from being effective, it's very annoying.


Cross Platform Application Development For Linux and Android

by Stephen Fluin 2012.03.31

Upgrade Samsung Galaxy SII T-Mobile (SGS-T989) to Android 4.0.3 Ice Cream Sandwich

by Stephen Fluin 2012.03.29

In the past month or so, three new ICS ROMs have become available for the Samsung Galaxy SII for T-Mobile.  These ROMS have their own issues and problems, and I don't feel like any of them are ready as daily drivers yet.  

None of the ROMs worked "out of the box" for me, and I had to do some digging to get them to work.  Each one entered an infinite boot loop that I had to pull the battery to get out of.  Remember, if you want to boot into recovery, ensure the SGS2 is powered off, then hold volume up, volume down, and power until the Samsung logo appears.  The solution for these boot loops was to do a more thorough wipe than the standard Factory Reset. There is a special tool called DARKSIDE.SUPER.WIPE that will fully erase your system, cache, and data partitions. Make sure you do a full Nandroid backup before doing this, as this will definitely erase parts of your OS.

Here are my notes on each rom.


[ROM] [cwm]-ICS-4.0.3-Self-Kang

This ROM was the first ROM I tried. After getting it to boot successfully, I attempted to make a phone call and discovered that there were no APNs included with the ROM for T-Mobile. Not wanting to manually install APNs, this ROM was not for me.  I may come back to this one though, as it was the only pure Android ROM, without any TouchWiz, ruining the quality and asthetic of Ice Cream Sandwich.


MD5 Checksum


[ROM] Skyrocket ICS Port

This was the second ROM I tried. This ROM had no APNs either unfortunately. This meant that for me it was unsuitable as a daily driver.




Finally a ROM with APNs, but overall I am definitely not a fan of TouchWiz, and the continuing issues with autorotation and a general lack of polish across all of these ROMs prevented me from adopting it as a daily driver.




HexSLayer Release Updates

by Stephen Fluin 2012.03.15

HexSLayer recently launched a few new versions. In the Android Marketplace (Now known as Google Play), HexSLayer 1.0.19 was launched, and in the Amazon App Store, HexSLayer 1.0.20 was launched. These may be the last updates for a few weeks, as there has been a major update to the packing system I use, known has PyGame Subset for Andoir. Both of the published versions of HexSLayer use PyGame Subset for Android (PGSA) version 0.9.3. This has been a great framework for me, as I have been able to write applications and games in Python, and then launch them simultaneously on Windows, Mac, Linux, and Android.

With the latest update of PGSA to version 0.9.4, there has been a change to how the system packages applications. Before, the system would copy over the raw Python source files (or .py files), but now the tool packages only the optimized and compiled versions of Python applications (the .pyo file). This means that if you come from an earlier version on Android and upgrade, you will end up having both versions on your device.

The problem with this upgrade path is that it leaves both versions of the files on your device, and the Python subsystem by default runs the old version of the application. That means that there is new code on your device, your phone will always run the old code.  This has been the core issue preventing me from releasing HexSLayer 1.1.x.

I wrote to the author of PyGame Subset for Android, and discovered that he had a fix prepared that will allow me to continue using the old packaging method, while waiting for my users to upgrade to a version compatible with the new method.

As soon as PGSA 0.9.5 is release, I should be able to repackage and release the next set of features and bugfixes for HexSLayer.

Thanks for playing!